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

2015-04-12 07:14:21 +08:00
 quadpixels

嗯,前些日子购入了一枚 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

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

4007 次点击
所在节点    Ubuntu
4 条回复
donghouhe
2015-04-12 11:28:51 +08:00
佩服写驱动的大牛
quadpixels
2015-04-13 00:03:20 +08:00
@donghouhe 其实我不是写,我只是稍事修改 … 在这个驱动中最麻烦的部分基础部分,功能是从更低层的驱动读取硬件送来的信息并一边保持与 X 事件相关的一系列状态,比起那个来加上三指拖拽只是小菜啊...
zongren
2017-04-17 11:13:17 +08:00
能三指选择文本吗,大神
haiyang416
2018-01-02 17:09:00 +08:00
收藏了,目前很想需要这个功能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/183166

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX