我正在试着制造一个隐藏的USB设备。我搜索了一下,发现来自键盘的输出有8个字节。第一个字节是一个修饰符,第二个字节是保留的,其余的六个字节是关键代码。我认为在某些情况下,像"prtsc“这样的字节比单个字节更需要。
1. usb键盘输出的数据是否总是8字节(是否取决于按键的类型)。
2.除了这8个字节外,是否还有其他前缀或后缀数据来标识新键按下的开始和结束?
你好,拉胡尔。
发布于 2014-06-06 14:41:56
我认为在某些情况下,如"prtsc“需要的不仅仅是单个字节,我想知道
不,当前定义的一组键盘用法从0x04到0xE7不等,因此它们都可以通过一个字节进行索引。
1. usb键盘输出的数据是否总是8字节(是否取决于按键的类型)。
它是一个固定的长度,但它不一定总是8个字节(除非你的设备需要识别为键盘时,启动一台PC .CMOS引导固件不处理HID报告描述符,因此报告缓冲器是预定的固定8字节)。HID报表描述符定义的最小字节(我已经测试过)是3个字节(1个修饰符字节、1个保留字节和1个密钥索引字节)。
2.除了这8个字节外,是否还有其他前缀或后缀数据来标识新键按下的开始和结束?
不是的。6个字节(前两个字节之后)表示并发按下的键(在本例中最多为6个)。如果当前没有按键,那么所有6个字节都应该包含0x00。每个字节是LOGICAL_MINIMUM和LOGICAL_MAXIMUM之间的一个索引,它将一对一地映射到由USAGE_MINIMUM和USAGE_MAXIMUM定义的一系列键盘用法,或者是单个用法的列表,或者两者的组合。例如,如果按下A和B键,则缓冲区将包含这两种用法的索引(按任何顺序),其余字节应为0x00。如果随后释放A,则缓冲区仍应包含B使用的索引(其余字节设置为0x00)。如果您忘记通过将缓冲区清除为零来发出密钥释放信号,那么很可能会看到主机设备(通常是PC)重复上次更改的键。关键的重复延迟和速率纯粹是一个主机函数。
HID 1.11的设备类定义在附录C中有更多的信息。
发布于 2014-06-05 08:58:30
请参阅本文档USB HID使用表,第53页。
https://stackoverflow.com/questions/24055687
复制相似问题