手動解析 HID 報告描述符¶
再次考慮在 HID 報告描述符介紹 中引入的滑鼠 HID 報告描述符
$ hexdump -C /sys/bus/hid/devices/0003\:093A\:2510.0002/report_descriptor
00000000 05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 03 |..............).|
00000010 15 00 25 01 75 01 95 03 81 02 75 05 95 01 81 01 |..%.u.....u.....|
00000020 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 |...0.1.8..%.u...|
00000030 81 06 c0 c0 |....|
00000034
並嘗試手動解析它。
從第一個數字 0x05 開始:它攜帶 2 位用於專案的長度,2 位用於專案的型別,以及 4 位用於函式
+----------+
| 00000101 |
+----------+
^^
---- Length of data (see HID spec 6.2.2.2)
^^
------ Type of the item (see HID spec 6.2.2.2, then jump to 6.2.2.7)
^^^^
--------- Function of the item (see HID spec 6.2.2.7, then HUT Sec 3)
在我們的例子中,長度是 1 個位元組,型別是 Global,函式是 Usage Page,因此為了解析第二個位元組中的值 0x01,我們需要參考 HUT Sec 3。
第二個數字是實際資料,它的含義可以在 HUT 中找到。我們有一個 Usage Page,因此我們需要參考 HUT Sec. 3,“Usage Pages”;從那裡,可以看到 0x01 代表 Generic Desktop Page。
現在移動到接下來的兩個位元組,並遵循相同的方案,0x09 (即 00001001) 將跟隨一個位元組 (01),並且是一個 Local 專案 (10)。因此,其餘四個位 (0000) 的含義在 HID 規範 Sec. 6.2.2.8 “Local Items” 中給出,因此我們有一個 Usage。從 HUT Sec. 4,“Generic Desktop Page” 中,我們看到 0x02 代表 Mouse。
以下數字可以用相同的方式解析。