用惯了Macbook还是非常羡慕Apple家的触摸板的,虽然win和Linux下触控板的能力确实比Apple家差远了,但并不妨碍我们给ArchLinux增加一下触摸板手势吧,毕竟只能单双击实在是太不爽了。

安装

安装libinput和xf86-input-libinput,需要开启yaourt并把当前用户加入到input组。

1
2
sudo gpasswd -a $USER input
sudo pacman -S libinput xf86-input-libinput

基础配置

通常安装后默认的配置文件在/usr/share/X11/xorg.conf.d/目录下,查看可以看到多个驱动:

1
2
3
4
5
6
cd usr/share/X11/xorg.conf.d/
ll
total 12K
-rw-r--r-- 1 root root 1.4K Oct 25 16:42 10-quirks.conf
-rw-r--r-- 1 root root 945 Oct 16 14:56 40-libinput.conf
-rw-r--r-- 1 root root 1.8K Jun 3 10:10 70-synaptics.conf

这里驱动文件夹前面的数字指的是优先级,优先使用数字较大的驱动,可以看到libinput的是40。

然后我们需要把默认配置文件拷贝到/etc/X11/xorg.conf.d/中:

1
sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf

修改配置文件中的touchpad部分,注意每个硬件可能显示的型号不一样

1
2
3
4
5
6
7
8
9
10
11
Section "InputClass"
Identifier "touchpad"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "Tapping" "on"
Option "ButtonMapping" "1 3 0 4 5 6 7"
Option "TappingButtonMap" "lrm"
Option "DisableWhileTyping" "on"
Option "TappingDrag" "on"
EndSection

这个文件的配置说明可以在libinput man page: based on X.Org input dirver中查到。

直接使用上述配置文件时的效果是单指=左键,双指=右键,三指=中键。

调试

要实现进一步的自定义手势,首先需要捕获触控板的操作事件,第一步:

扫描一下设备列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Synaptics TM3242-001 id=11 [slave pointer (2)]
⎜ ↳ PixArt UT220 300 USB Optical Mouse id=9 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Intel HID events id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ XiaoMi USB 2.0 Webcam: XiaoMi U id=10 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]

找到你的触控板后查看其详细配置:

1
xinput list-props "你的触控板设备名字"

在输出信息中记下Device Node后面的event数值,比如event7,这个就是我们要捕获的操作了。

输入libinput debug-gui --device /dev/input/event7会出现一个图形化的操作检测界面,来确定你的触摸板能不能检测到你的操作。如果一切顺利应该是没有问题的。

添加自定义手势

要执行自定义手势你还需要自定义按键,sudo pacman -S xdotool

libinput-gestures安装后会有默认的配置,位置在/etc/libinput-gestures.conf,用户可以在~/.config/libinput-gestures.conf配置自己的配置。

1
nano ~/.config/libinput-gestures.conf

下面提供一下我自己的配置文件:

1
2
3
4
5
6
# 四指滑动=左右切换工作区
gesture swipe right 4 xdotool key alt+ctrl+Right
gesture swipe left 4 xdotool key alt+ctrl+Left

gesture pinch in 2 xdotool key ctrl+minus # 2指捏: 缩小
gesture pinch out 2 xdotool key ctrl+plus # 2指张: 放大

执行libinput-gestures-setup start来启动手势支持
执行libinput-gestures-setup autostart来添加服务自启动

关于xdotool的更多用法请参见xdotool的Github主页