触控板上的多点触控手势

我想知道如何在Ubuntu中配置多点触控手势。 在Windows中,我可以使用synaptics驱动程序软件来完成此操作。

我已经使用了synclient来配置水龙头,palmdetect,滚动等。但我也想要手势支持。 甚至可能吗?

系统信息:Ubuntu 12.10,Synaptics clickpad

更新9/15/2016多点触控开箱即用,下面列出的所有解决方案(mtrack,synclient,ginn,…)都会搞砸,所以如果你从需要它们的旧内核进行更新,请删除所有帮助应用程序,并使用触摸板ui为您的桌面管理器尝试开箱即用的内核行为。 它应该做你需要的,如果你想要更多的手势和东西,添加运作良好的easystroke。 它现在在库存内核输入驱动程序中排序,并且至少在内核4.1.32中运行没有问题,尽管早期的一些4.0内核不起作用。 当前的LTS内核4.4工作正常,4.7也是如此。

更新9/2015 … 3.14左右的内核现在内置了大部分多点触控,因此如果遇到问题请尝试卸载mtrack。 只是内置的多点触控驱动程序和easystroke自从内核3.14以来对我来说很好,尽管4.0及以上似乎有一个打破苹果触控板的回归。 3.18内核工作得很好。

有许多解决方案,其中大部分仍然有点半生不熟。 许多记录在案的都已过时,因此请务必查看谷歌的日期。

Ubuntu在鼠标/触摸板设置小程序中内置了基本手势(2指)支持。
我发现它随机乱出来,然后两个手指滚动会神秘地变成灰色,让我在长长的谷歌搜索链上让我回来。
然后我尝试了touchegg,有时候会工作。
它是最容易配置的,并且有很好的指令,但它基于旧问题的守护进程解决方案。
ubuntu多点触控howto(你必须谷歌它,因为我只能包含两个链接)已经过时了,但正在慢慢开始工作。 它提供了另一套补丁解决方案,但正在进行更新。

我目前使用的解决方案是mtrack (在repos中)与easystroke相结合(必须从源代码编译)。
如果我理解的话,Mtrack支持多点触控的内核版本,而不是像touchegg和ginn这样的临时解决方案,但是easystroke是另一种守护进程解决方案,现在在mtrack之上似乎运行良好。

Mtrack的方法似乎是发展方向。

卸载其他东西(ginn,touchegg),如果你使用它,然后从repos全名安装mtrack是xserver-xorg-input-mtrack

配置很痛苦,我没有用三根手指轻扫。 查看线程末尾的链接,了解人们的各种配置文件。 我使用的是一个苹果魔术触控板,它非常适合这种情况,尽管它有一个令人讨厌的小故障,例如双击并拖动移动窗口是不稳定的。 解决方法是使用实​​际按钮单击移动窗口,或者在移动窗口之前双击并按住之后犹豫不决。

我刚刚找到了easystroke ,直到mtrack得到一个gui你可能想尝试一下,如果你冒险尝试编译程序。

一旦通过运行make -j2编译并通过sudo make install ,使用easystroke -g启动它以获取GUI并转到Wiki页面获取指令。

您可能需要解决的另一个问题是驱动程序。

如果您使用mtrack ,则可能需要对文件重新编号,以便最后读取mtrack驱动程序或者synaptics设置将获取所有内容。

这些驱动程序存储在/usr/share/X11/xorg.conf.d中

mtrack驱动程序复制到/etc/X11/xorg.conf.d ,编辑该文件夹中的设置(请参阅链接的线程和自述文件,了解如何),如果可以(或使用easystroke ),请重命名该文件为更高的数字,所以50-mtrack.conf变为60-mtrack.conf ,否则我发现突触驱动程序会抓住你的触摸板一半的时间。

将文件放在/ etc中意味着它不会在/ usr文件等更新上被覆盖,并且它最后被读取,因此优先于/ usr中的默认驱动程序。

希望这可以帮助。 这是一个相当活跃的发展领域,所以无论我写的什么,可能会在一年内过时,希望更好。

我只是想建议使用我在github上提供的mtrack继续: https : //github.com/p2rkw/xf86-input-mtrack ,因为它支持3个手指拖动(自述文件底部的说明)。

我也将它与easystroke结合使用,但是我不得不修改easystroke以消除对绝对设备的一些限制,这个简单的改变(我不记得这样做的确切原因,对不起):

 diff --git a/handler.cc b/handler.cc index 8830ea2..c9e3f91 100644 --- a/handler.cc +++ b/handler.cc @@ -563,7 +563,7 @@ protected: } protected: void move_back() { - if (!prefs.move_back.get() || (xstate->current_dev && xstate->current_dev->absolute)) + if (!prefs.move_back.get()) return; XTestFakeMotionEvent(dpy, DefaultScreen(dpy), orig_x, orig_y, 0); } 

我还减少了手势的误差范围:

 diff --git a/gesture.cc b/gesture.cc index 8531c08..0df990e 100644 --- a/gesture.cc +++ b/gesture.cc @@ -104,9 +104,9 @@ int Stroke::compare(RStroke a, RStroke b, double &score) { return -1; score = MAX(1.0 - 2.5*cost, 0.0); if (a->timeout) - return score > 0.85; + return score > 0.95; else - return score > 0.7; + return score > 0.92; } 

……而且效果很好。

关于痛苦配置的附注:您可以使用xinput动态配置它,然后相应地编辑xorg.conf,或者使用xinput invocations创建启动脚本。