Skip to content

Commit ace0f18

Browse files
committed
standalone MouseAndKeyboard library
1 parent 3dbd179 commit ace0f18

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

libraries/MouseAndKeyboard/MouseAndKeyboard.cpp

Whitespace-only changes.
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
extern const u8 _hidReportDescriptor[] PROGMEM;
2+
const u8 _hidReportDescriptor[] = {
3+
4+
// Mouse
5+
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54
6+
0x09, 0x02, // USAGE (Mouse)
7+
0xa1, 0x01, // COLLECTION (Application)
8+
0x09, 0x01, // USAGE (Pointer)
9+
0xa1, 0x00, // COLLECTION (Physical)
10+
0x85, 0x01, // REPORT_ID (1)
11+
0x05, 0x09, // USAGE_PAGE (Button)
12+
0x19, 0x01, // USAGE_MINIMUM (Button 1)
13+
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
14+
0x15, 0x00, // LOGICAL_MINIMUM (0)
15+
0x25, 0x01, // LOGICAL_MAXIMUM (1)
16+
0x95, 0x03, // REPORT_COUNT (3)
17+
0x75, 0x01, // REPORT_SIZE (1)
18+
0x81, 0x02, // INPUT (Data,Var,Abs)
19+
0x95, 0x01, // REPORT_COUNT (1)
20+
0x75, 0x05, // REPORT_SIZE (5)
21+
0x81, 0x03, // INPUT (Cnst,Var,Abs)
22+
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
23+
0x09, 0x30, // USAGE (X)
24+
0x09, 0x31, // USAGE (Y)
25+
0x09, 0x38, // USAGE (Wheel)
26+
0x15, 0x81, // LOGICAL_MINIMUM (-127)
27+
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
28+
0x75, 0x08, // REPORT_SIZE (8)
29+
0x95, 0x03, // REPORT_COUNT (3)
30+
0x81, 0x06, // INPUT (Data,Var,Rel)
31+
0xc0, // END_COLLECTION
32+
0xc0, // END_COLLECTION
33+
34+
// Keyboard
35+
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
36+
0x09, 0x06, // USAGE (Keyboard)
37+
0xa1, 0x01, // COLLECTION (Application)
38+
0x85, 0x02, // REPORT_ID (2)
39+
0x05, 0x07, // USAGE_PAGE (Keyboard)
40+
41+
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
42+
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
43+
0x15, 0x00, // LOGICAL_MINIMUM (0)
44+
0x25, 0x01, // LOGICAL_MAXIMUM (1)
45+
0x75, 0x01, // REPORT_SIZE (1)
46+
47+
0x95, 0x08, // REPORT_COUNT (8)
48+
0x81, 0x02, // INPUT (Data,Var,Abs)
49+
0x95, 0x01, // REPORT_COUNT (1)
50+
0x75, 0x08, // REPORT_SIZE (8)
51+
0x81, 0x03, // INPUT (Cnst,Var,Abs)
52+
53+
0x95, 0x06, // REPORT_COUNT (6)
54+
0x75, 0x08, // REPORT_SIZE (8)
55+
0x15, 0x00, // LOGICAL_MINIMUM (0)
56+
0x25, 0x65, // LOGICAL_MAXIMUM (101)
57+
0x05, 0x07, // USAGE_PAGE (Keyboard)
58+
59+
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
60+
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
61+
0x81, 0x00, // INPUT (Data,Ary,Abs)
62+
0xc0, // END_COLLECTION
63+
64+
#ifdef RAWHID_ENABLED
65+
// RAW HID
66+
0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30
67+
0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
68+
69+
0xA1, 0x01, // Collection 0x01
70+
0x85, 0x03, // REPORT_ID (3)
71+
0x75, 0x08, // report size = 8 bits
72+
0x15, 0x00, // logical minimum = 0
73+
0x26, 0xFF, 0x00, // logical maximum = 255
74+
75+
0x95, 64, // report count TX
76+
0x09, 0x01, // usage
77+
0x81, 0x02, // Input (array)
78+
79+
0x95, 64, // report count RX
80+
0x09, 0x02, // usage
81+
0x91, 0x02, // Output (array)
82+
0xC0 // end collection
83+
#endif
84+
};

0 commit comments

Comments
 (0)