USB标准键盘按键数据包格式解析

标准键盘一次发送8个字节,解释如下:
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 – 这六个为普通按键
USB鼠标一次可以发送8个字节的数据,其中第1个字节表示修饰键是否被按下,第2个字节是保留位,值固定为0,后6个字节表示普通按键信息。

第1个字节中的每一位都表示一个修饰键,如果该位为1表示对应修饰键被按下,为0表示没有按下。这8个修饰键分别是左Ctrl键、左Shift键、左Alt键、左GUI键、右Ctrl键、右Shift键、右Alt键和右GUI键。

后6个字节表示最多6个普通按键信息,其中的值表示相应的按键编码,范围是0x00到0xFF。0x00表示没有编码且没有按键被按下,0x01表示出现溢出,0x02表示键盘自检失败,0x03表示未定义错误。0x04表示A键,0x05表示B键,以此类推。

当按下一个按键,相应的按键字段会出现一个扫描码;当释放一个按键,相应的按键字段的值会变为0x00。

例如,如果用户先后按下A键、B键和C键,发送的数据包依次为:
00 00 04 00 00 00 00 00
00 00 04 05 00 00 00 00
00 00 04 05 06 00 00 00
如果用户先后按下X键和左Shift键,发送的数据包为:
02 00 1B 00 00 00 00 00

通过上述例子可以看出,USB键盘按照用户按下按键的顺序返回按键扫描码,如果第一个按键字段为0x00,表示没有任何按键被按下。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部