我正在尝试制作HID USB设备。我搜索过它,发现键盘的输出有8个字节。第一个字节是修饰符,第二个字节是保留的,剩下的6个字节是关键代码。我认为在某些情况下像“prtsc”需要多个单字节。我想知道
1. usb hid键盘输出的数据是否总是8个字节(取决于按下的键的类型,它会有所不同)。
2.是否有任何其他前缀或后缀数据以及这8个字节来识别新按键的开始和结束?
问候, 拉胡
答案 0 :(得分:2)
我认为在某些情况下喜欢" prtsc"需要多个单字节.I 想知道
不,当前定义的键盘用法范围从0x04到0xE7,因此它们都可以被一个字节索引。
1. usb hid键盘输出的数据是否总是8个字节(取决于按下的键的类型,它会有所不同)。
它是一个固定长度,但并不总是必须是8个字节(除非你的设备在启动PC时需要被识别为键盘...... CMOS启动固件不处理HID报告描述符所以报告缓冲区是预定的固定8字节)。最小的(我测试过的)是3个字节(1个修改字节,1个保留字节和1个密钥索引字节),由HID报告描述符定义。
2.是否有任何其他前缀或后缀数据以及这8个字节来识别新按键的开始和结束?
没有。 6个字节(在前两个字节之后)表示同时按下的键(在这种情况下最多为6个)。如果当前没有按键,则所有6个字节应包含0x00。每个字节是LOGICAL_MINIMUM和LOGICAL_MAXIMUM之间的索引,它一对一地映射到(通常)由USAGE_MINIMUM和USAGE_MAXIMUM定义的键盘用法范围,或单个USAGE的列表,或两者的组合。例如,如果按下A和B键,则缓冲区将包含这两个用法的索引(按任意顺序),其余字节应为0x00。如果随后释放A,则缓冲区仍应包含B用法的索引(其余字节设置为0x00)。如果您忘记通过将缓冲区清除为零来发出密钥释放信号,那么您很可能会在主机设备(通常是PC)上看到上次更改的密钥重复出现。密钥重复延迟和速率纯粹是一个主机功能。
Device Class Definition for HID 1.11在附录C中有更多信息。
答案 1 :(得分:0)
您应参阅此文档USB HID usage table,第53页。