Skip to content

Commit 092dbd7

Browse files
committed
clean up and reorder the USB HID descriptors. No functional changes
1 parent 9ba38e7 commit 092dbd7

File tree

1 file changed

+104
-103
lines changed
  • hardware/arduino/avr/cores/arduino

1 file changed

+104
-103
lines changed

hardware/arduino/avr/cores/arduino/HID.cpp

Lines changed: 104 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,54 @@ Keyboard_ Keyboard;
4545
#define RAWHID_TX_SIZE 64
4646
#define RAWHID_RX_SIZE 64
4747

48-
#define HID_REPORTID_MOUSE (1)
49-
#define HID_REPORTID_KEYBOARD (2)
50-
#define HID_REPORTID_RAWHID (3)
48+
#define HID_REPORTID_KEYBOARD (1)
49+
#define HID_REPORTID_MOUSE (2)
50+
#define HID_REPORTID_MOUSE_ABS (3)
5151
#define HID_REPORTID_SYSTEMCONTROL (4)
52-
#define HID_REPORTID_MOUSE_ABS (5)
53-
#define HID_REPORTID_CONSUMERCONTROL (6)
52+
#define HID_REPORTID_CONSUMERCONTROL (5)
53+
#define HID_REPORTID_RAWHID (6)
5454

