USB HID
USB HID (human interface device) class — класс устройств USB для взаимодействия с человеком. Этот класс включает в себя такие устройства как клавиатура, мышь, игровой контроллер. Класс USB HID определен в нескольких документах, предоставляемых USB Implementers Forum, в частности, Рабочей группой по работе с устройствами.
Основной документ с дескрипторами класса: Device Class Definition for HID 1.11. В отдельных документах публикуются т. н. usage tables — списки кодов функций различных устройств ввода-вывода.[1]
Устройства
Класс USB HID описывает устройства, которые используются практически в каждом современном компьютере. В нём существует множество предопределённых функций. Они позволяют производителям аппаратного обеспечения разрабатывать продукты, соответствующие спецификации USB HID, и ожидать, что они будут работать с любым программным обеспечением, которое также поддерживает эти спецификации.
Точно такой же HID-протокол используется неизменённым в Bluetooth, в профиле взаимодействия с пользователем.[2] При чтении спецификации HID-профиля Bluetooth читателей просто направляют к документации USB HID. По этой причине эти устройства можно также отнести к классу USB HID.
Клавиатуры
Клавиатуры — одни из наиболее популярных USB HID устройств. USB HID клавиатуры, как правило, имеют входной поток данных, который передаёт нажатия клавиш в компьютер и выходной поток, который передаёт текущий статус клавиатурных индикаторов от компьютера к клавиатуре. Стандарт PC 97 определяет, что BIOS компьютера должен определять USB HID клавиатуры и работать с ними. Стандарт разработан для того, чтобы эти клавиатуры возможно было использовать во время загрузки компьютера.
Мышь
Компьютерная мышь — столь же популярное USB HID устройство, как и клавиатура. USB-мыши различаются по функциональности от простых однокнопочных до довольно сложных многокнопочных устройств. Большинство современных операционных систем поставляется с драйверами для стандартных HID мышей (наиболее распространённые современные мыши имеют две кнопки и колёсико, которое дублирует третью кнопку); мыши с более широким возможностями требуют драйверов от производителей.
Игровые контроллеры
Современные игровые контроллеры и джойстик, игровой руль часто являются USB HID устройствами. В отличие от устройств, которые подключаются через игровой порт, USB HID устройства обычно не требуют драйверов для нормальной работы. Почти все игровые устройства будут работать с использованием встроенных драйверов, поскольку они разрабатываются с использованием USB HID спецификаций.
Другие устройства
Помимо детальных спецификаций классических устройств ввода (типа клавиатур и мышек) стандарт HID определяет особый класс устройств без детальных спецификаций. Этот класс именуется USB HID Consumer Control и представляет по сути нерегламентированный канал связи с устройством. При этом устройство пользуется теми же стандартными для операционной системы драйверами что и мышка с клавиатурой. Таким образом можно создать USB устройство которое не требует создания и инсталляции специальных драйверов в большинстве распространенных компьютерных операционных систем.
Этим стали массово пользоваться, и появилось огромное количество устройств, которые, по сути, интерфейсами взаимодействия с человеком не являются. Например, телефонное устройство, термометр, устройство управления аудио и медицинское оборудование. Даже ИБП (источники бесперебойного питания) определяют себя, как принадлежащие классу USB HID, несмотря на то, что они часто не имеют человеческого интерфейса вообще. Любое устройство может принадлежать к USB HID классу, если оно удовлетворяет логическим спецификациям HID Consumer Control.
Драйверы
Одно из преимуществ хорошо определенной спецификации, такой, как USB HID — это обилие драйверов устройств, доступных в большинстве современных операционных систем. USB HID класс и его базовые функции описаны в USB-IF документации, без какой-либо привязки к конкретному программному обеспечению. Из-за таких общих описаний разработчикам операционных систем легко включить функциональные драйверы для таких устройств как клавиатура, мышь и другие устройства взаимодействия с пользователем. Включение основных драйверов способствует более быстрому распространению этих устройств и упрощению установки конечными пользователями.
Логические спецификации
Функциональные характеристики
Примечательно то, что USB HID может быть использован как для описания работы самого устройства, так и для описания интерфейса устройства. Например, вполне допустимым будет использование USB устройства, имеющего два различных USB интерфейса одновременно (например, USB-телефон может использовать HID клавиатуру и USB аудио устройство для микрофона).
Интерфейс устройств также снабжен особым дескриптором, который определяет, является ли устройство загрузочным. Загрузочное устройство, строго соответствующее минимальным требованиям протокола, будет распознано и загружено BIOS. Каждый USB HID интерфейс связывается с хостом с использованием функции управления или функции прерывания.