坛里的各位大侠,小弟在学习usb鼠标过程中发现如下奇怪的现象,不知大家有没有遇到过,给小弟指点下迷津
现象:1、若只向pc报告dxdy,则鼠标可以正常使用,报告描述符如下
_ReportDescriptor: //
.dw 0x05, 0x01 // USAGE_PAGE (Generic Desktop)
.dw 0x09, 0x02 // USAGE (Mouse)
.dw 0xa1, 0x01 // COLLECTION (Application)
.dw 0x09, 0x01 // USAGE (Pointer)
.dw 0xa1, 0x00 // COLLECTION (Physical)
// .dw 0x05, 0x09 // USAGE_PAGE (Button)
// .dw 0x19, 0x01 // USAGE_MINIMUM (Button 1)
// .dw 0x29, 0x03 // USAGE_MAXIMUM (Button 3)
// .dw 0x15, 0x00 // LOGICAL_MINIMUM (0)
// .dw 0x25, 0x01 // LOGICAL_MAXIMUM (1)
// .dw 0x75, 0x01 // REPORT_SIZE (1)
// .dw 0x95, 0x03 // REPORT_COUNT (3)
// .dw 0x81, 0x02 // INPUT (Data,Var,Abs)
// .dw 0x75, 0x05 // REPORT_SIZE (5)
// .dw 0x95, 0x01 // REPORT_COUNT (1)
// .dw 0x81, 0x03 // INPUT (Cnst,Var,Abs)
.dw 0x05, 0x01 // USAGE_PAGE (Generic Desktop)
.dw 0x09, 0x30 // USAGE (X)
.dw 0x09, 0x31 // USAGE (Y)
// .dw 0x09, 0x38 // USAGE (Wheel)
.dw 0x15, 0x81 // LOGICAL_MINIMUM (-127)
.dw 0x25, 0x7f // LOGICAL_MAXIMUM (127)
.dw 0x75, 0x08 // REPORT_SIZE (8)
.dw 0x95, 0x02 // REPORT_COUNT (3)
.dw 0x81, 0x06 // INPUT (Data,Var,Rel)
.dw 0xc0 // END_COLLECTION
.dw 0xc0 // END_COLLECTION
_ReportDescriptor_End:
2、如果在1的基础上加上报告按键,则通过bus hound抓到的in数据长度总为1,并且要么是dx的值,要么是dy的值,报告描述符如下
_ReportDescriptor: //
.dw 0x05, 0x01 // USAGE_PAGE (Generic Desktop)
.dw 0x09, 0x02 // USAGE (Mouse)
.dw 0xa1, 0x01 // COLLECTION (Application)
.dw 0x09, 0x01 // USAGE (Pointer)
.dw 0xa1, 0x00 // COLLECTION (Physical)
.dw 0x05, 0x09 // USAGE_PAGE (Button)
.dw 0x19, 0x01 // USAGE_MINIMUM (Button 1)
.dw 0x29, 0x03 // USAGE_MAXIMUM (Button 3)
.dw 0x15, 0x00 // LOGICAL_MINIMUM (0)
.dw 0x25, 0x01 // LOGICAL_MAXIMUM (1)
.dw 0x75, 0x01 // REPORT_SIZE (1)
.dw 0x95, 0x03 // REPORT_COUNT (3)
.dw 0x81, 0x02 // INPUT (Data,Var,Abs)
.dw 0x75, 0x05 // REPORT_SIZE (5)
.dw 0x95, 0x01 // REPORT_COUNT (1)
.dw 0x81, 0x03 // INPUT (Cnst,Var,Abs)
.dw 0x05, 0x01 // USAGE_PAGE (Generic Desktop)
.dw 0x09, 0x30 // USAGE (X)
.dw 0x09, 0x31 // USAGE (Y)
// .dw 0x09, 0x38 // USAGE (Wheel)
.dw 0x15, 0x81 // LOGICAL_MINIMUM (-127)
.dw 0x25, 0x7f // LOGICAL_MAXIMUM (127)
.dw 0x75, 0x08 // REPORT_SIZE (8)
.dw 0x95, 0x02 // REPORT_COUNT (3)
.dw 0x81, 0x06 // INPUT (Data,Var,Rel)
.dw 0xc0 // END_COLLECTION
.dw 0xc0 // END_COLLECTION
_ReportDescriptor_End:
望大家不吝赐教 先谢谢了 |