Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

USB_NKRO.txt 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. USB NKRO MEMO
  2. =============
  3. 2010/12/07
  4. References
  5. ----------
  6. USB - boot mode, NKRO, compatibility, etc...
  7. http://geekhack.org/showthread.php?t=13162
  8. NKey Rollover - Overview, Testing Methodology, and Results
  9. http://geekhack.org/showwiki.php?title=NKey+Rollover+-+Overview+Testing+Methodology+and+Results
  10. Terminogy
  11. ---------
  12. NKRO
  13. ghost
  14. matrix
  15. mechanical with diodes
  16. membrane
  17. OS Support Status
  18. -----------------
  19. NKRO is possible at least relatively new OS.
  20. Following OS supports both Extended and Bitmarp report.
  21. Windows7 64bit
  22. Windows2000 SP4
  23. Ubuntu 10.4(Linux 2.6)
  24. USB NKRO methods
  25. ----------------
  26. 1. Virtual keyboards
  27. Keyboard can increase its KRO by using virtual keyboards with Standard or Extended report.
  28. If the keyboard has 2 virtul keyboard with Standard report(6KRO), it gets 12KRO.
  29. Using this method means the keyboard is a composite device.
  30. 2. Exteded report
  31. It needs large report size for this method to achive NKRO.
  32. If a keyboard has 101keys, it needs 103byte report. It seems to be inefficient.
  33. 3. Bitmap report
  34. If the keyboard has less than 128keys, 16byte report will be enough for NKRO.
  35. The 16byte report seems to be reasonable cost to get NKRO.
  36. Report Format
  37. -------------
  38. Other report formats than followings are possible, though these format are typical one.
  39. 1. Standard 8bytes
  40. modifiers(bitmap) 1byte
  41. reserved 1byte(not used)
  42. keys(array) 1byte*6
  43. Standard report can send 6keys plus 8modifiers simultaneously.
  44. Standard report is used by most keyboards in the marketplace.
  45. Standard report is identical to boot protocol report.
  46. Standard report is hard to suffer from compatibility problems.
  47. 2. Extended standard 16,32,64bytes
  48. modifiers(bitmap) 1byte
  49. reserved 1byte(not used)
  50. keys(array) 1byte*(14,32,62)
  51. Extended report can send N-keys by using N+2bytes.
  52. Extended report is expected to be compatible with boot protocol.
  53. 3. Bitmap 16,32,64bytes
  54. keys(bitmap) (16,32)bytes
  55. Bitmap report can send at most 128keys by 16bytes and 256keys by 32bytes.
  56. Bitmap report can achieve USB NKRO efficiently in terms of report size.
  57. Bitmap report needs a deliberation for boot protocol implementation.
  58. Compatibility Problem
  59. ---------------------
  60. Some BIOS doesn't send SET_PROTCOL request, a keyboard can't switch to boot protocol mode.
  61. This may cuase a problem on a keyboard which uses other report than Standard.
  62. Windows Problem
  63. ---------------
  64. 1. Windows accepts only 6keys in case of Standard report.
  65. It should be able to send 6keys plus 8modifiers.
  66. 2. Windows accepts only 10keys in case of 16bytes Extended report.
  67. It should be able to send 14keys plus 8modifiers.
  68. 3. Windows accepts only 18keys in case of 32bytes Extended report.
  69. It should be able to send 30keys plus 8modifiers.
  70. If keys are pressed in excess of the number, wrong keys are registered on Windows.
  71. This problem will be reportedly fixed soon.(2010/12/05)
  72. http://forums.anandtech.com/showpost.php?p=30873364&postcount=17
  73. EOF