好记性不如烂笔头
HID参考资料《USB HID USAGE TABLE》
HID_Descriptor_tool工具
0x05, 0x01, /* Usage Page (Desktop), 表示用途页为通用桌面设备 */
0x09, 0x06, /* Usage (Keyboard), 表示用途为键盘 */
0xA1, 0x01, /* Collection (Application), 表示应用集合,必须以END_COLLECTION来结束它 */
0x85, 0x02, /* Report ID (1), */
0x05, 0x07, /* Usage Page (Keyboard), 表示用途页为按键 */
0x19, 0xE0, /* Usage Minimum (KB Leftcontrol), 用途最小值,左Ctrl键 */
0x29, 0xE7, /* Usage Maximum (KB Right GUI), 用途最大值,右GUI,即window键 */
0x15, 0x00, /* Logical Minimum (0), 逻辑最小值为0 */
0x25, 0x01, /* Logical Maximum (1), 逻辑最小值为0 */
0x75, 0x01, /* Report Size (1), 报告大小(即这个字段的宽度)为1bit */
0x95, 0x08, /* Report Count (8), 报告的个数为8,即总共有8个bits */
0x81, 0x02, /* Input (Variable), Input (Data, Variable, Absolute) ;Modifier byte 输入用,变量,值,绝对值 */
0x95, 0x01, /* Report Count (1), */
0x75, 0x08, /* Report Size (8), */
0x81, 0x01, /* Input (Constant), */
0x95, 0x05, /* Report Count (5), */
0x75, 0x01, /* Report Size (1), */
static CONST uint8 hidReportMap[] =
{
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x02, // Usage (Mouse)
0xA1, 0x01, // Collection (Application)
0x85, HID_RPT_ID_MOUSE_IN, // Report Id (1) 0X01
0x09, 0x01, // Usage (Pointer)
0xA1, 0x00, // Collection (Physical)
0x05, 0x09, // Usage Page (Buttons)
0x19, 0x01, // Usage Minimum (01) - Button 1
0x29, 0x03, // Usage Maximum (03) - Button 3
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x03, // Report Count (3)
0x81, 0x02, // Input (Data, Variable, Absolute) - Button states
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x01, // Input (Constant) - Padding or Reserved bits
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x09, 0x38, // Usage (Wheel)
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7F, // Logical Maximum (127)
0x75, 0x08, // Report Size (8)
0x95, 0x03, // Report Count (3)
0x81, 0x06, // Input (Data, Variable, Relative) - X & Y coordinate
0xC0, // End Collection
0xC0, // End Collection
0x05, 0x01, // Usage Pg (Generic Desktop)
0x09, 0x06, // Usage (Keyboard)
0xA1, 0x01, // Collection: (Application)
0x85, HID_RPT_ID_KEY_IN, // Report Id (2)
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
}