http://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
1. Item
Report descriptors 是由 item 組合起來的, item 有多種類型
2. usage_page與 usage
在一個描述符中,首先要設置一個 Usage_page, 然后某些的usage才能被設置. 在官方文檔中鼠標的例子中, 首先設置USAGE_PAGE (Generic Desktop), 然后才能使用 USAGE (Mouse). 當設置了 USAGE_PAGE (Button),然后才能使用USAGE_MINIMUM and USAGE_MAXIMUM指定不同的button,USAGE_PAGE就像一個命名空間,規定了其中哪些 USAGE 可以使用
3. collections
Collections用來組合你的數據, 相當于多個 usage page 的集合,一個collection并不對應 一條report, 只有 Input, Output, Feature
4. Report ID
被用來區分同一終端發不出的不同的 report, 當Report descriptors中有多個collection時,每一個 collection 前都要加一個report id用以區分
5. Logical Minimum 與 Logical Maximum
用來定義變量范圍, 0~1 可以代表開關, -127-128 可以代表坐標范圍
6. Usage Minimum 與 Usage Maximum
定義和一個數組關聯的 Usage 的起始和末尾, 比如
USAGE_PAGE (Button)
USAGE_MINIMUM (1)
USAGE_MAXIMUM (3)
用來表示三個 button
7. Input、Output、Feature
8. report size 與 report count
Report size 一個usage使用幾個bit
Report count 連續幾個 usage