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扫码表吗?没找到这套扫码表。 有大牛看到希望可以指导下。
|