我们都知道 macOS 下的触控板体验非常好,而 Windows 下的触控板体验最近几年靠着厂商的跟进和 Windows Precision Drivers 也进步了不少。其实在 Linux 的 Xorg 下想要达到类似的体验也非常简单。
Xorg 下经常用到的触控板驱动有 Synaptics(已停止维护)、libinput 和 mtrack。这篇文章将会用 libinput 来优化改善触控板的按键、加速和手势设置。
所需软件包
首先需要的肯定是驱动本体,libinput 在各个发行版的官方仓库里都有打包,可以直接安装。
实现触控板手势需要 libinput-gestures,直接编译安装, Arch 系可以直接用 AUR 安装。
(可选)可以安装 libinput-gestures 的 GUI 前端 gestures 用来设置 libinput-gestures,但我认为实在没有必要,因为配置文件改起来也不难。
触控板加速与按键设置
首先查看 /etc/X11/xorg.conf.d/
下有没有已有的触控板配置文件,具体是看 Section 中是否有 Identifier "touchpad"
。如果有就把这个 Section 删掉(最好先备份以防出问题)。 新建一个配置文件,优先级与文件名随意,如 20-touchpad.conf
,内容如下:
Section "InputClass"
# 限定此配置文件只适用于触控板
Identifier "touchpad"
MatchIsTouchpad "on"
# 设定驱动为 libinput
Driver "libinput"
# 在后面插入具体配置
# ...
EndSection
之后在文件中填入需要的配置。
灵敏度与鼠标加速
# 使用预设的触控板加速配置 2
Option "AccelerationProfile" "2"
# 设置灵敏度为 0.05
Option "Sensitivity" "0.05"
如果用起来不顺手,你可以尝试调整 "Sensitivity"
的值,毕竟每个触控板的大小和素质都不同。
轻触即点击
默认情况下 Xorg 不会将“轻点触控板”识别为点击,想要开启轻触即点击,加入:
Option "Tapping" "on"
修改单指、双指、三指对应的左、中、右键
默认情况下 Xorg 会将单指视为左键、双指视为中键、三指视为右键,需要修改可以加入:
Option "TappingButtonMap" "lrm"
值中的 l
是 Left,r
是 Right,m
是 Mid,顺序为单、双、三指。
反转触控板滚动的方向
默认情况下 Xorg 的触控板滚动方向与 Windows 和 macOS 相反,觉得别扭可以开启“自然滚动”:
Option "NaturalScrolling" "on"
最终,我的配置文件 20-touchpad.conf
的内容是:
Section "InputClass"
Identifier "touchpad"
MatchIsTouchpad "on"
Driver "libinput"
Option "AccelerationProfile" "2"
Option "Sensitivity" "0.05"
Option "Tapping" "on"
Option "TappingButtonMap" "lrm"
Option "NaturalScrolling" "on"
EndSection
触控板手势
触控板手势最好配合WM的快捷键使用,例如将四指左右扫动绑定为 Ctrl+Right/Left,同时将 WM 的工作区切换也设置为同样的快捷键。 修改 libinput-gestures 的配置文件,/etc/libinput-gestures.conf
或是 ~/.config/libinput-gestures.conf
。
我的 libinput-gestures.conf
:
# 识别阈值
swipe_threshold 0
# 切换工作区
gesture swipe left 4 xdotool key Ctrl+Right
gesture swipe right 4 xdotool key Ctrl+Left
# 切换窗口
gesture swipe left 3 xdotool key Alt+Right
gesture swipe right 3 xdotool key Alt+Left
# 显示/隐藏所有窗口
gesture swipe down 4 xdotool key Super+a
# 放大与缩小
gesture pinch in 2 xdotool key Ctrl+minus
gesture pinch out 2 xdotool key Ctrl+plus
最后启动 libinput-gestures,手势就会生效。
开关触控板
在不用触控板时可以将其关掉。利用 xinput enable/disable TOUCHPAD_ID
可以开关触控板。
可以写一个脚本,执行就会开关触控板:
#!/bin/bash
TOUCHPAD_ID=`xinput list | grep "Touchpad" | sed -n -e 's/^.*id=//p'|cut -f1`
if xinput list $TOUCHPAD_ID | grep -q 'This device is disabled'; then
xinput enable $TOUCHPAD_ID
else
xinput disable $TOUCHPAD_ID
fi
再绑定一个键盘快捷键,就可以轻松开关触控板了。 需要注意,这个脚本不会停止 libinput-gestures 识别触控板手势,如果要把手势同时禁用掉,就在脚本里分别加入启动、停止 libinput-gestures 的命令即可。