Устройство человеческого интерфейса
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2014 г. ) |
Устройство пользовательского интерфейса или HID — это тип компьютерного устройства, обычно используемого людьми, которое принимает входные данные или предоставляет выходные данные людям.
Термин «HID» чаще всего относится к спецификации USB HID . Этот термин был придуман Майком Ван Фландерном из Microsoft , когда он предложил комитету USB создать рабочую группу по классу устройств ввода данных. [ когда? ] Рабочая группа была переименована в класс Human Interface Device по предложению Тома Шмидта из DEC , поскольку предлагаемый стандарт поддерживал двустороннюю связь. [ когда? ]
HID для вывода | |
Общие HID | |
Менее распространенные HID | |
|
HID-стандарт
[ редактировать ]Стандарт HID был принят в первую очередь для обеспечения инноваций в ПК устройствах ввода и упрощения процесса установки таких устройств. До появления концепции HID устройства обычно соответствовали строго определенным протоколам для мыши , клавиатуры и джойстиков ; например, стандартный протокол мыши в то время поддерживал относительные данные по осям X и Y и двоичный ввод для двух кнопок без устаревшей поддержки. Все аппаратные инновации требовали либо чрезмерного использования данных в существующем протоколе, либо создания собственных драйверов устройств и пропаганды нового протокола среди разработчиков. Напротив, все устройства, определяемые HID, предоставляют пакеты с самоописанием, которые могут содержать любое количество типов и форматов данных. Один HID-драйвер на компьютере анализирует данные и обеспечивает динамическую связь ввода-вывода данных с функциональностью приложения, что обеспечивает быстрые инновации и разработки, а также значительное разнообразие новых устройств с человеческим интерфейсом.
Рабочий комитет, в состав которого вошли представители нескольких известных компаний, разработал стандарт HID. Список участников отображается в «Определении класса устройства для устройств пользовательского интерфейса (HID)». [1] документ. Идея самоописываемого расширяемого протокола первоначально возникла у Майка Ван Фландерна и Манолито Адана во время работы над проектом под названием «Raptor» в Microsoft и независимо от Стива Макгоуэна, который работал над проектом «SIM», определявшим протокол устройства для гарнитуру виртуальной реальности VFX1 и ее периферийные устройства на базе ACCESS.bus в компании Forte Technologies. SIM также была самоописывающейся и расширяемой, однако она больше ориентирована на устройства симуляции, используемые для виртуальной реальности и захвата движения. После сравнения результатов на конференции разработчиков потребительских игр Стив и Майк договорились о совместной работе над новым стандартом для новой универсальной последовательной шины (USB).
До появления HID (около 1995 г.) проприетарные драйверы необходимо было устанавливать практически для каждого устройства, подключенного к ПК. Это означало, что поставщикам устройств необходимо было отслеживать выпуски ОС и регулярно предлагать обновленные драйверы для своих устройств, а также разрабатывать драйверы для каждой ОС, которую они хотели поддерживать. Кроме того, в то время любые новые устройства, например джойстики , предназначенные для авиасимуляторов, с дополнительными кнопками или крестовинами , требовали программной поддержки не только со стороны водителя, но и со стороны каждой игры, которая их поддерживала, для включения новых элементов управления. Это означало, что разработчики устройств несли дополнительную ответственность за поддержку каждой игры, которую они хотели поддерживать. Возможность HID-устройства описывать себя через дескриптор отчета отделила разработчиков аппаратных устройств от разработчиков игр. Концепция дескриптора отчета также означала, что поставщики ОС могли написать драйвер HID (Parser), который мог бы работать практически с любым HID-устройством, которое мог придумать поставщик, без необходимости писать или поддерживать драйвер для каждой ОС, которую он хотел поддерживать.
Таким образом, класс HID отделил поставщиков устройств от производителей игр и ОС, что позволило поставщикам устройств быстрее внедрять инновации и сократить затраты на разработку (например, отсутствие драйверов или поддержки разработчиков игр). Документ «Таблица использования HID» определяет тысячи элементов управления, которые могут быть представлены устройствами HID. Поставщики игр могут запросить анализатор HID ОС, чтобы идентифицировать набор элементов управления, представленных устройством, а затем сопоставить эти элементы управления с функциями своей игры. С момента своего первоначального выпуска в документ HID Usage Table (HUT) были добавлены сотни новых вариантов использования.
Протокол HID имеет свои ограничения, но все современные основные операционные системы распознают стандартные USB-устройства HID, такие как клавиатуры и мыши, без необходимости использования специального драйвера. Однако его универсальность подтверждается тем фактом, что он не обновлялся более 22 лет и до сих пор поддерживается всеми выпускаемыми сегодня ПК, планшетами и мобильными телефонами. Устройства USB, а значит и HID, можно подключать в горячем режиме, поэтому после установки на экране обычно появляется сообщение о том, что «HID-совместимое устройство распознано». Для сравнения, это сообщение обычно не появлялось для устройств, подключенных через PS/2 6-контактные разъемы DIN , которые предшествовали USB. PS/2 обычно не поддерживает технологию Plug-and-Play , а это означает, что подключение клавиатуры или мыши PS/2 к включенному компьютеру не всегда работает и может представлять опасность для материнской платы компьютера. Аналогично, стандарт PS/2 не поддерживал протокол HID. Класс устройства USB-интерфейса описывает USB HID.
Протокол HID (дескриптор отчета и механизм отчета) реализован на многих шинах, кроме USB, включая Bluetooth и I2C .
Существует также ряд расширений HID, определенных в «Документах таблицы интегрированного использования HID», включая источники бесперебойного питания , элементы управления видеомониторами , устройства для торговых точек , игровые автоматы и игровые автоматы .
Дескриптор отчета
[ редактировать ]Дескриптор отчета предоставляет сообщения, которые генерируются или принимаются устройством HID. Каждое сообщение называется «Отчетом». Отчеты могут определять биты/элементы управления в устройстве, которые можно читать или записывать, или генерировать периодически, чтобы держать хост в курсе текущего состояния устройства. Например, мышь обычно генерирует отчет 200 раз в секунду, чтобы информировать хост о любом движении или нажатии кнопок. Дескрипторы отчетов «битово-ориентированы», что означает, что элементы управления могут представлять от 1 до 32 битов информации. Каждый элемент управления, определенный в дескрипторе отчета, имеет идентификатор и определяет его размер и положение в своем отчете. Дескриптор отчета может определять множество отчетов, каждый из которых сообщает свой набор или комбинацию информации.
Например, базовая мышь определяет 3-байтовый отчет, в котором наименее значимый (0) бит отчета — это левая кнопка, следующий (1) бит — это средняя кнопка, а третий (2) бит — правая кнопка. Чтобы 8-битные координаты положения X и Y мыши могли удобно располагаться на границах байтов, определяется 5-битная «площадка». Затем координата X определяется как 8-битное относительное значение (т. е. количество «микки» со времени предыдущего отчета), которое находится в битовых позициях с 8 по 15, а координата Y определяется как 8-битное относительное значение, которое находится в битовых позициях с 16 по 24, в результате чего формируется пакет данных, который представляется хосту.
Дескриптор отчета чрезвычайно универсален, позволяя устройству указывать разрешение, диапазон и многие другие характеристики каждого элемента управления, который он представляет. Будучи разработанным в то время, когда контроллеру мыши или клавиатуры посчастливилось иметь 1 КБ ПЗУ для всего его кода и данных, синтаксис дескриптора отчета имеет множество функций, которые позволяют минимизировать его размер, например, выбранные параметры управления могут сохраняться в нескольких определениях управления. , которые необходимо переобъявить только в случае изменения их значения. Отчеты, создаваемые базовой мышью, можно описать в 50 байтах, а клавиатурой 104 — в 65 байтах.
Физический дескриптор
[ редактировать ]Малоизвестная или понятная особенность HID — это физический дескриптор. Физический дескриптор используется для определения частей человеческого тела, которые взаимодействуют с отдельными элементами управления, определенными в дескрипторе отчета. При управлении игрой указательный и большой пальцы обычно используются для вызова повторяющихся действий. Поскольку считается, что эти пальцы имеют самую быструю реакцию «подергивания», их обычно используют для нажатия на спусковой крючок пистолета или активации часто используемой игровой функции. Физический дескриптор позволяет производителю устройства определить, какие пальцы лежат на каждом элементе управления, и определить приоритетность набора элементов управления, к которым может добраться отдельный палец. Эта функция позволяет поставщику игры разумно представить наилучшее расположение кнопок по умолчанию даже для устройства, которого не существовало на момент разработки игры. Физический дескриптор также позволяет представить информацию о захвате движения всего тела с помощью HID-устройства, т.е. угол, ориентацию, относительное или абсолютное положение любого сустава в человеческом теле. А через дескриптор отчета данные захвата движения могут быть представлены в любом разрешении, которое может поддерживать устройство.
Компоненты протокола HID
[ редактировать ]В протоколе HID есть два объекта: «хост» и «устройство». Устройство — это объект, который напрямую взаимодействует с человеком, например клавиатура или мышь. Хост связывается с устройством и получает от устройства входные данные о действиях, совершаемых человеком. Выходные данные передаются от хоста к устройству, а затем к человеку. Наиболее распространенным примером хоста является ПК , но некоторые сотовые телефоны и КПК также могут быть хостами.
Протокол HID упрощает внедрение устройств. Устройства определяют свои пакеты данных, а затем предоставляют хосту «дескриптор HID». Дескриптор HID представляет собой жестко запрограммированный массив байтов, описывающий пакеты данных устройства. Сюда входит: сколько пакетов поддерживает устройство, размер пакетов и назначение каждого байта и бита в пакете. Например, клавиатура с кнопкой программы калькулятора может сообщить хосту, что состояние нажатой/отпущенной кнопки сохраняется как 2-й бит 6-го байта пакета данных номер 4 (примечание: эти местоположения являются лишь иллюстративными и зависят от устройства). . Устройство обычно хранит дескриптор HID в ПЗУ и не требует внутреннего понимания или анализа дескриптора HID. Некоторое оборудование для мышей и клавиатур, представленное сегодня на рынке, реализовано с использованием только 8-битного процессора .
Ожидается, что хост будет более сложным объектом, чем устройство. Хосту необходимо получить дескриптор HID от устройства и проанализировать его, прежде чем он сможет полноценно взаимодействовать с устройством. Анализ дескриптора HID может оказаться сложным. Известно, что многие операционные системы содержали ошибки в драйверах устройств, отвечающих за анализ дескрипторов HID, спустя годы после того, как драйверы устройств были первоначально выпущены для общественности. Однако эта сложность является причиной того, что быстрые инновации с помощью HID-устройств возможны.
Вышеупомянутый механизм описывает так называемый «протокол отчета» HID. Поскольку было понятно, что не все хосты смогут анализировать дескрипторы HID, HID также определяет «протокол загрузки». В протоколе загрузки поддерживаются только определенные устройства с определенными функциями, поскольку используются фиксированные форматы пакетов данных. Дескриптор HID в этом режиме не используется, поэтому инновации ограничены. Однако преимущество состоит в том, что минимальная функциональность по-прежнему возможна на хостах, которые в противном случае не смогли бы поддерживать HID. В протоколе загрузки поддерживаются только устройства:
- Клавиатура — любой из первых 256 кодов клавиш («Использование»), определенных в таблицах использования HID, страница «Использование» 7 может сообщаться с клавиатуры с использованием протокола загрузки, но большинство систем обрабатывают только подмножество этих клавиш. Большинство систем поддерживают все 104 клавиши раскладки IBM AT-101 , а также три дополнительные клавиши, разработанные для Microsoft Windows 95 (левая и правая клавиши Windows и клавиша меню ). Многие системы также поддерживают дополнительные клавиши в основных западноевропейских 105-клавишных, корейских 106-клавишных, бразильских 107-клавишных раскладках ABNT и японских 109-клавишных раскладках DOS/V. Кнопки, ручки и клавиши, которые не указаны на странице использования 7, недоступны. Например, клавиши QWERTY определенной американской клавиатуры будут работать, а клавиши «Калькулятор» и «Выход из системы» — нет, поскольку они определены на странице «Использование» 12 и не могут быть указаны в протоколе загрузки.
- Мышь — будут доступны только ось X, ось Y и первые 3 кнопки. Любые дополнительные функции мыши работать не будут.
Режим загрузки обычно используется в первые моменты загрузки компьютера. компьютера Непосредственная настройка BIOS часто выполняется только с использованием режима загрузки. Иногда появляется сообщение, информирующее пользователя о том, что на устройстве установлен правильный драйвер и теперь его можно использовать.
Определение устройства
[ редактировать ]Согласно спецификации HID, в режиме отчета устройство описывается как набор элементов управления или группа элементов управления. Элементы управления соответствуют полю, содержащему данные, и другому полю, содержащему тег использования. Каждый тег использования описан в спецификации, так как конструктор предложил использовать данные, описанные в режиме отчета.
The
— это приложение для Windows, которое можно использовать для создания всех дескрипторов, связанных с устройством HID (см. ссылку ниже). Он выполняет проверку синтаксиса и может генерировать заголовки C, C и двоичные файлы для дескрипторов HID. Его текстовые файлы определения таблицы использования также можно легко расширить для определения собственных использований (типов управления) или таблиц использования (набора использований, связанных с устройством или функцией).Другие протоколы, использующие HID
[ редактировать ]Начиная с первоначального определения HID через USB, HID теперь также используется в других шинах компьютерной связи . Это позволяет HID-устройствам, которые традиционно использовались только на USB, также использоваться на альтернативных шинах. Это сделано потому, что существующую поддержку USB HID-устройств обычно можно адаптировать гораздо быстрее, чем изобретать совершенно новый протокол для поддержки мыши, сенсорной панели, клавиатуры и т.п. Известные автобусы, использующие HID:
- Bluetooth HID – используется для мыши и клавиатуры, подключенных через Bluetooth.
- от Microsoft Serial HID - используется в приемниках дистанционного управления ПК с Windows Media Center .
- Устройство ввода Zigbee — Zigbee ( RF4CE ) поддерживает устройства HID через профиль устройства ввода Zigbee.
- HID через I²C — используется для встроенных устройств в Microsoft Windows 8. [2]
- HID через SPI — разработано Microsoft для более быстрой связи с фиксированными устройствами с меньшей задержкой. [3]
- HOGP (HID over GATT) – используется для устройств HID, подключенных с использованием технологии Bluetooth Low Energy.
См. также
[ редактировать ]- Рекомендации по человеческому интерфейсу
- Взаимодействие человека и компьютера
- Класс устройства USB-интерфейса пользователя
- Конструктор графического пользовательского интерфейса
- Линукс на рабочем столе
- Периферийное устройство
- Осязаемый пользовательский интерфейс
Ссылки
[ редактировать ]- ^ Определение класса устройства для устройств пользовательского интерфейса (HID): Спецификация встроенного ПО – окончательная версия от 30 января 1997 года . Форум разработчиков USB. 1997 год . Проверено 28 апреля 2014 г.
- ^ «HID через I2C» . Майкрософт . Проверено 19 января 2016 г.
- ^ «Введение в HID через SPI — драйверы Windows» . docs.microsoft.com . Проверено 06 сентября 2022 г.
Внешние ссылки
[ редактировать ]- Форум разработчиков HID , USB.org
- Спецификация определения класса устройства HID 1.11 , USB.org
- Таблицы использования HID 1.4. Спецификация , USB.org
- Документы по таблице интегрированного использования HID , USB.org
- Инструмент HID-дескрипторов , USB.org