在项目中写鼠标定位的时候,要写到USB协议,很有描述符,在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符。
但是怎么才能写成绝对坐标的报告描述符呢,这个就是,但是实际差一个1,然后就在从串口舒服的数据中每2个字节就加1!
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 (Buttons)
0x19, 0x01, // Usage Minimum (01)
0x29, 0x03, // Usage Maximum (03)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x03, // Report Count (1)
0x81, 0x02, // Input (Data, Variable, Absolute)
0x95, 0x01, // Report Count(1)
0x75, 0x05, // Report Size (7)
0x81, 0x01, // Input (Constant) for padding
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x30, // Usage (X)
0x15, 0x00, // Logical Minimum (0)
0x26, 0x80,0x07,//0xFF, 0x7F, // LOGICAL_MAXIMUM (1920)
0x35, 0x00, // PHYSICAL_MINIMUM(0)
0x46, 0x80,0x07,//0xFF, 0xFF, // PHYSICAL_MAXIMUM(1920)
0x75, 0x10, // Report Size (16)bit
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data, Variable, Relative)
0x09, 0x31, // Usage (Y)
0x15, 0x00, // Logical Minimum (0)
0x26, 0x38,0x04,//0xFF, 0x7F, // LOGICAL_MAXIMUM (1080)
0x35, 0x00, // PHYSICAL_MINIMUM(0)
0x46, 0x38,0x04,//0xFF, 0xFF, // PHYSICAL_MAXIMUM(1080)
0x75, 0x10, // Report Size (16)bit
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data, Variable, Relative)
0xc0, // END_COLLECTION
0xa1, 0x01, // COLLECTION (Application)
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)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x05, // REPORT_SIZE (5)
0xb1, 0x03, // FEATURE (Cnst,Var,Abs)
0xC0, // End Collection (Physical)
0xC0