抛开USB协议本身的结构数据之外,通用USB键盘鼠标的数据包相当简单。USB键盘每次发送八个字节,而USB数据每次发送四个字节。

USB键盘数据包

BYTE0
 ├─ bit0: Left Control是否按下,按下为1
 ├─ bit1: Left Shift  是否按下,按下为1
 ├─ bit2: Left Alt    是否按下,按下为1
 ├─ bit3: Left Win    是否按下,按下为1
 ├─ bit4: Right Control是否按下,按下为1
 ├─ bit5: Right Shift 是否按下,按下为1
 ├─ bit6: Right Alt   是否按下,按下为1
 └─ bit7: Right Win   是否按下,按下为1
BYTE1 ─ 保留位
BYTE2 ~ BYTE7 ─ 这六个为普通按键键码

USB鼠标数据报

BYTE0
 ├─ bit7: 表示Y坐标的变化量超出-256~255的范围,0表示没有溢出
 ├─ bit6: 表示X坐标的变化量超出-256~255的范围,0表示没有溢出
 ├─ bit5: Y坐标变化的符号位,1表示负数,即鼠标向下移动
 ├─ bit4: X坐标变化的符号位,1表示负数,即鼠标向左移动
 ├─ bit3: 恒为1
 ├─ bit2: 1表示中键按下
 ├─ bit1: 1表示右键按下
 └─ bit0: 1表示左键按下
BYTE2 ─ X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 ─ Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 ─ 滚轮变化。

标签: none

添加新评论