Touchégg: Linux 上触摸板/屏的多指手势

By -

笔者之前体验过Mac OS X上的触摸板,对触摸板的工作区切换手势可谓印象深刻。而笔者所使用的笔记本搭载了支持5只手指的触摸板,因此很希望能够在此之上实现3只手指以上的手势识别和交互。

这样,一款叫 Touchégg 的软件进入了笔者视野,利用这款软件,笔者在 Linux 桌面环境上实现了接近 Mac OS X 上的工作区切换手势。

安装

笔者使用的是 Debian,其他发行版可依此参考。

安装依赖:
$ sudo apt-get install build-essential libqt4-dev libgeis-dev libx11-6 libxtst-dev
下载源代码:
$ git clone https://github.com/JoseExposito/touchegg
编译:
$ cd touchegg
$ qmake
$ make

安装:
$ sudo make install

运行

直接执行 touchegg 即可(也可以根据需要配置开机自动运行,参考 ArchWiki

配置

用户的配置文件位于 ~/.config/touchegg/touchegg.conf,这是一个类似XML的配置文件,我们可以参考已有的配置进行设置。(也有一个图形化配置工具

Touchégg 支持对不同的应用程序采用不同的配置,这通过 application 元素进行区分。

在 application 中配置需要识别的手势,即 gesture 元素,gesture 支持以下手势:

轻触 在触摸板/屏上用1到5根手指进行点击
配置文件的写法:TAP
可用方向选项:无
移动 用1到5根手指在触摸板/屏上移动
配置文件的写法:DRAG
可用方向选项:up/down/left/right
捏合 用2到5根手指在触摸板/屏上捏合或松开
配置文件写法:PINCH
可用方向选项:in/out
旋转 用2到5根手指在触摸板/屏上旋转
配置文件写法:ROTATE
可用方向选项:left/right
拖动 在触摸板/屏上用1到5根手指轻触再移动
配置文件写法:TAP_AND_HOLD
可用方向选项:up/down/left/right
双击 用1到5跟手指双击
配置文件写法:DOUBLE_TAP
可用方向选项:无

之后再配置每个 gesture 对应的 action:

写法 选项 说明
MOUSE_CLICK BUTTON=1..9 模拟鼠标点击
1 – 左键
2 – 中键
3 – 右键
8 – 后退
9 – 前进
DRAG_AND_DROP BUTTON=1..3 用相应的鼠标按键拖动
SCROLL SPEED=1..10
INVERTED=true/false
模拟垂直滚动,SPEED越大速度越快
I
NVERTED 表示反向滚动
SEND_KEYS Key1+Key2+KeyN 模拟组合键具体按键可在 /usr/include/X11/keysymdef.h 中查询(去掉 “XK_”)
MINIMIZE_WINDOW 最小化窗口
MAXIMIZE_
RESTORE_WINDOW
最大化或还原窗口
CLOSE_WINDOW 关闭窗口
RESIZE_WINDOW 调整窗口大小,一般与捏合手势搭配
MOVE_WINDOW 移动窗口
SHOW_DESKTOP 第一次显示桌面,第二次恢复窗口
CHANGE_DESKTOP NEXT/PREVIOUS 切换到前一个或后一个桌面
CHANGE_VIEWPORT NEXT/PREVIOUS Changes to the next or previous viewport
RUN_COMMAND 需要运行的命令 运行命令

笔者使用的手势参考:
<application name="All">
<gesture type="DRAG" fingers="4" direction="LEFT">
<action type="CHANGE_DESKTOP">NEXT</action>
</gesture>
<gesture type="DRAG" fingers="4" direction="RIGHT">
<action type="CHANGE_DESKTOP">PREVIOUS</action>
</gesture>
</application>

此外,笔者对代码进行了修改,在切换工作区时不允许无限滚动。
GitHub: https://github.com/Eventide/touchegg

参考:

  1. GitHub Wiki
  2. ArchWiki

本文系原创,转载请注明出处: http://www.linuxstory.org/multitouch-gesture-on-linux/

Eventide

发表评论

电子邮件地址不会被公开。