USB鼠标HID报告描述符数据格式分析

USB鼠标HID报告描述符数据格式分析

USB鼠标HID报告描述符数据格式分析

2021-05-07

10724

3

注意:这里的鼠标为普通鼠标报告描述符的信息解释,其并不适用于全鼠标报表描述符。一个示例如下:

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

相关作品

自制 Windows PE(三):在 PE 中上网
365bet如何提款

自制 Windows PE(三):在 PE 中上网

📅 07-30 👁️ 2438
黄芪30克能有多少片,以及正确的泡水步骤
365bet正网盘口

黄芪30克能有多少片,以及正确的泡水步骤

📅 07-18 👁️ 553
长安马自达-马自达CX-4
365bet如何提款

长安马自达-马自达CX-4

📅 09-02 👁️ 398