|
| 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