人体学接口设备

人体学接口设备（，缩写HID，直译为人类接口设备）也常被称为人体学输入设备，是一类与人类直接交互的计算机设备，它通常提供一种人类可用的输入方法，以及可能将输出信息传递给人类。术语“HID”一般指标准。该术语由微软的Mike Van Flandern提出，他提议USB委员会创建一个“人体学输入设备”（Human Input Device）类工作组。该工作组后被更名“人体学接口设备”（Human Interface Device）类，

HID标准 
HID标准的设立主要是为革新PC输入设备和简化安装此类设备的流程。在HID概念引入前，设备通常要符合为鼠标、键盘和控制杆严格定义的协议。例如，标准的鼠标协议支持相对的X和Y轴数据，以及最多两个按钮的二进制输入，没有其他支持。所有硬件创新必须重载现有的协议数据，或者创建自定义的设备驱动程序并为开发者提供新的协议。与此相反，所有HID定义的设备驱动程序提供可包含任意数量数据类型和格式的自我描述包。计算机上的单个HID驱动程序就可以解析数据和实现数据I/O与应用程序功能的动态关联。这加快了创新和发展，使人类接口设备的类型、功能更加丰富、多样化。

多个著名企业代表组成的工作委员会开发了HID标准。参与者名单列在“Device Class Definition for Human Interface Devices (HID)”文档中。一个自描述可扩展协议的概念最初来自Mike Van Flandern和在微软与Steve McGowan的“Raptor”项目工作期间，他们在Forte工作期间研究用于的设备协议。在消费者游戏大会交换意见后，Steve和Mike同意就新生的通用串行总线（USB）标准合作。

HID协议有其局限性，但所有现代主流操作系统都识别标准USB HID设备（例如键盘和鼠标），而无需专门的驱动程序。在设备安装时，屏幕上可能呈现“一个‘HID兼容设备’已安装”消息。相较而言，此消息一般不会在设备使用通过USB连接的PS/2 6针DIN连接器连接时出现。 PS/2通常不支持即插即用，这意味着连接PS/2键盘或鼠标到计算机不一定能正常工作，并有可能损害计算机主板。同样的，PS/2标准不支持HID协议。描述了USB HID。

HID协议的组件 
HID协议中有两个实体：主机（host）和设备（device）。设备是直接与人类交互的实体，例如键盘或鼠标；主机则是负责与设备通信并接收人类在设备上输入的数据。输出数据则是主机传送给设备，设备再展现给人类。最常见的主机就是PC，但有些手机和PDA也可作为主机。

HID协议使得设备的实现非常简单。设备定义它们的数据包，然后向主机呈递“HID描述符”。HID描述符是描述设备的数据包的硬编码字节数组，其中包括：设备支持多少个数据包，数据包大小，以及数据包中各个字节和位元的目的。例如，计算器程序的键盘按钮可以告诉主机，该按钮的​​按压/松开状态被存储为数据包4号中第6个字节中的第2位元（注意：这些位置仅为说明目的，并且依设备而不同）。设备通常将HID描述符存储在ROM中，并且不需要本质上理解或解析HID描述符。目前市场上的一些鼠标和键盘硬件仅使用8位CPU来实现。

主机的预期是比设备更复杂的实体。主机需要检索来自设备的HID描述符，并需要解析它才可以与设备进行完全通信。解析HID描述符可能很复杂。已知有多个操作系统的负责解析HID描述符的驱动程序在发布给公众几年后被发现存在缺陷。但是，这种复杂性也成就了HID设备的快速创新。

上述机制描述了什么是HID“报告协议”。因为可以理解并非所有主机都能够解析HID描述符，HID还定义了“引导协议”（boot protocol）。因为引导协议中使用固定的数据包格式，所以只支持特定功能的特定设备。在该模式中不使用HID描述符，因此创新是有限的，但好处是可以在无法支持HID的主机上仍可实现有限的功能。引导协议中支持设备只有：
 键盘 – 定义在HID使用表中的前256个键盘代码，使用页7可以由键盘使用引导协议报告，但大多数系统只处理这些键的子集。大多数系统支持布局上的全部104个按键，以及为Microsoft Windows 95的额外三个按键（左侧和右侧Windows键，以及一个菜单键）。许多系统还支持基本的西方附加键——欧洲105-、韩国106-、巴西ABNT 107，以及日本DOS/V 109键布局。没有被报告的按钮、旋钮和按键将不可用。例如通用的美式键盘的QWERTY键将有效，而定制化的计算器、注销登录等按键将无效，因为它们在页12上定义，并且不能在引导协议中报告。
 鼠标只有X轴、Y轴和前3个按钮可用。鼠标上的任何额外功能将不可用。
引导模式的一个常见用法是在计算机刚刚启动时使用。直接配置计算机的BIOS通常只能用引导模式完成。有时会出现一条消息，通知用户该设备已经安装正确的驱动程序，并且现在可以使用。

设备的HID定义 
根据HID标准，一个设备在其报告模式期间描述作为控制器集或者控制器组。

其他使用HID的协议 
HID最初定义为通过USB，但它现在也可使用在其他计算机通信总线。允许传统上只支持USB的HID设备能用在其他总线上是为现有的USB HID设备可以更快适配，而不必重新发明新协议以支持鼠标、键盘和其他设备。已知使用HID的总线有：
 蓝牙HID – 通过蓝牙连接的鼠标和键盘
 串行HID – 用于微软的Windows媒体中心PC遥控接收器。
 ZigBee输入设备 – ZigBee（RF4CE）通过“ZigBee输入设备规范”支持HID设备。
 基于I²C的HID – 用于Microsoft Windows 8中的嵌入式设备
 HOGP（基于GATT的HID） – 使用蓝牙低功耗技术连接的HID设备

参见 
 
 人机交互
 
 
 Linux桌面
 外部设备

参考资料 

 HID developers forum, USB.org
 HID Device Class Definition 1.11 Specification, USB.org
 , USB.org

人機互動