键盘驱动程序如何在 Linux 上工作

键盘驱动程序如何在 Linux 上工作

我最近买了一个新键盘,它很便宜,而且是一个不知名的品牌,但我并不特别担心。我发现在linux上按使用此键盘进行 shift、super、left-ctrl 或 left-alt没有什么区别,它总是接受它作为转变。我做了一些研究,结果发现问题出在键盘使用的芯片组上。我读到解决问题的唯一方法是为键盘编写驱动程序,但是,在研究它时我发现运行须藤 modprobe usbmon进而打开wireshark作为sudo,出乎意料的是解决问题...有人知道为什么会发生这种情况吗?是否有更简单的方法来触发此更改?

更具体:

  • 我在 xubuntu 18.04
  • dmyco是键盘的品牌
  • lsusb 的结果是 >> Bus 001 Device 004: ID 1c4f:0056 SiGma Micro

答案1

在USB中,有两种适用于键盘的协议:主要的HID协议和键盘的简化“启动协议”。

将所有修饰键视为 Shift 键可能是由于系统最初使用简化的启动键盘协议(模块usbkbd)而不是主 HID 协议,再加上启动键盘协议支持在该特定键盘中可能实现不佳这一事实。但这只是一个疯狂的猜测。

显然,如果使用启动协议,您可能会USB HIDBP Keyboard 14cf:0056在输出中看到类似的消息。告诉你dmesg什么? sudo dmesg | grep HID(请将结果添加到您原来的问题中。)

Wireshark 还可以监控 USB 流量,启动 Wiresharksudo实际上可能会触发模块的加载usbmon。但该模块导致问题得到解决的事实usbmon很有趣......也许它会导致重新检测 USB 设备,因此全功能usbhid驱动程序模块将自己获取键盘,或者改变 USB 流量的时序就足够了无论什么原因导致该键盘“所有修饰符都是 Shift”的愚蠢现象都可以得到避免。

答案2

相关内容