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