-
Notifications
You must be signed in to change notification settings - Fork 1.7k
USB: NKRO
This is really good writeup of this issue and the commit fixed it at Dec 29, 2014. Current Linux(4.0 and up ?) doesn't have this issue.
https://github.com/torvalds/linux/commit/6ce901eb61aa30ba8565c62049ee80c90728ef14 https://github.com/torvalds/linux/commit/8e7b341037db1835ee6eea64663013cbfcf33575#diff-f35f6b78ead6796aeaf38a7414178d43
HID usage Backslash(0x31) and Non-US Hash(0x32) are translated into one Linux internal keycode(43) in Linux kernel, also Delete(0x4C), Clear(0x9C) and Keypad Clear(0xD8) are translated into one keycode(111). Those keys can't be distinguished each other on Linux input system by design(not bug), this fact itself is not problem. The problem is Linux cannot handle event of those keys in NKRO report correctly.
https://github.com/tmk/tmk_keyboard/issues/117#issuecomment-51674009
Some keyboard firmwares like Soarer's, kiibohd and keyboardio use tricky keyboard report to work around this problem.
Soarer's Converter USB Descriptor
The trick removes the 'Non-US Hash' and 'Clear' from its report to prevent Linux bug, but this can cause new issue.
https://github.com/keyboardio/Kaleidoscope/issues/273
As for TMK just use 6KRO if you have this problem with NKRO.
Windows had weird problem with custom keyboard report other than boot keyboard(6KRO) report.
It seems Microsoft fixed it and Windows has no problem with NKRO report as of today.(2017/12/31)
The good news is that we reported the bug, and it has been identified and corrected, and the fix should be available in a future Windows update. - Dec 5, 2010
http://forums.anandtech.com/showpost.php?p=30873364&postcount=17
https://gist.github.com/tmk/7d41f0ca49a21a6c0b2f910d43e9660d