stringtranslate.com

Устройство человеческого интерфейса

Устройство пользовательского интерфейса или HID — это тип компьютерного устройства, обычно используемого людьми, которое принимает входные данные или предоставляет выходные данные людям.

Термин «HID» чаще всего относится к спецификации USB HID . Этот термин был придуман Майком Ван Фландерном из Microsoft , когда он предложил комитету USB создать рабочую группу по классу устройств ввода данных. [ когда? ] Рабочая группа была переименована в класс устройств пользовательского интерфейса по предложению Тома Шмидта из DEC , поскольку предлагаемый стандарт поддерживает двустороннюю связь. [ когда? ]

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-совместимое устройство распознано». Для сравнения, это сообщение обычно не появлялось для устройств, подключенных через 6-контактные разъемы DIN PS/2 , которые предшествовали 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. В протоколе загрузки поддерживаются только устройства:

Режим загрузки обычно используется в первые моменты загрузки компьютера. Непосредственная настройка BIOS компьютера часто выполняется только с использованием режима загрузки. Иногда появляется сообщение, информирующее пользователя о том, что на устройстве установлен правильный драйвер и теперь его можно использовать.

Определение устройства

Согласно спецификации HID, в режиме отчета устройство описывается как набор элементов управления или группа элементов управления. Элементы управления соответствуют полю, содержащему данные, и другому полю, содержащему тег использования. Каждый тег использования описан в спецификации, так как конструктор предложил использовать данные, описанные в режиме отчета.

Инструмент HID Descriptor Tool (#Externallinks) — это приложение для Windows, которое можно использовать для создания всех дескрипторов, связанных с устройством HID (см. ссылку ниже). Он выполняет проверку синтаксиса и может генерировать заголовки C, C и двоичные файлы для дескрипторов HID. Его текстовые файлы определения таблицы использования также можно легко расширить для определения собственных использований (типов управления) или таблиц использования (набора использований, связанных с устройством или функцией).

Другие протоколы, использующие HID

Начиная с первоначального определения HID через USB, HID теперь также используется в других шинах компьютерной связи . Это позволяет HID-устройствам, которые традиционно использовались только на USB, также использоваться на альтернативных шинах. Это сделано потому, что существующую поддержку USB HID-устройств обычно можно адаптировать гораздо быстрее, чем изобретать совершенно новый протокол для поддержки мыши, сенсорной панели, клавиатуры и т.п. Известные автобусы, использующие HID:

Смотрите также

Рекомендации

  1. ^ Определение класса устройства для устройств пользовательского интерфейса (HID): Спецификация встроенного ПО – окончательная версия от 30 января 1997 г. Форум разработчиков USB. 1997 год . Проверено 28 апреля 2014 г.
  2. ^ «HID через I2C». Майкрософт . Проверено 19 января 2016 г.
  3. ^ «Введение в HID через SPI — драйверы Windows» . docs.microsoft.com . Проверено 06 сентября 2022 г.

Внешние ссылки