5555
extern const u8 _hidReportDescriptor[] PROGMEM;
5656
const u8 _hidReportDescriptor[] = {
5757

58+
// Keyboard
59+
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
60+
0x09, 0x06, // USAGE (Keyboard)
61+
0xa1, 0x01, // COLLECTION (Application)
62+
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID
63+
0x05, 0x07, // USAGE_PAGE (Keyboard)
64+
65+
// Keyboard Modifiers (shift, alt, ...)
66+
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
67+
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
68+
0x15, 0x00, // LOGICAL_MINIMUM (0)
69+
0x25, 0x01, // LOGICAL_MAXIMUM (1)
70+
0x75, 0x01, // REPORT_SIZE (1)
71+
72+
0x95, 0x08, // REPORT_COUNT (8)
73+
0x81, 0x02, // INPUT (Data,Var,Abs)
74+
0x95, 0x01, // REPORT_COUNT (1)
75+
0x75, 0x08, // REPORT_SIZE (8)
76+
0x81, 0x03, // INPUT (Cnst,Var,Abs)
77+
78+
// Keyboard keys
79+
0x95, 0x06, // REPORT_COUNT (6)
80+
0x75, 0x08, // REPORT_SIZE (8)
81+
0x15, 0x00, // LOGICAL_MINIMUM (0)
82+
0x26, 0xDF, 0x00, // LOGICAL_MAXIMUM (239)
83+
0x05, 0x07, // USAGE_PAGE (Keyboard)
84+
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
85+
0x29, 0xDF, // USAGE_MAXIMUM (Left Control - 1)
86+
0x81, 0x00, // INPUT (Data,Ary,Abs)
87+
0xc0, // END_COLLECTION
88+
5889
// Mouse relative
5990
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54
6091
0x09, 0x02, // USAGE (Mouse)
6192
0xa1, 0x01, // COLLECTION (Application)
6293
0x09, 0x01, // USAGE (Pointer)
6394
0xa1, 0x00, // COLLECTION (Physical)
64-
0x85, HID_REPORTID_MOUSE, // REPORT_ID (1)
95+
0x85, HID_REPORTID_MOUSE, // REPORT_ID
6596
0x05, 0x09, // USAGE_PAGE (Button)
6697
0x19, 0x01, // USAGE_MINIMUM (Button 1)
6798
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
@@ -92,7 +123,7 @@ const u8 _hidReportDescriptor[] = {
92123
0xa1, 0x01, // COLLECTION (Application)
93124
0x09, 0x01, // USAGE (Pointer)
94125
0xa1, 0x00, // COLLECTION (Physical)
95-
0x85, HID_REPORTID_MOUSE_ABS, // REPORT_ID (5)
126+
0x85, HID_REPORTID_MOUSE_ABS, // REPORT_ID
96127
0x05, 0x09, // USAGE_PAGE (Button)
97128
0x19, 0x01, // USAGE_MINIMUM (Button 1)
98129
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
@@ -116,106 +147,76 @@ const u8 _hidReportDescriptor[] = {
116147
0xc0, // END_COLLECTION
117148
#endif
118149

119-
// Keyboard
120-
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
121-
0x09, 0x06, // USAGE (Keyboard)
122-
0xa1, 0x01, // COLLECTION (Application)
123-
0x85, HID_REPORTID_KEYBOARD, // REPORT_ID (2)
124-
0x05, 0x07, // USAGE_PAGE (Keyboard)
125-
126-
// Keyboard Modifiers (shift, alt, ...)
127-
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
128-
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
129-
0x15, 0x00, // LOGICAL_MINIMUM (0)
130-
0x25, 0x01, // LOGICAL_MAXIMUM (1)
131-
0x75, 0x01, // REPORT_SIZE (1)
132-
133-
0x95, 0x08, // REPORT_COUNT (8)
134-
0x81, 0x02, // INPUT (Data,Var,Abs)
135-
0x95, 0x01, // REPORT_COUNT (1)
136-
0x75, 0x08, // REPORT_SIZE (8)
137-
0x81, 0x03, // INPUT (Cnst,Var,Abs)
138-
139-
// Keyboard keys
140-
0x95, 0x06, // REPORT_COUNT (6)
141-
0x75, 0x08, // REPORT_SIZE (8)
142-
0x15, 0x00, // LOGICAL_MINIMUM (0)
143-
0x26, 0xDF, 0x00, // LOGICAL_MAXIMUM (239)
144-
0x05, 0x07, // USAGE_PAGE (Keyboard)
145-
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
146-
0x29, 0xDF, // USAGE_MAXIMUM (Left Control - 1)
147-
0x81, 0x00, // INPUT (Data,Ary,Abs)
148-
0xc0, // END_COLLECTION
149-
150150
// System Control (Power Down, Sleep, Wakeup, ...)
151-
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
152-
0x09, 0x80, // USAGE (System Control)
153-
0xa1, 0x01, // COLLECTION (Application)
154-
0x85, HID_REPORTID_SYSTEMCONTROL,// REPORT_ID (4)
155-
0x09, 0x81, // USAGE (System Power Down)
156-
0x09, 0x82, // USAGE (System Sleep)
157-
0x09, 0x83, // USAGE (System Wakeup)
158-
0x09, 0x8E, // USAGE (System Cold Restart)
159-
0x09, 0x8F, // USAGE (System Warm Restart)
160-
0x09, 0xA0, // USAGE (System Dock)
161-
0x09, 0xA1, // USAGE (System Undock)
162-
0x09, 0xA7, // USAGE (System Speaker Mute)
163-
0x09, 0xA8, // USAGE (System Hibernate)
164-
// although these display usages are not that important, they don't cost much more than declaring
165-
// the otherwise necessary constant fill bits
166-
0x09, 0xB0, // USAGE (System Display Invert)
167-
0x09, 0xB1, // USAGE (System Display Internal)
168-
0x09, 0xB2, // USAGE (System Display External)
169-
0x09, 0xB3, // USAGE (System Display Both)
170-
0x09, 0xB4, // USAGE (System Display Dual)
171-
0x09, 0xB5, // USAGE (System Display Toggle Intern/Extern)
172-
0x09, 0xB6, // USAGE (System Display Swap)
173-
0x15, 0x00, // LOGICAL_MINIMUM (0)
174-
0x25, 0x01, // LOGICAL_MAXIMUM (1)
175-
0x75, 0x01, // REPORT_SIZE (1)
176-
0x95, 0x10, // REPORT_COUNT (16)
177-
0x81, 0x02, // INPUT (Data,Var,Abs)
178-
0xc0, // END_COLLECTION
151+
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
152+
0x09, 0x80, // USAGE (System Control)
153+
0xa1, 0x01, // COLLECTION (Application)
154+
0x85, HID_REPORTID_SYSTEMCONTROL, // REPORT_ID
155+
0x09, 0x81, // USAGE (System Power Down)
156+
0x09, 0x82, // USAGE (System Sleep)
157+
0x09, 0x83, // USAGE (System Wakeup)
158+
0x09, 0x8E, // USAGE (System Cold Restart)
159+
0x09, 0x8F, // USAGE (System Warm Restart)
160+
0x09, 0xA0, // USAGE (System Dock)
161+
0x09, 0xA1, // USAGE (System Undock)
162+
0x09, 0xA7, // USAGE (System Speaker Mute)
163+
0x09, 0xA8, // USAGE (System Hibernate)
164+
// although these display usages are not that important, they don't cost
165+
// much more than declaring the otherwise necessary constant fill bits
166+
0x09, 0xB0, // USAGE (System Display Invert)
167+
0x09, 0xB1, // USAGE (System Display Internal)
168+
0x09, 0xB2, // USAGE (System Display External)
169+
0x09, 0xB3, // USAGE (System Display Both)
170+
0x09, 0xB4, // USAGE (System Display Dual)
171+
0x09, 0xB5, // USAGE (System Display Toggle Intern/Extern)
172+
0x09, 0xB6, // USAGE (System Display Swap)
173+
0x15, 0x00, // LOGICAL_MINIMUM (0)
174+
0x25, 0x01, // LOGICAL_MAXIMUM (1)
175+
0x75, 0x01, // REPORT_SIZE (1)
176+
0x95, 0x10, // REPORT_COUNT (16)
177+
0x81, 0x02, // INPUT (Data,Var,Abs)
178+
0xc0, // END_COLLECTION
179+
180+
// Consumer Control (Sound/Media keys)
181+
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
182+
0x09, 0x01, // USAGE (Consumer Control)
183+
0xa1, 0x01, // COLLECTION (Application)
184+
0x85, HID_REPORTID_CONSUMERCONTROL,// REPORT_ID
185+
0x15, 0x00, // LOGICAL_MINIMUM (0)
186+
0x25, 0x01, // LOGICAL_MAXIMUM (1)
187+
0x75, 0x01, // REPORT_SIZE (1)
188+
0x95, 0x08, // REPORT_COUNT (8)
189+
0x09, 0xe2, // USAGE (Mute) 0x01
190+
0x09, 0xe9, // USAGE (Volume Up) 0x02
191+
0x09, 0xea, // USAGE (Volume Down) 0x03
192+
0x09, 0xcd, // USAGE (Play/Pause) 0x04
193+
0x09, 0xb7, // USAGE (Stop) 0x05
194+
0x09, 0xb6, // USAGE (Scan Previous Track) 0x06
195+
0x09, 0xb5, // USAGE (Scan Next Track) 0x07
196+
0x09, 0xb8, // USAGE (Eject) 0x08
197+
0x81, 0x02, // INPUT (Data,Var,Abs)
198+
0xc0,
179199

180200
#if RAWHID_ENABLED
181-
// RAW HID
182-
0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30
183-
0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
184-
185-
0xA1, 0x01, // Collection 0x01
186-
0x85, HID_REPORTID_RAWHID, // REPORT_ID (3)
187-
0x75, 0x08, // report size = 8 bits
188-
0x15, 0x00, // logical minimum = 0
189-
0x26, 0xFF, 0x00, // logical maximum = 255
190-
191-
0x95, 64, // report count TX
192-
0x09, 0x01, // usage
193-
0x81, 0x02, // Input (array)
194-
195-
0x95, 64, // report count RX
196-
0x09, 0x02, // usage
197-
0x91, 0x02, // Output (array)
198-
0xC0 // end collection
201+
// RAW HID
202+
0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30
203+
0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
204+
205+
0xA1, 0x01, // Collection 0x01
206+
0x85, HID_REPORTID_RAWHID, // REPORT_ID
207+
0x75, 0x08, // report size = 8 bits
208+
0x15, 0x00, // logical minimum = 0
209+
0x26, 0xFF, 0x00, // logical maximum = 255
210+
211+
0x95, 64, // report count TX
212+
0x09, 0x01, // usage
213+
0x81, 0x02, // Input (array)
214+
215+
0x95, 64, // report count RX
216+
0x09, 0x02, // usage
217+
0x91, 0x02, // Output (array)
218+
0xC0 // end collection
199219
#endif
200-
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
201-
0x09, 0x01, // USAGE (Consumer Control)
202-
0xa1, 0x01, // COLLECTION (Application)
203-
0x85, HID_REPORTID_CONSUMERCONTROL, // REPORT_ID (6)
204-
0x15, 0x00, // LOGICAL_MINIMUM (0)
205-
0x25, 0x01, // LOGICAL_MAXIMUM (1)
206-
0x75, 0x01, // REPORT_SIZE (1)
207-
0x95, 0x08, // REPORT_COUNT (8)
208-
0x09, 0xe2, // USAGE (Mute) 0x01
209-
0x09, 0xe9, // USAGE (Volume Up) 0x02
210-
0x09, 0xea, // USAGE (Volume Down) 0x03
211-
0x09, 0xcd, // USAGE (Play/Pause) 0x04
212-
0x09, 0xb7, // USAGE (Stop) 0x05
213-
0x09, 0xb6, // USAGE (Scan Previous Track) 0x06
214-
0x09, 0xb5, // USAGE (Scan Next Track) 0x07
215-
0x09, 0xb8, // USAGE (Eject) 0x08
216-
0x81, 0x02, // INPUT (Data,Var,Abs)
217-
0xc0,
218-
219220
};
220221

221222
extern const HIDDescriptor _hidInterface PROGMEM;

0 commit comments

Comments
 (0)