发帖
5 0 0

USB-HID键鼠通讯数据格式

bzhou830
论坛元老

72

主题

1454

回帖

1万

积分

论坛元老

积分
12154
技术杂谈 1700 5 2023-10-17 15:00:44

1. 鼠标的通讯数据格式

鼠标发送给PC的数据每次4个字节

BYTE1 BYTE2 BYTE3 BYTE4

定义分别是:

BYTE1 --
       |--bit7:   1   表示   Y   坐标的变化量超出-256   ~   255的范围,0表示没有溢出
       |--bit6:   1   表示   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 -- 滚轮变化。
BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向。

2. 键盘的通讯数据格式

键盘发送给PC的数据每次8个字节

BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8

定义分别是:

BYTE1 --
       |--bit0:   Left Control是否按下,按下为1
       |--bit1:   Left Shift  是否按下,按下为1
       |--bit2:   Left Alt    是否按下,按下为1
       |--bit3:   Left GUI    是否按下,按下为1
       |--bit4:   Right Control是否按下,按下为1  
       |--bit5:   Right Shift 是否按下,按下为1
       |--bit6:   Right Alt   是否按下,按下为1
       |--bit7:   Right GUI   是否按下,按下为1
BYTE2 -- 保留位
BYTE3--BYTE8 -- 这六个为普通按键

例如:键盘发送一帧数据 02 00 0x04 0x05 00 00 00 00, 表示同时按下了Left Shift + a + b三个键。

──── 0人觉得很赞 ────

使用道具 举报

2023-10-17 15:47:46
学习了~
不错,学习了
2023-10-17 17:31:24
这是个硬货,可以自己做键盘
2023-10-17 20:29:39
学习了
2024-7-22 09:30:09
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28247 个
  • 话题数: 40195 篇