USB 原本應該終結 PC 的線材動物園,但人機介面裝置還有另一個問題:每個滑鼠、鍵盤、繪圖板或遊戲控制器都可能提供不同的按鈕、軸、滾輪與 LED 組合。笨拙的答案是為每個周邊裝置家族各寫一個驅動程式。

HID 的聰明之舉是報告描述元。裝置本身會送出精簡的位元組碼,說明它能交換哪些報告,以及每個欄位代表什麼意義。此類別定義明確以精簡、可擴充與自我描述為目標。

這讓新奇的裝置變得便宜。主機可以用同一個 HID 類別驅動程式支援許多裝置,而製造商也能新增控制項,不必先說服每個作業系統廠商隨附新的機型專屬驅動程式。

讓裝置描述自己的控制項

描述元把裝置專屬的知識從主機軟體移到周邊裝置。

未知欄位可以被略過,因此此格式能容忍未來的裝置。

用途表賦予控制項共通意義,而不必凍結實體設計。

當硬體種類無窮無盡時,該標準化的是描述語言,而不是每一種產品外形。通用解析器能吸收驅動程式目錄無法容納的變化。

HID 脫離了 USB 本身:Linux 文件指出,HID 現在可透過 USB、I2C 與藍牙等傳輸方式運作。同樣的概念仍能解釋為何特殊鍵盤、指向裝置與控制器往往在完成列舉後就能立即使用。

追溯依據

參考來源

  1. Device Class Definition for HID 1.11 USB Implementers Forum · usb.org
  2. Introduction to HID report descriptors The Linux Kernel documentation · kernel.org