[USB接口] 关于HID键盘底层协议的一点疑问

[复制链接]
2609|5
 楼主| TXQDM 发表于 2017-7-7 10:26 | 显示全部楼层 |阅读模式

USB HID协议关于键盘部分是:键盘会向PC发送8个字节,每个字节有不同的含义,表示按下的键值。

今天用BUSHOUND查看了HID键盘按下1个键值向PC端发现的数据,然后我发现BUSHOUND解析出来最底层的数据格式和PS/2协议中第一套扫码值格式是一样的。如下图:

USBHID键盘插入PC后会解析出1个USB输入设备,将这个设备在做1次解析,是1个HID Keyboard Device。

file:///C:/Users/qianc/AppData/Roaming/Tencent/Users/3060632331/QQ/WinTemp/RichOle/98(BN%60ZZX$85YS)MVZ26ZDD.png

当你只抓取USB输入设备的时候发现跟USB协议一样定义的一样,是8个字节数据包。下图是按"P"键的数据包。2个数据包,1个表示按下,1个表示弹起。

file:///C:/Users/qianc/AppData/Roaming/Tencent/Users/3060632331/QQ/WinTemp/RichOle/HA%W%K$GQEO3%7BC%60ZZ%2WRPJ.png

但是当你要住区HID Keyboard Device这层数据包时,发现是12字节,格式和PS/2第一套扫码值格式对应的一样。下图是按“P”值的数据包。

两个12字节数据包相比较变化的1个字节应该是表示按下与弹起。

一个PS/2标准协议键盘按下“P”键收到的数据包:

两组数据比较,发现第一个字节是不一样的。这个字节会不会是PC分给键盘的设备号,有待考证。我一直查不到这12个字节代表什么意思。

难道说USBHID键盘最后在PC端解析出来的还是PS/2的协议?还是说这个协议是BUSHOUND自己将HID解析出来PS/2协议?

说像PS/2协议的话,从数据包来看只看到了通码,没有看到断码,用的是1个字节代表弹起或者释放。难道是第三套PS/2扫码表吗?没找到这套扫码表。

有大牛看到希望可以指导下。


L14133 发表于 2017-7-11 10:36 | 显示全部楼层
自己查协议吧
ningling_21 发表于 2017-7-14 15:06 | 显示全部楼层
读一下:圈圈教你玩USB一书  
书中有USB键盘的相关原理及说明
jinxuan97 发表于 2017-7-19 14:06 | 显示全部楼层
最好贴上Device configuration and Report Descriptor!
抓取启动开始的USB 传输数据.
zhs2007 发表于 2017-7-23 22:53 | 显示全部楼层
USB HID键盘发送的数据各字节含义不是固定不变的,含义是在Report Descriptor中描述的。
wnj08129 发表于 2018-1-9 16:08 | 显示全部楼层
楼主这个疑问解决了吗?我也有类似的问题呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

110

主题

593

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部