"Here is the hid report descripto..." <- > <@morfertaw:matrix.org> Here is the hid report descriptor with the id. > > ```rust > const KEYBOARD_ID: u8 = 0x01; > > pub const HID_KEYBOAD_REPORT_DISCRIPTOR: &[u8] = hid!( > (USAGE_PAGE, 0x01), // USAGE_PAGE (Generic Desktop Ctrls) > (USAGE, 0x06), // USAGE (Keyboard) > (COLLECTION, 0x01), // COLLECTION (Application) > // ------------------------------------------------- Keyboard > (REPORT_ID, KEYBOARD_ID), // REPORT_ID (1) > (USAGE_PAGE, 0x07), // USAGE_PAGE (Kbrd/Keypad) > (USAGE_MINIMUM, 0xE0), // USAGE_MINIMUM (0xE0) > (USAGE_MAXIMUM, 0xE7), // USAGE_MAXIMUM (0xE7) > (LOGICAL_MINIMUM, 0x00), // LOGICAL_MINIMUM (0) > (LOGICAL_MAXIMUM, 0x01), // Logical Maximum (1) > (REPORT_SIZE, 0x01), // REPORT_SIZE (1) > (REPORT_COUNT, 0x08), // REPORT_COUNT (8) > (HIDINPUT, 0x02), // INPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) > (REPORT_COUNT, 0x01), // REPORT_COUNT (1) ; 1 byte (Reserved) > (REPORT_SIZE, 0x08), // REPORT_SIZE (8) > (HIDINPUT, 0x01), // INPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) > (REPORT_COUNT, 0x05), // REPORT_COUNT (5) ; 5 bits (Num lock, Caps lock, Scroll lock, Compose, Kana) > (REPORT_SIZE, 0x01), // REPORT_SIZE (1) > (USAGE_PAGE, 0x08), // USAGE_PAGE (LEDs) > (USAGE_MINIMUM, 0x01), // USAGE_MINIMUM (0x01) ; Num Lock > (USAGE_MAXIMUM, 0x05), // USAGE_MAXIMUM (0x05) ; Kana > (HIDOUTPUT, 0x02), // OUTPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) > (REPORT_COUNT, 0x01), // REPORT_COUNT (1) ; 3 bits (Padding) > (REPORT_SIZE, 0x03), // REPORT_SIZE (3) > (HIDOUTPUT, 0x01), // OUTPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) > (REPORT_COUNT, 0x06), // REPORT_COUNT (6) ; 6 bytes (Keys) > (REPORT_SIZE, 0x08), // REPORT_SIZE(8) > (LOGICAL_MINIMUM, 0x00), // LOGICAL_MINIMUM(0) > (LOGICAL_MAXIMUM, 0x65), // LOGICAL_MAXIMUM(0x65) ; 101 keys > (USAGE_PAGE, 0x07), // USAGE_PAGE (Kbrd/Keypad) > (USAGE_MINIMUM, 0x00), // USAGE_MINIMUM (0) > (USAGE_MAXIMUM, 0x65), // USAGE_MAXIMUM (0x65) > (HIDINPUT, 0x00), // INPUT (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) > (END_COLLECTION), // END_COLLECTION > ); > ``` It’s not valid to have a report ID unless you have more than one (I.e. you need a REPORT_ID (2) in there somewhere)