不知道什么时候开始,Arch的触控板时好时坏。之前没管这事,但是这几天在床上用电脑实在难受,所以专门去查了查。
解决方案
先说说最后的解决方案:内核启动时会同时加载elan_i2c和i2c_hid这两个模块,而根据社区有位老哥说的,这两个模块会冲突,导致触摸板没有用。所以只要在/etc/modprobe.d/里面禁用掉elan_i2c模块就行了。
检查过程
开始我以为是Xorg输入驱动的问题,所以把默认的libinput换成了synaptics,发现问题还在。
$ sudo pacman -S xf86-input-synaptics
还不能排除Xorg的问题,然后我去掉了TouchPad的所有配置(/etc/X11/xorg.conf.d/30-touchpad.conf),问题依旧。
突然发现开机时手一旦触碰到触摸板,就会报错elan_i2c i2c-ELAN0501:00: invalid report id data,查看内核日志,的确在触摸板失效的时候就会报这个错。这时候确定问题不在Xorg上。接着就去谷歌了,发现上面的解决方案,暂时重启了好多遍都没问题。
总结一下用到的命令
- libinput。这个命令用来调试X或者Wayland里面使用libinput驱动的输入设备。
- xinput。这个命令用来配置和调试X的输入设备。xinput list可以列出所有支持的设备;xinput list-props
可以列出某个设备的配置信息,也能看到这个设备正在使用的驱动。这个命令可以检测到使用各种驱动的设备,无论有没有使用libinput。 - dmesg。查看内核日志。