Открыть сервис

Human Interface Device

Human Interface Device (HID, с англ. — «устройство человеческого интерфейса») — это класс устройств ввода-вывода, предназначенных для взаимодействия человека с компьютером или другим электронным устройством. HID-устройства передают команды от пользователя системе или предоставляют пользователю обратную связь, преобразуя физические действия (нажатие клавиш, движение мыши, касание экрана, голосовые команды) в цифровые сигналы, понятные машине. Термин закреплён в спецификации USB HID, разработанной консорциумом USB Implementers Forum (USB-IF), и является стандартом для большинства современных периферийных устройств.

История

Предпосылки и ранние устройства

До появления стандарта HID устройства ввода (клавиатуры, мыши, джойстики) подключались к компьютерам через специализированные порты (PS/2, последовательный порт, игровой порт) и требовали уникальных драйверов для каждой модели. Производители операционных систем и аппаратного обеспечения сталкивались с проблемой совместимости: каждое новое устройство нуждалось в отдельной поддержке на уровне ядра ОС. В 1990-х годах, с распространением универсальной последовательной шины (USB), возникла необходимость в едином протоколе для периферийных устройств.

Разработка стандарта USB HID

В 1996 году, с выходом спецификации USB 1.0, консорциум USB-IF опубликовал первую версию документа «Device Class Definition for Human Interface Devices» (HID 1.0). Целью стандарта было создание универсального интерфейса, позволяющего устройствам ввода сообщать о своих возможностях (набор кнопок, оси, датчики) без необходимости написания специализированных драйверов. Операционная система, получив HID-дескриптор от устройства, могла автоматически определить его функциональность и назначить стандартный драйвер.

Эволюция и распространение

Стандарт HID быстро стал доминирующим для USB-периферии. В 2000-х годах он был адаптирован для беспроводных интерфейсов (Bluetooth HID, Bluetooth LE HID). В 2010-х годах HID-протокол начал использоваться в сенсорных экранах, геймпадах, пультах дистанционного управления, фитнес-трекерах и даже в промышленных пультах. К 2020-м годам HID-устройства составляют подавляющее большинство потребительских устройств ввода, поддерживаемых всеми основными операционными системами (Windows, macOS, Linux, Android, iOS).

Классификация

По типу интерфейса подключения

  • Проводные HID-устройства — подключаются через USB (Type-A, Type-C, Micro-USB) или через специализированные порты (PS/2, но с использованием HID-протокола на уровне драйвера). Примеры: проводные клавиатуры, мыши, веб-камеры.
  • Беспроводные HID-устройства — используют Bluetooth (классический или Low Energy), радиоканал (2,4 ГГц с собственным приёмником), Wi-Fi (реже) или инфракрасный порт. Примеры: беспроводные мыши, клавиатуры, геймпады, пульты ДУ.

По функциональному назначению

  • Устройства ввода — передают данные от пользователя к системе. Включают клавиатуры, мыши, трекболы, сенсорные панели (тачпады), джойстики, геймпады, рули, сканеры штрих-кодов, считыватели отпечатков пальцев, микрофоны (в некоторых реализациях).
  • Устройства вывода — передают информацию от системы к пользователю через тактильную или звуковую обратную связь. Примеры: вибромоторы в геймпадах, тактильные дисплеи, звуковые индикаторы.
  • Комбинированные устройства — совмещают функции ввода и вывода. Примеры: сенсорные экраны (тачскрины), графические планшеты с пером, гарнитуры виртуальной реальности (VR), контроллеры для VR.

По типу передаваемых данных

  • Клавиатурные HID — передают скан-коды клавиш (Keycodes) и модификаторы (Ctrl, Shift, Alt).
  • Указательные HID — передают данные о перемещении (относительное или абсолютное) и нажатиях кнопок. Примеры: мыши, трекболы, сенсорные панели.
  • Игровые HID — передают данные с аналоговых осей (джойстики, триггеры), кнопок, переключателей и датчиков (гироскопы, акселерометры). Примеры: геймпады, рули, джойстики.
  • Сенсорные HID — передают данные о касании (координаты, давление, количество пальцев). Примеры: тачпады, сенсорные экраны.
  • Специализированные HID — передают данные от датчиков (температура, влажность, освещённость) или биометрических сенсоров (пульс, ЭКГ). Примеры: фитнес-трекеры, умные часы.

Устройство и протокол

Аппаратная часть

HID-устройство состоит из:

  • Сенсоров и механизмов ввода — кнопки, клавиши, датчики движения (оптические, лазерные, ёмкостные), аналоговые оси (потенциометры, датчики Холла), гироскопы, акселерометры.
  • Микроконтроллера — обрабатывает сигналы с сенсоров, формирует HID-отчёты (reports) и управляет передачей данных по шине.
  • Интерфейсного модуля — USB-контроллер, Bluetooth-чип или радиомодуль, обеспечивающий физическое подключение к хосту.
  • Питания — проводное (USB-шина) или автономное (батареи, аккумуляторы).

Программная часть (протокол)

