01
解決方案
USB 原本應該終結 PC 的線材動物園,但人機介面裝置還有另一個問題:每個滑鼠、鍵盤、繪圖板或遊戲控制器都可能提供不同的按鈕、軸、滾輪與 LED 組合。笨拙的答案是為每個周邊裝置家族各寫一個驅動程式。
HID 的聰明之舉是報告描述元。裝置本身會送出精簡的位元組碼,說明它能交換哪些報告,以及每個欄位代表什麼意義。此類別定義明確以精簡、可擴充與自我描述為目標。
這讓新奇的裝置變得便宜。主機可以用同一個 HID 類別驅動程式支援許多裝置,而製造商也能新增控制項,不必先說服每個作業系統廠商隨附新的機型專屬驅動程式。
02
達成了什麼
讓裝置描述自己的控制項
03
為何有效
描述元把裝置專屬的知識從主機軟體移到周邊裝置。
未知欄位可以被略過,因此此格式能容忍未來的裝置。
用途表賦予控制項共通意義,而不必凍結實體設計。
04
可應用的地方
當硬體種類無窮無盡時,該標準化的是描述語言,而不是每一種產品外形。通用解析器能吸收驅動程式目錄無法容納的變化。
05
後續發展
HID 脫離了 USB 本身:Linux 文件指出,HID 現在可透過 USB、I2C 與藍牙等傳輸方式運作。同樣的概念仍能解釋為何特殊鍵盤、指向裝置與控制器往往在完成列舉後就能立即使用。
追溯依據
參考來源
- Device Class Definition for HID 1.11 USB Implementers Forum · usb.org
- Introduction to HID report descriptors The Linux Kernel documentation · kernel.org