我最近买了一个新键盘,它很便宜,而且是一个不知名的品牌,但我并不特别担心。我发现在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
(我本来可以将此作为评论,但它是不可读的。)
既然你还没有任何答案,我至少可以给你一些可能有帮助的阅读材料:
这里有大量与修改键盘有关的内容。忽略“撰写”内容:
- https://help.ubuntu.com/community/ComposeKey
- http://en.wikipedia.org/wiki/Compose_key
- http://fsymbols.com/keyboard/linux/compose/
- https://cyberborean.wordpress.com/2008/01/06/compose-key-magic/
- https://www.linux.com/learn/tutorials/769644-hacking-your-linux-keyboard-with-xkb
- https://help.ubuntu.com/community/Custom%20keyboard%20layout%20definitions
- https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg
- https://wiki.archlinux.org/index.php/Xorg#Configuration