几天前,当我同时释放两个按钮时,我的鼠标按钮释放开始有时无法被识别。因此,一个按钮的逻辑状态卡在“按下”状态,导致恼人的意外操作,直到我再次按下它来重置它。
我可以重现监控鼠标事件的问题xev
(输出有时不显示预期的按键释放事件)。我不能通过监视事件来重现问题/sys/kernel/debug/usb/usbmon
(输出始终与实际情况一致)。
因此,故障显然出在 X11 以下但 USB 以上的某个抽象软件组件上。
可能是什么原因造成的?我怎样才能进一步缩小范围?
答案1
USB事件和X事件之间的级别是:
除非您的鼠标很特殊并且有自己的驱动程序,否则它很可能是 HID 设备。找到相应的
hidraw
设备(选中dmesg
),并验证您在那里获取事件。 USB 到 HID 的转换由内核完成。所有输入事件都通过输入层离开内核,相应的设备位于
/dev/input
.以 root身份运行evtest
,选择鼠标,看看是否收到事件。从 HID 事件到输入事件的转换由内核完成。X 自动加载所有输入设备的驱动程序,大多数情况下是
evdev
驱动程序。查看/var/log/Xorg.0.log
加载了哪些驱动程序。这些驱动程序将输入事件转换为 X 事件。