V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
quadpixels
V2EX  ›  Ubuntu

修改 synaptics 驱动,给 Xubuntu 中的 Magic Trackpad 加上三指拖拽功能

  •  
  •   quadpixels · 2015-04-12 07:14:21 +08:00 · 4187 次点击
    这是一个创建于 3511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    嗯,前些日子购入了一枚 Magic Trackpad 给俺的运行 Xubuntu 的电脑用。
    (用 Xubuntu 无别的原因,只是因为习惯了,另外也是干活的需要,另外也是因为其较低的性能需求能让俺的 2008 年产的电脑再战五年。)

    装好以后发现默认的驱动程序不支持三个手指拖拽功能。
    三指拖拽功能在苹果机上的标配,很好用。一模一样的硬件在苹果机上有三指拖拽在Linux上没有,那肯定就是驱动程序的问题。

    试了 touchegg 和 ginn,发现它们只支持手势 —— 是那种在手势做完之前,指针都会停在原地不动的手势,感觉自然也不是很顺溜,能实现的功能及手感与三指拖拽相比自然相去绝远。
    也试过了 xf86-input-mtouch 等其它驱动,也不支持三指拖拽,除此之外对于基本功能的支持貌似也不及 xf86-input-synaptics 。

    于是歪打误撞,打开了 xf86-input-synaptics 的源程序。我对 Linux 的驱动结构不了解,不过可能是运气好,源程序其实为实现三指拖拽准备好了所有所需的函数、成员和功能。只需在状态转换时多加几条分支即可初步达成想要的效果,到后面再仔细调试改善会更好一些。

    其实细看,要是把 xf86-input-synaptics 整个砍掉重写一遍能达成苹果机的那种手感也说不定。(说远了,俺最近肯定没精力做的说…)

    我觉得这个修改应该也能让其它多点触摸的触摸板支持三指拖拽,比如 T650 和新的各种带触摸的 Wacom 的板子。

    简单介绍目前效果的视频:
    http://v.youku.com/v_show/id_XOTMyMDA4NDYw.html

    改得很烂的 code 在这里,好奇者可以试试看 … (因为是 Xubuntu 14.04,所以 xf86-input-synaptics 的版本用的是与自带的相同的 1.7.4,不是最新的):
    https://github.com/quadpixels/three-finger-dragging

    估计最近一阵子俺会折腾这个直到俺自己满意为止……

    第 1 条附言  ·  2017-03-22 14:05:55 +08:00
    2017-03-21 更新

    最近更新了一下,在 Xubuntu 16.04 中测试了一下,修正了一些问题(主要是 拖拽锁定、三指触摸作为中键使用的问题。)自我感觉好用了一些。以及把对应的 xf86-input-synaptics 的版本升级到 1.9.0 了。
    4 条回复    2018-01-02 17:09:00 +08:00
    donghouhe
        1
    donghouhe  
       2015-04-12 11:28:51 +08:00 via Android
    佩服写驱动的大牛
    quadpixels
        2
    quadpixels  
    OP
       2015-04-13 00:03:20 +08:00
    @donghouhe 其实我不是写,我只是稍事修改 … 在这个驱动中最麻烦的部分基础部分,功能是从更低层的驱动读取硬件送来的信息并一边保持与 X 事件相关的一系列状态,比起那个来加上三指拖拽只是小菜啊...
    zongren
        3
    zongren  
       2017-04-17 11:13:17 +08:00
    能三指选择文本吗,大神
    haiyang416
        4
    haiyang416  
       2018-01-02 17:09:00 +08:00
    收藏了,目前很想需要这个功能。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2471 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.