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, ,但不會將使用情況作爲陣列數據發送。