我的 Elantech 触摸板有一个恼人的问题至少半年了。大多数时候它会随机失去同步并被识别为PS/2 Elantech 触摸板或者比亚迪触摸板。它因更新而异,但本质上这些错误仍然存在dmesg
:
psmouse serio1: Failed to enable mouse on isa0060/serio1
psmouse serio1: elantech: synaptics_send_cmd query 0x01 failed.
psmouse serio1: Failed to enable mouse on isa0060/serio1
input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input19
在正确检测到触摸板的情况下,它仍然工作得很差,幸运的是多点触摸、点击、两指滚动,并且存在某种校准问题(只有触摸板的中心有响应,而其他区域忽略任何输入)。dmesg
对于这个场景看起来像这样:
psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x595f03)
psmouse serio1: elantech: Synaptics capabilities query result 0x10, 0x15, 0x0e.
psmouse serio1: elantech: Elan sample query result 04, 02, 86
input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input2
在系统正常运行期间,它随机开始对我的输入点击和随机方向移动做出随机反应。
我现在使用 Arch Linux,但 Ubuntu 16.04 和 14.04 上也存在该问题。
从Arch Linux 维基页面Lenovo Y700 有一条注释,为了使触摸板工作pata_legacy
模块应该完全列入黑名单,所以我将其添加到我的内核引导加载程序配置中:
options: ... modprobe.blacklist=pata_legacy ...
lsmod
不显示pata_legacy
已加载,因此黑名单有效。但由于触摸板问题仍然存在,这没有任何帮助。
我正在使用libinput
并且有一段时间没有更改我的配置(并且在触摸板感觉良好的时间范围内它可以完美地工作):
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "Tapping" "True"
Option "DisableWhileTyping" "True"
Option "NaturalScrolling" "True"
Option "MiddleEmulation" "True"
EndSection
我相信这个问题以某种方式与内核有关,但我不喜欢低级的东西,所以我无法让它自己工作。
强烈欢迎任何帮助、文档参考、调试技巧等,因为我不介意自己修复它,但我不知道从哪里开始(以及在哪里查找)。
$ uname -r
4.10.13-1-ARCH
答案1
我有完全相同的烦人问题。因为我没有找到任何解决方案,所以我使用这个简单的 bash 脚本作为解决方法
#!/usr/bin/bash
while [[ $(dmesg | tail -n 3 | grep ETPS) == "" ]]
do
sudo modprobe --remove psmouse
sudo modprobe psmouse
sleep 3
done
notify-send "Touchback" "Your touchpad is back ready to use"
exit
当然,最好将您的sudoers
两个命令配置为不要求输入密码。