Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在键盘的USB报告描述符中最小使用量为224?_Usb_Hid - Fatal编程技术网

为什么在键盘的USB报告描述符中最小使用量为224?

为什么在键盘的USB报告描述符中最小使用量为224?,usb,hid,Usb,Hid,我正在尝试制作一个USB键盘,它有非常少的按键,我将使用一些修改键,如SHIFT键和ALT键 现在我的问题是 这是我正在使用的报表描述符的截断部分 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19,

我正在尝试制作一个USB键盘,它有非常少的按键,我将使用一些修改键,如SHIFT键和ALT键

现在我的问题是

这是我正在使用的报表描述符的截断部分

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
现在我不明白为什么最小使用量(键盘左控件)和最大使用量(键盘右GUI)限制在这些值上

USB HID规范说

由于每个数组字段中只能报告一个数组元素, 修改器键应报告为位图数据(一组1位 变量字段)。例如,CTRL、SHIFT、ALT和GUI等键 键组成标准键盘报告中的8位修饰符字节。 尽管这些使用代码在使用表中定义为E0–E7, 使用情况不会作为阵列数据发送


最小使用量和最大使用量不限于任何特定值。您可以在描述符中更改它们。在这种情况下,您找到的描述符中的值很有用,因为它们允许您将所有修改器键状态放在一个字节中,这样您就不必向计算机发送更大的报告