USB规范官网提供了一个HID报告描述符生成工具,HID Descriptor Tool | USB-IF
使用我们此工具,我们可以:
- 创建、编辑和验证HID报告描述符。
- 输出多种输出(.txt、.inc、.h等)
- 查看一些标准的设备报告描述符示例。
该工具包中,包含有大量的常用设备的报告描述符。
双击dt.exe后,软件界面如下:
我们通过菜单的 FILE/Open,弹出需要打开的HID报告描述符。
这里我们选择鼠标的报告描述符:mouse.hid
可以看到,Resport Descriptor分两列显示,第一列为报告描述符的说明,第二列为十六进制数。
如需要修改某些值,可以双击选中需要修改的行,如我们双击 INPUT(Data,Var,Abs) 81 02,弹出其修改页:
修改完成以后,点击“File -> Save As”,保存为.h格式。保存完成后打开,效果如下:
char ReportDescriptor[50] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x03, // REPORT_COUNT (3)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x05, // REPORT_SIZE (5)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x15, 0x81, // LOGICAL_MINIMUM (-127)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x06, // INPUT (Data,Var,Rel)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION