Skip to content

Commit 0321a74

Browse files
committed
Move the HID keyboard descriptor LED state
Seems to interfere with boot mode
1 parent 704d65b commit 0321a74

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

internal/usbgadget/hid_keyboard.go

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)