linux触摸板需被libinput识别才能启用双指滑动和轻触点击;先确认设备识别、启用tap-to-click与两指滚动、清除synaptics残留,再配置高级手势。

确认触摸板被识别为 libinput 设备
Linux 下双指滑动和轻触点击能否启用,第一关是底层驱动是否正确加载。现代发行版(Ubuntu 22.04+、Fedora 36+、Arch 默认等)基本都用 libinput 而非老旧的 synaptics;如果系统仍在用 synaptics,双指滚动可能勉强可用,但轻触点击(tap-to-click)常不稳定或根本无效。
执行以下命令确认:
ls /dev/input/by-path/ | grep -i touchpad libinput list-devices | grep -A10 "Touchpad"
若输出中含 libinput 且设备类型明确标为 Touchpad,说明基础识别正常;若只看到 psmouse 或无任何输出,需先解决硬件识别问题。
- 检查内核是否加载了正确模块:
lsmod | grep -E "(i2c_hid|hid_multitouch|libinput)" - 若
libinput未列出来,但i2c_hid或hid_multitouch已加载,通常没问题;若全无,尝试手动加载:sudo modprobe libinput - 某些 OEM(如联想 Yoga、戴尔 XPS)需 BIOS 中启用 “Advanced Touchpad Mode” 才能被识别为完整多点设备
启用 tap-to-click 和两指滚动(libinput 原生配置)
libinput 默认禁用轻触点击(tap-to-click),也默认关闭两指垂直滚动——这不是 bug,是安全策略。必须显式开启,且不能靠 GUI 设置(GNOME/KDE 的设置面板有时会覆盖或失效)。
最可靠方式是通过 gsettings(GNOME 及兼容桌面)或直接写入 X11/Wayland 配置:
- GNOME / Ubuntu Desktop:
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true和gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false(后者可选,避免反向滚动) - 纯 X11 环境(如 XFCE、LXQt):在
/etc/X11/xorg.conf.d/40-libinput.conf的InputClass段中添加:Option "Tapping" "on"Option "NaturalScrolling" "off"Option "VertTwoFingerScroll" "on" - Wayland 用户(Sway、Hyprland 等):需在 compositor 配置中设置,例如 Sway:
input type:touchpad tap enabled和scroll_method 'two_finger'
改完后重启显示服务器(loginctl terminate-session $XDG_SESSION_ID 或直接登出重进),不要只重启服务。
常见失效原因:synaptics 驱动残留或冲突
如果你装过 xserver-xorg-input-synaptics,哪怕没主动启用,它也可能抢占设备节点,导致 libinput 完全不接管触摸板——此时 libinput list-devices 会完全看不到 Touchpad,或显示为 pointer 而非 touchpad。
验证方法:grep -r "synaptics" /usr/share/X11/xorg.conf.d/ /etc/X11/xorg.conf.d/。若发现 50-synaptics.conf 或类似文件,立即重命名或删除。
- 卸载 synaptics 包:
sudo apt remove xserver-xorg-input-synaptics(Debian/Ubuntu)或sudo pacman -R xf86-input-synaptics(Arch) - 确保
libinput是唯一启用的驱动:grep -r "Driver.*libinput\|driver.*libinput" /etc/X11/xorg.conf.d/应有匹配 - 重启后运行
libinput debug-events,手指在触摸板上操作,观察终端是否实时打印EVENT TOUCHPAD_TAP或EVENT GESTURE_SCROLL—— 这是真正生效的证据
fusuma 或 libinput-gestures 补充三/四指手势
原生 libinput 只支持双指滚动和单/双/三指 tap,不支持三指滑动切换工作区、四指呼出概览等 macOS/Windows 风格操作。这时需要用户态手势守护进程。
fusuma(Ruby)和 libinput-gestures(Python)是主流选择,二者原理相同:监听 libinput events,匹配手势后执行 shell 命令(如 xdotool key super)。
- 安装
libinput-gestures(推荐,更轻量):sudo apt install libinput-tools+pip3 install libinput-gestures - 启用服务:
libinput-gestures-setup start并libinput-gestures-setup autostart - 配置文件
~/.config/libinput-gestures.conf示例:gesture swipe up 3 xdotool key supergesture pinch in 2 xdotool keydown ctrl click 4 keyup ctrl - 注意:必须确保
libinput debug-events能捕获到多指事件,否则 fusuma 类工具完全收不到输入
真正卡住的地方往往不是“怎么配”,而是前面三步没走通:设备没被 libinput 接管、tap 和 two-finger scroll 没开、synaptics 残留干扰。把这三层理清,后续手势只是加几行配置的事。











