0
我想制作一个USB键盘,它具有非常小的键,我将使用一些修饰键如SHIFT和ALT键。现在为什么在USB的USB报告描述符中使用最小值是224?
我的问题
这是报告描述的删节部分我使用
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
而且这部分描述了USB消息的修改字节(字节0)。
按照我的理解,当下面的键被按下
bit 0 - Left Ctrl
bit 1 - Left Shift
bit 2 - Left Alt
bit 3 - Left GUI or Windows Key
bit 4 - Right Ctrl
bit 5 - Right Shift
bit 6 - Right Alt
bit 7 - Right GUI or Windows Key
这个字节的位被设置现在我无法理解为什么USAGE_MINIMUM(键盘LeftControl)和USAGE_MAXIMUM(键盘右键GUI)有限在这些值?
的USB HID规范说
由于只有一个阵列元件可以在每个阵列字段被报告, 修饰键应被报导为位图数据(一组1比特 可变域的)。例如,按键(如CTRL,SHIFT,ALT和GUI)组成了标准键盘报告中的8位修改器字节。 虽然这些使用代码在使用情况表中定义为E0-E7, ,但不会将使用情况作为阵列数据发送。