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

回答

0

USAGE_MINIMUM和USAGE_MAXIMUM不限於任何特定值。你可以在你的描述符中改變它們。在這種情況下,您找到的描述符中的值非常有用,因爲它們允許您將所有修改鍵狀態置於一個字節中,從而使您不必將較大的報告發送到計算機。

相關問題