USB键盘鼠标默认数据包结构
抛开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 ─ 滚轮变化。