实测可用。
uint8_t RC_hids_map[] =
{
0x05, 0x01,
// Usage Pg (Generic Desktop)
0x09, 0x06,
// Usage (Keyboard)
0xA1, 0x01,
// Collection: (Application)
0x85, 0x01,
// Report Id (1)
//
0x05, 0x07,
// Usage Pg (Key Codes)
0x19, 0xE0,
// Usage Min (224)
0x29, 0xE7,
// Usage Max (231)
0x15, 0x00,
// Log Min (0)
0x25, 0x01,
// Log Max (1)
//
// Modifier byte
0x75, 0x01,
// Report Size (1)
0x95, 0x08,
// Report Count (8)
0x81, 0x02,
// Input: (Data, Variable, Absolute)
//
// Reserved byte
0x95, 0x01,
// Report Count (1)
0x75, 0x08,
// Report Size (8)
0x81, 0x01,
// Input: (Constant)
//
// LED report
0x95, 0x05,
// Report Count (5)
0x75, 0x01,
// Report Size (1)
0x05, 0x08,
// Usage Pg (LEDs)
0x19, 0x01,
// Usage Min (1)
0x29, 0x05,
// Usage Max (5)
0x91, 0x02,
// Output: (Data, Variable, Absolute)
//
// LED report padding
0x95, 0x01,
// Report Count (1)
0x75, 0x03,
// Report Size (3)
0x91, 0x01,
// Output: (Constant)
//
// Key arrays (6 bytes)
0x95, 0x06,
// Report Count (6)
0x75, 0x08,
// Report Size (8)
0x15, 0x00,
// Log Min (0)
0x25, 0x65,
// Log Max (101)
0x05, 0x07,
// Usage Pg (Key Codes)
0x19, 0x00,
// Usage Min (0)
0x29, 0x65,
// Usage Max (101)
0x81, 0x00,
// Input: (Data, Array)
//
0xC0,
// End Collection
0x05, 0x01, /* USAGE_PAGE (Generic Desktop)*/
0x09, 0x02, /* USAGE (Mouse)*/
0xA1, 0x01, /* Collection (Application)*/
0x09, 0x01, /* Usage Pointer */
0xA1, 0x00, /* Collection (Physical)*/
0x85, 0x03, /* REPORT_ID (3) */
0x05, 0x01, /* USAGE_PAGE (Generic Desktop)*/
0x09, 0x30, /* Usage(X) */
0x09, 0x31, /* Usage(Y) */
0x15, 0x80, /* Logical Minimum(-128)*/
0x25, 0x7F, /* Logical Maximum( 127)*/
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x02, /* REPORT_COUNT (2) */
0x81, 0x06, /* INPUT (Data,Value,Relative,Bit Field) */
0x05, 0x09, /* USAGE_PAGE (Button) */
0x19, 0x01, /* USAGE Minimum */
0x29, 0x05, /* USAGE Maximum */
0x15, 0x00, /* Logical Minimum */
0x25, 0x01, /* Logical Maximum */
0x95, 0x05, /* Report Count */
0x75, 0x01, /* Report Size */
0x81, 0x02, /* Input Data*/
/* Padding bits */
0x95, 0x01, /* Report Count*/
0x75, 0x03, /* Report Size */
0x81, 0x03, /* Input Constant*/
0xC0, /* END_COLLECTION (Physical) */
0xC0, /* END_COLLECTION (Application) */
0x06, 0x01, 0xFF, // Usage Page (Vendor Defined 0xFF01)
0x09, 0x02, // Usage (tmp usage)
0xA1, 0x02, // Collection (Logical)
0x85, 0x02, // Report ID (2)
0x09, 0x14, // Usage (tmp usage)
0x75, 0x08, // Report Size (8)
0x95, 0x14, // Report Count (20)
0x15, 0x80, // Logical Minimum (128)
0x25, 0x7F, // Logical Maximum (127)
0x81, 0x22, // Input (Data,Var,Abs,No Wrap,Linear,No Preferred State,No Null Position)
0x85, 0x04, // Report ID (4)
0x09, 0x04, // Usage (tmp usage)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x91, 0x02, // Output
0xC0, // End Collection
};