aboutsummaryrefslogtreecommitdiffstats
path: root/USB_NKRO.txt
diff options
context:
space:
mode:
authorGravatar tmk <nobody@nowhere>2010-12-08 01:47:57 +0900
committerGravatar tmk <nobody@nowhere>2010-12-08 01:57:55 +0900
commit51f17f02317700e64b3c1113fe230d78bac7fecd (patch)
treea040a624004cd3cec2d2fd122069554a4039b8e1 /USB_NKRO.txt
parent66ece29b0e14534d57b680db47a5967d5264ca85 (diff)
downloadqmk_firmware-51f17f02317700e64b3c1113fe230d78bac7fecd.tar.gz
add build option: NKRO_ENABLE(remove: USB_12KRO)
Diffstat (limited to 'USB_NKRO.txt')
-rw-r--r--USB_NKRO.txt99
1 files changed, 99 insertions, 0 deletions
diff --git a/USB_NKRO.txt b/USB_NKRO.txt
new file mode 100644
index 000000000..9bd8f704c
--- /dev/null
+++ b/USB_NKRO.txt
@@ -0,0 +1,99 @@
+USB NKRO MEMO
+=============
+2010/12/07
+
+
+References
+----------
+USB - boot mode, NKRO, compatibility, etc...
+ http://geekhack.org/showthread.php?t=13162
+NKey Rollover - Overview, Testing Methodology, and Results
+ http://geekhack.org/showwiki.php?title=NKey+Rollover+-+Overview+Testing+Methodology+and+Results
+
+
+Terminogy
+---------
+NKRO
+ghost
+matrix
+mechanical with diodes
+membrane
+
+
+OS Support Status
+-----------------
+NKRO is possible at least relatively new OS.
+Following OS supports both Extended and Bitmarp report.
+ Windows7 64bit
+ Windows2000 SP4
+ Ubuntu 10.4(Linux 2.6)
+
+
+USB NKRO methods
+----------------
+1. Virtual keyboards
+ Keyboard can increase its KRO by using virtual keyboards with Standard or Extended report.
+ If the keyboard has 2 virtul keyboard with Standard report(6KRO), it gets 12KRO.
+ Using this method means the keyboard is a composite device.
+
+2. Exteded report
+ It needs large report size for this method to achive NKRO.
+ If a keyboard has 101keys, it needs 103byte report. It seems to be inefficient.
+
+3. Bitmap report
+ If the keyboard has less than 128keys, 16byte report will be enough for NKRO.
+ The 16byte report seems to be reasonable cost to get NKRO.
+
+
+Report Format
+-------------
+Other report formats than followings are possible, though these format are typical one.
+
+1. Standard 8bytes
+ modifiers(bitmap) 1byte
+ reserved 1byte(not used)
+ keys(array) 1byte*6
+Standard report can send 6keys plus 8modifiers simultaneously.
+Standard report is used by most keyboards in the marketplace.
+Standard report is identical to boot protocol report.
+Standard report is hard to suffer from compatibility problems.
+
+2. Extended standard 16,32,64bytes
+ modifiers(bitmap) 1byte
+ reserved 1byte(not used)
+ keys(array) 1byte*(14,32,62)
+Extended report can send N-keys by using N+2bytes.
+Extended report is expected to be compatible with boot protocol.
+
+3. Bitmap 16,32,64bytes
+ keys(bitmap) (16,32)bytes
+Bitmap report can send at most 128keys by 16bytes and 256keys by 32bytes.
+Bitmap report can achieve USB NKRO efficiently in terms of report size.
+Bitmap report needs a deliberation for boot protocol implementation.
+
+
+Compatibility Problem
+---------------------
+Some BIOS doesn't send SET_PROTCOL request, a keyboard can't switch to boot protocol mode.
+This may cuase a problem on a keyboard which uses other report than Standard.
+
+
+Windows Problem
+---------------
+1. Windows accepts only 6keys in case of Standard report.
+ It should be able to send 6keys plus 8modifiers.
+
+2. Windows accepts only 10keys in case of 16bytes Extended report.
+ It should be able to send 14keys plus 8modifiers.
+
+3. Windows accepts only 18keys in case of 32bytes Extended report.
+ It should be able to send 30keys plus 8modifiers.
+
+If keys are pressed in excess of the number, wrong keys are registered on Windows.
+
+
+This problem will be reportedly fixed soon.(2010/12/05)
+ http://forums.anandtech.com/showpost.php?p=30873364&postcount=17
+
+
+EOF