USB鼠标HID报告描述符数据格式分析
2021-05-07
8074
2
注意:这里的鼠标为普通鼠标报告描述符的信息解释,其并不适用于全鼠标报表描述符。
一个示例如下:
0x05,0x01, // Global Generic Desktop
0x09,0x02, // Local Mouse
0xa1,0x01, // Main app collection
0x09,0x01, // Local Pointer
0xa1,0x00, // Main phy collection
0x95,0x03, // Global ReportCount
0x75,0x01, // Global ReportSize
0x05,0x09, // Global Button
0x19,0x01, // Local Usage Min
0x29,0x03, // Local Usage Max
0x15,0x00, // Global Logical Min
0x25,0x01, // Global Logical Max
0x81,0x02, // Main Input(Data,Var,Abs)
0x95,0x01, // Global ReportCount
0x75,0x05, // Global ReportSize
0x81,0x03, // Main Input(Cnsr,Var,Abs)
0x95,0x03,0x75,0x08, // Global ReportCount Global ReportSize
0x05,0x01, // Global Generic Desktip
0x09,0x30, // Local X
0x09,0x31, // Local Y
0x09,0x38, // Locak Wheel
0x15,0x81, // Global Logical Min
0x25,0x7f, // Global Logical Max
0x81,0x06, // Main Input(Data,Var,Rel)
0xc0, // Main End collection
鼠标发送给PC的数据每次4个字节。
- BYTE1字节:
- bit7~3:补充的常数,无意义,这里为0即可
- bit2: 1表示中键按下
- bit1: 1表示右键按下 0表示右键抬起
- bit0: 1表示左键按下 0表示左键抬起
- BYTE2 — X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
- BYTE3 — Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
- BYTE4 — 滚轮变化。0x01表示滚轮向前滚动一格;0xFF表示滚轮向后滚动一格;0x80是个中间值,不滚动。
试验数据:
BYTE2 X坐标变化量,当BYTE1的bit4为0的时候,0x01~0x7F为向左移动,0x81~0xFF为向右移动,0x00,0x80为不移动。BYTE1的bit4为1的时候,依旧。试验数据是跟BYTE1的bit4没什么关系。
BYTE3的变化跟BYTE2的一样。
因此BYTE2/BYTE3/BYTE4的变化趋势都是一样的,中间是分界点,山峰结构。从低到高,再从高到低。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936