@@ -31,6 +31,8 @@ var keyboardReportDesc = []byte{
3131 0x05 , 0x01 , /* USAGE_PAGE (Generic Desktop) */
3232 0x09 , 0x06 , /* USAGE (Keyboard) */
3333 0xa1 , 0x01 , /* COLLECTION (Application) */
34+
35+ /* 8 modifier bits */
3436 0x05 , 0x07 , /* USAGE_PAGE (Keyboard) */
3537 0x19 , 0xe0 , /* USAGE_MINIMUM (Keyboard LeftControl) */
3638 0x29 , 0xe7 , /* USAGE_MAXIMUM (Keyboard Right GUI) */
@@ -39,27 +41,47 @@ var keyboardReportDesc = []byte{
3941 0x75 , 0x01 , /* REPORT_SIZE (1) */
4042 0x95 , 0x08 , /* REPORT_COUNT (8) */
4143 0x81 , 0x02 , /* INPUT (Data,Var,Abs) */
44+
45+ /* 8 bits of padding */
4246 0x95 , 0x01 , /* REPORT_COUNT (1) */
4347 0x75 , 0x08 , /* REPORT_SIZE (8) */
4448 0x81 , 0x03 , /* INPUT (Cnst,Var,Abs) */
45- 0x95 , 0x05 , /* REPORT_COUNT (5) */
46- 0x75 , 0x01 , /* REPORT_SIZE (1) */
4749
48- 0x05 , 0x08 , /* USAGE_PAGE (LEDs) */
49- 0x19 , 0x01 , /* USAGE_MINIMUM (Num Lock) */
50- 0x29 , 0x05 , /* USAGE_MAXIMUM (Kana) */
51- 0x91 , 0x02 , /* OUTPUT (Data,Var,Abs) */
52- 0x95 , 0x01 , /* REPORT_COUNT (1) */
53- 0x75 , 0x03 , /* REPORT_SIZE (3) */
54- 0x91 , 0x03 , /* OUTPUT (Cnst,Var,Abs) */
50+ /* 6 key codes for the 104 key keyboard */
5551 0x95 , 0x06 , /* REPORT_COUNT (6) */
5652 0x75 , 0x08 , /* REPORT_SIZE (8) */
5753 0x15 , 0x00 , /* LOGICAL_MINIMUM (0) */
58- 0x25 , 104 , /* LOGICAL_MAXIMUM (104-key) */
54+ 0x25 , 0xE7 , /* LOGICAL_MAXIMUM (104-key HID) */
5955 0x05 , 0x07 , /* USAGE_PAGE (Keyboard) */
6056 0x19 , 0x00 , /* USAGE_MINIMUM (Reserved) */
6157 0x29 , 0xE7 , /* USAGE_MAXIMUM (Keyboard Right GUI) */
6258 0x81 , 0x00 , /* INPUT (Data,Ary,Abs) */
59+
60+ /* LED report 5 bits for Num Lock through Kana */
61+ 0x95 , 0x05 , /* REPORT_COUNT (5) */
62+ 0x75 , 0x01 , /* REPORT_SIZE (1) */
63+ 0x05 , 0x08 , /* USAGE_PAGE (LEDs) */
64+ 0x19 , 0x01 , /* USAGE_MINIMUM (Num Lock) */
65+ 0x29 , 0x05 , /* USAGE_MAXIMUM (Kana) */
66+ 0x91 , 0x02 , /* OUTPUT (Data,Var,Abs) */
67+
68+ /* 1 bit of padding for the Power LED (ignored) */
69+ 0x95 , 0x01 , /* REPORT_COUNT (1) */
70+ 0x75 , 0x03 , /* REPORT_SIZE (1) */
71+ 0x91 , 0x03 , /* OUTPUT (Cnst,Var,Abs) */
72+
73+ /* LED report 1 bit for Shift */
74+ 0x95 , 0x01 , /* REPORT_COUNT (1) */
75+ 0x75 , 0x01 , /* REPORT_SIZE (1) */
76+ 0x05 , 0x08 , /* USAGE_PAGE (LEDs) */
77+ 0x19 , 0x07 , /* USAGE_MINIMUM (Shift) */
78+ 0x29 , 0x07 , /* USAGE_MAXIMUM (Shift) */
79+ 0x91 , 0x02 , /* OUTPUT (Data,Var,Abs) */
80+
81+ /* 1 bit of padding for the rest of the byte */
82+ 0x95 , 0x01 , /* REPORT_COUNT (1) */
83+ 0x75 , 0x03 , /* REPORT_SIZE (1) */
84+ 0x91 , 0x03 , /* OUTPUT (Cnst,Var,Abs) */
6385 0xc0 , /* END_COLLECTION */
6486}
6587
0 commit comments