Стандарт HID определяет:

  • HID-дескриптор (Report Descriptor) — бинарный файл, описывающий структуру данных, которые устройство будет отправлять хосту. Дескриптор содержит информацию о типах элементов (кнопки, оси, датчики), их количестве, диапазоне значений и логике работы. Хост (операционная система) считывает дескриптор при подключении устройства и на его основе интерпретирует входящие отчёты.
  • HID-отчёты (Reports) — пакеты данных фиксированной длины, которые устройство отправляет хосту (Input Report) или получает от хоста (Output Report). Отчёты содержат текущие состояния всех элементов (например, нажата ли кнопка, положение оси).
  • HID-классы — стандартизированные наборы дескрипторов для распространённых типов устройств (клавиатура, мышь, джойстик). Это позволяет операционной системе использовать общие драйверы (например, hidclass.sys в Windows или usbhid в Linux).

Поддержка в операционных системах

Все современные ОС имеют встроенные HID-драйверы:

  • Windows — драйвер hidclass.sys и hidusb.sys (для USB), hidbth.sys (для Bluetooth). Поддерживает HID 1.11 и HID 2.0 (для сенсорных устройств).
  • macOS — драйвер IOHIDFamily и IOHIDSystem. Поддерживает HID 1.11.
  • Linux — драйвер usbhid (в ядре), hid-generic и специализированные драйверы (hid-multitouch, hid-playstation). Поддерживает HID 1.11 и HID 2.0.
  • Android — драйвер hid (в ядре), поддержка HID через USB и Bluetooth.
  • iOS — поддержка HID через Bluetooth LE (для клавиатур, геймпадов).

Применение

Персональные компьютеры

HID-устройства являются основным способом взаимодействия с ПК:

  • Клавиатуры — ввод текста, команд, горячих клавиш.
  • Мыши — управление курсором, нажатие кнопок, прокрутка.
  • Тачпады — управление курсором на ноутбуках.
  • Веб-камеры — передача видео (часто реализуются как HID-устройства для управления параметрами, например, зумом).

Игровая индустрия

Игровые контроллеры — крупнейший сегмент HID-устройств после клавиатур и мышей:

  • Геймпады (Xbox, PlayStation, Nintendo Switch) — используют HID-протокол для передачи данных о кнопках, аналоговых стиках, триггерах, гироскопе.
  • Рули и педали — симуляторы вождения.
  • Джойстики — для авиасимуляторов и космических симуляторов.
  • VR-контроллеры — отслеживание положения рук в пространстве.

Мобильные устройства

  • Сенсорные экраны — работают как HID-устройства (Multi-Touch HID).
  • Стилусы — передают давление, наклон, вращение.
  • Фитнес-трекеры и умные часы — передают данные о пульсе, шагах, жестах.

Промышленность и медицина

  • Сканеры штрих-кодов — эмулируют ввод с клавиатуры (HID Keyboard).
  • Считыватели RFID/NFC — передают идентификационные данные.
  • Медицинские пульты — управление оборудованием (рентген, УЗИ).
  • Промышленные пульты — управление станками, роботами.

Критика и ограничения

Задержки (Latency)

HID-протокол, особенно через USB, может вносить задержки (до 8 мс при стандартном polling rate 125 Гц). Для игр и профессионального ввода (например, в киберспорте) это критично. Производители решают проблему увеличением polling rate до 1000 Гц (1 мс) и использованием специализированных протоколов (например, Razer Hyperspeed, Logitech Lightspeed).

Ограниченная пропускная способность

HID-отчёты имеют фиксированную длину (обычно до 64 байт). Для устройств с большим количеством датчиков (например, VR-контроллеры с 20+ датчиками) этого может быть недостаточно, что требует использования нескольких HID-интерфейсов или перехода на более производительные протоколы (USB 3.0, Bluetooth 5.0).

Совместимость с устаревшими системами

Старые операционные системы (Windows 9x, ранние версии Linux) не поддерживают HID-протокол, что требует установки драйверов от производителя. В современных системах эта проблема решена.

Безопасность

HID-устройства могут быть использованы для атак: вредоносное устройство (например, USB Rubber Ducky) эмулирует клавиатуру и вводит команды от имени пользователя. Для защиты используются системы проверки подлинности (например, HID Guard) и аппаратные фильтры.

Интересные факты

  • Стандарт HID поддерживает до 255 кнопок на одном устройстве, что позволяет создавать специализированные клавиатуры для программистов или геймеров.
  • Первое HID-устройство, выпущенное в массовое производство, — мышь Microsoft IntelliMouse (1996 год).
  • В 2020-х годах HID-протокол начал использоваться для управления бытовой техникой (умные колонки, пульты для телевизоров).
  • Спецификация HID 2.0 (2015 год) добавила поддержку сенсорных экранов с мультитач и тактильной обратной связи.

Источники

  • USB Implementers Forum. «Device Class Definition for Human Interface Devices (HID)», версия 1.11, 2001.
  • USB Implementers Forum. «HID Usage Tables», версия 1.12, 2004.
  • Microsoft Corporation. «HID Architecture», документация Windows Driver Kit, 2023.
  • Linux Kernel Documentation. «HID subsystem», файл Documentation/hid/hid.rst, 2023.
  • Bluetooth SIG. «Bluetooth HID Profile», версия 1.1, 2019.
  • Tanenbaum, A. S. «Computer Networks», 5-е издание, Pearson, 2010 (глава 5: USB и HID).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →