這篇是我讀 frank "USnooBie’s USB HID Report Descriptor Tutorial 1" 一文而寫的筆記,在此我要感謝 frank 的慷慨分享。
mouse 範例
我們將製作一個含有 3 個按鈕和 X, Y 軸移動 (movements) 的標準滑鼠。也就是說,我們要送按鈕跟 X, Y 軸移動的資料給 host。這會需要:一個 bit 代表一個按鈕,一個 byte 代表一個座標軸的移動,移動值是有符號的整數 (signed integer)。所以,我們需要像這樣的資料結構:
Bit 3-7 | Bit 2 | Bit 1 | Bit 0 | |
Byte 0 | Padding Bits | Left Button | Middle Button | Right Button |
Byte 1 | 8 bit signed relative coordinate x | |||
Byte 2 | 8 bit signed relative coordinate Y |
在 C 語言中資料結構會是這樣:
在我們的 report descriptor 中,首先定義按鈕,總共 3 個按鈕:
按鈕狀態不是 0 就是 1:
3 個按鈕總共 3 個位元:
這個是要送給 host 的變數資料:
得到的結果為:
這些代表按鈕。