quadpixels
V2EX  ›  Ubuntu

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

By quadpixels at 2015 年 4 月 12 日 · 5290 次点击

嗯,前些日子购入了一枚 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 年 3 月 22 日
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 年 4 月 12 日 via Android
佩服写驱动的大牛
quadpixels
   2
quadpixels  
OP
   2015 年 4 月 13 日
@donghouhe 其实我不是写,我只是稍事修改 … 在这个驱动中最麻烦的部分基础部分,功能是从更低层的驱动读取硬件送来的信息并一边保持与 X 事件相关的一系列状态,比起那个来加上三指拖拽只是小菜啊...
zongren
   3
zongren  
   2017 年 4 月 17 日
能三指选择文本吗,大神
haiyang416
   4
haiyang416  
   2018 年 1 月 2 日
收藏了,目前很想需要这个功能。
© 2026 V2EX · 35ms · 3.9.8.5