%20%E5%90%8E%EF%BC%8C%E5%BD%93%E6%88%91%E6%8C%89%E4%B8%8B%E5%AE%83%E6%97%B6%EF%BC%8C%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%BC%9A%E9%87%8D%E6%96%B0%E7%BB%91%E5%AE%9A%E3%80%82%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E9%80%A0%E6%88%90%E7%9A%84%EF%BC%9F.png)
有关背景信息,请参阅手动绑定和解绑驱动。
我可以在 Thinkpad 上解绑 Trackpoint 驱动程序:
$ cd /sys/bus/serio/drivers/psmouse/
$ ls -l
total 0
--w-------. 1 root root 4096 Dec 5 20:04 bind
-rw-r--r--. 1 root root 4096 Dec 5 19:19 bind_mode
-r--r--r--. 1 root root 4096 Dec 5 19:19 description
lrwxrwxrwx. 1 root root 0 Dec 5 19:19 module -> ../../../../module/psmouse
lrwxrwxrwx. 1 root root 0 Dec 5 19:19 serio1 -> ../../../../devices/platform/i8042/serio1
lrwxrwxrwx. 1 root root 0 Dec 5 20:14 serio2 -> ../../../../devices/platform/i8042/serio1/serio2
--w-------. 1 root root 4096 Dec 5 19:19 uevent
--w-------. 1 root root 4096 Dec 5 20:07 unbind
$ echo serio2 | sudo tee unbind
serio2
$ ls
bind bind_mode description module serio1 uevent unbind
单击或移动某个指点杆按钮后,指点杆再次开始工作。这是因为驱动程序再次被绑定:
$ ls
bind bind_mode description module serio1 serio2 uevent unbind
是什么原因导致司机再次被绑定?
- 内核:4.11.8-200.fc25.x86_64
- 操作系统:Fedora 工作站 25
- 硬件:Thinkpad X201
答案1
我怀疑这与 Linux 如何检测系统启动后插入的 PS/2 设备有关。 (“热插拔”)。
PS/2 端口是在不支持热插拔的时代设计的。例如,早期的 Microsoft Windows 不支持热插拔 PS/2 端口。
我怀疑没有热插拔信号,或者不能依赖它。因此 Linux 只能监听任何未绑定 PS/2 端口上的数据。当它接收到一些数据时,它必须重新探测端口。
至少这是一个很好的理论。但是,如果我在另一台笔记本电脑(Dell Latitude E5450)上取消绑定组合触摸板/轨迹点设备,则不会发生同样的情况。我必须再次手动绑定驱动程序;例如,当我按下按钮时,它不会神奇地再次开始工作。