如何调试 usbmon 中存在的 X11 缺少鼠标 ButtonRelease 事件?

如何调试 usbmon 中存在的 X11 缺少鼠标 ButtonRelease 事件?

几天前,当我同时释放两个按钮时,我的鼠标按钮释放开始有时无法被识别。因此,一个按钮的逻辑状态卡在“按下”状态,导致恼人的意外操作,直到我再次按下它来重置它。

可以重现监控鼠标事件的问题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 事件。

相关内容