人体学接口设备(英语:Human interface device,缩写HID,直译为人类接口设备)也常被称为人体学输入设备,是一类与人类直接交互的计算机设备,它通常提供一种人类可用的输入方法,以及可能将输出信息传递给人类。术语“HID”一般指USB-HID(英语:USB human interface device class)标准。该术语由微软的Mike Van Flandern提出,他提议USB委员会创建一个“人体学输入设备”(Human Input Device)类工作组。该工作组后被更名“人体学接口设备”(Human Interface Device)类,因为DEC的Tom Schmidt建议:所提出的标准支持双向通信。
HID输出设备
常用HID
不常用HID
HID标准的设立主要是为革新PC输入设备和简化安装此类设备的流程。在HID概念引入前,设备通常要符合为鼠标、键盘和控制杆严格定义的协议。例如,标准的鼠标协议支持相对的X和Y轴数据,以及最多两个按钮的二进制输入,没有其他支持。所有硬件创新必须重载现有的协议数据,或者创建自定义的设备驱动程序并为开发者提供新的协议。与此相反,所有HID定义的设备驱动程序提供可包含任意数量数据类型和格式的自我描述包。计算机上的单个HID驱动程序就可以解析数据和实现数据I/O与应用程序功能的动态关联。这加快了创新和发展,使人类接口设备的类型、功能更加丰富、多样化。
多个著名企业代表组成的工作委员会开发了HID标准。参与者名单列在“Device Class Definition for Human Interface Devices (HID)”文档中。一个自描述可扩展协议的概念最初来自Mike Van Flandern和Manolito Adan(英语:Manolito Adan)在微软与Steve McGowan的“Raptor”项目工作期间,他们在Forte工作期间研究用于访问总线(英语:Access Bus)的设备协议。在消费者游戏大会交换意见后,Steve和Mike同意就新生的通用串行总线(USB)标准合作。
HID协议有其局限性,但所有现代主流操作系统都识别标准USB HID设备(例如键盘和鼠标),而无需专门的驱动程序。在设备安装时,屏幕上可能呈现“一个‘HID兼容设备’已安装”消息。相较而言,此消息一般不会在设备使用通过USB连接的PS/2 6针DIN连接器连接时出现。 PS/2通常不支持即插即用,这意味着连接PS/2键盘或鼠标到计算机不一定能正常工作,并有可能损害计算机主板。同样的,PS/2标准不支持HID协议。USB人类接口设备类(英语:USB human interface device class)描述了USB 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的主机上仍可实现有限的功能。引导协议中支持设备只有:
引导模式的一个常见用法是在计算机刚刚启动时使用。直接配置计算机的BIOS通常只能用引导模式完成。有时会出现一条消息,通知用户该设备已经安装正确的驱动程序,并且现在可以使用。
根据HID标准,一个设备在其报告模式期间描述作为控制器集或者控制器组。
HID最初定义为通过USB,但它现在也可使用在其他计算机通信总线。允许传统上只支持USB的HID设备能用在其他总线上是为现有的USB HID设备可以更快适配,而不必重新发明新协议以支持鼠标、键盘和其他设备。已知使用HID的总线有: