报文描述符
/* USB 多媒体键盘HID描述符 */
/* HID Report Descriptor mediaboard */
const u8 mediaBoard_ReportDescriptor[] =
{
0x05, 0x0C, // Usage Page (Consumer Devices)
0x09, 0x01, // Usage (Consumer Control)
0xA1, 0x01, // Collection (Application)
0x85, REPORT_ID, // Report ID
0x15, 0x00, // Logical Minimum (0)
0x26, 0x3C, 0x02, // Logical Maximum (572)
0x19, 0x00, // Usage Minimum (Undefined)
0x2A, 0x3C, 0x02, // Usage Maximum (AC Format)
0x75, 0x10, // Report Size (16)
0x95, 0x01, // Report Count (1)
0x81, 0x00, // Input (Data,Ary,Abs)
0xC0 // End Collection
}
报文说明
键盘发送给PC的数据每次3个字节
Byte0 Byte1 Byte2
定义分别是:
Byte0 -- Report ID
Byte1~Byte2 -- 键值
例如(假设Report ID等于c4):
按键:主页键(0x0223)
按下报文: c4 23 02
释放报文: c4 00 00
按键:后退键(0x0223)
按下报文: c4 23 02
释放报文: c4 00 00
按键:播放/暂停键(0x00CD)
按下报文: c4 CD 00
释放报文: c4 00 00
对于键码,HID和PS2的键盘有所不同,其它键码请参照USB HID to PS2 Scan Code Translation Table.pdf 的“Key Name”列和“HID Usage ID”列;
媒体键在 Usage Page =0xoc
注
- 如果发送X键按下报文后不发送释放报文,则设备一直处于连按X键状态,值到发送释放报文或直接断开设备;
- 如果发送X1键按下报文后不发送释放报文,而发送其他按键X2键按下报文,则X1键被释放,设备一直处于连按X2键状态,值到发送释放报文或直接断开设备;