von*_*den 5 linux usb keyboard
我最近从 QPAD 购买了 MK-85 机械 USB 键盘。键盘在 Windows 上运行完美。它在 Syslinux 中完美运行。它在 Linux 上几乎完美运行。Linux 上的唯一问题是单个密钥行为异常(Gentoo (3.6.11)、Arch Linux 和 Linux Mint (2.6.38) 都受到影响)。
键盘是一个 105 键的德语布局键盘,有问题的键是 Ä 和 ENTER 之间的键。在美国布局上,这对应于键\,在德国布局上,这对应#于斯堪的纳维亚布局,它是'.
当这个键与其他键一起按下时,它会为同时按下的每个其他键产生一个额外的按键。例如,在斯堪的纳维亚布局下,如果我想快速输入“不要”这个词,我最终会得到:不要''''
可以使用程序 showkeys 观察行为:
kb mode was UNICODE
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]
press any key (program terminates 10s after last keypress)...
keycode 28 release
keycode 32 press // d pressed
keycode 24 press // o pressed
keycode 49 press // n pressed
keycode 32 release // d released
keycode 43 press // ' pressed
keycode 24 release // o released
keycode 43 release // ' released
keycode 43 press // ' pressed, extra ' produced
keycode 49 release // n released
keycode 43 release // ' released
keycode 43 press // ' pressed, extra ' produced
keycode 20 press // t pressed
keycode 43 release // ' released
keycode 43 press // ' pressed, extra ' produced
keycode 20 release // t released
keycode 43 release // ' released
keycode 43 press // ' pressed, extra ' produced
keycode 43 release // ' released (REAL)
Run Code Online (Sandbox Code Playgroud)
无论键盘布局如何,它只会发生在这个单键上。它表现出来的另一种方式是,如果我按住一个键,它会重复,然后我按住另一个也应该开始重复的键:
aaaaaaaaaakkkkkkkkkkkkk (works as intended)
¨¨¨¨¨¨¨¨¨¨fffffffffffff (works as intended)
''''''''''a'''''''''''' (a is not repeated, instead ' continues)
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,此问题不存在:
OnKeyDown, Key code=68, Control keys=, Key name d
OnKeyPress d
OnKeyDown, Key code=79, Control keys=, Key name o
OnKeyPress o
OnKeyDown, Key code=78, Control keys=, Key name n
OnKeyPress n
OnKeyup, Key code=68, Control keys=, Key name d
OnKeyDown, Key code=191, Control keys=, Key name ........OEM specific
OnKeyPress '
OnKeyup, Key code=79, Control keys=, Key name o
OnKeyup, Key code=78, Control keys=, Key name n
OnKeyDown, Key code=84, Control keys=, Key name t
OnKeyPress t
OnKeyup, Key code=191, Control keys=, Key name ........OEM specific
OnKeyup, Key code=84, Control keys=, Key name t
Run Code Online (Sandbox Code Playgroud)
你怎么看SE?硬件问题?它在 Syslinux 中运行良好,这让我觉得 Linux 方面有问题。任何指针、想法或更好的调试方法?如果让它正常工作需要修补内核,我愿意。
我已经尝试为这个错误制作适当的补丁。这是内核的问题,而不是键盘的问题,尽管可以说键盘的行为方式很奇怪。无论如何,该补丁已提交到 linux-input 列表进行审查,但还没有任何评论。
这应该可以解决这里提到的 QPAD MK-85 的问题,但 Corsair K70、Gigabyte Osmium 和其他类似键盘也存在同样的问题。如果您的键盘存在该错误,那么您可以测试该补丁,那就太好了。如果您测试它,请告诉我它是否有效以及您拥有什么键盘,您使用的语言版本也很重要,美国和非美国键盘的行为会有所不同。请注意,美国键盘上的反斜杠键在其他版本的键盘上会有其他标签。
这是来自 linux-input 的带有补丁的邮件:
http://article.gmane.org/gmane.linux.kernel.input/37583