Введение
Компьютерное устройство, принимающее ввод от человека и выдающее вывод для человека.
A human interface device or HID is a type of computer device usually used by humans that takes input from or provides output to humans. The term "HID" most commonly refers to the USB HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group. The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi directional communication. HIDs for Output Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technologyCommon HIDs Keyboard and Refreshable braille display
Pointing devices: Mouse, Trackball, Touchpad, Pointing stick, Light pen
Touchscreen
Magnetic Stripe Reader
Graphics tablet
Joystick, Gamepad, Analog stick
Webcam
Fingerprint ScannerLess common HIDs Driving simulator devices and flight simulator devices: gear sticks, steering wheels, pedals
Wired glove (Nintendo Power Glove)
Dance pad
Wii Remote
Surface computing device
Apple's Sudden Motion Sensor device
Человеческое интерфейсное устройство (HID) – это тип компьютерного устройства, обычно используемого человеком, которое принимает ввод или предоставляет вывод для человека. Термин "HID" чаще всего относится к спецификации USB HID. Термин был придуман Майком Ван Фландерном из Microsoft, когда он предложил комитету USB создать рабочую группу класса "Устройство ввода от человека". Рабочая группа была переименована в класс "Человеческий интерфейс" по предложению Тома Шмидта из DEC, поскольку предлагаемый стандарт поддерживал двунаправленную связь.
A human interface device or HID is a type of computer device usually used by humans that takes input from or provides output to humans. The term "HID" most commonly refers to the USB HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group. The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi directional communication. HIDs for Output Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technologyCommon HIDs Keyboard and Refreshable braille display
Pointing devices: Mouse, Trackball, Touchpad, Pointing stick, Light pen
Touchscreen
Magnetic Stripe Reader
Graphics tablet
Joystick, Gamepad, Analog stick
Webcam
Fingerprint ScannerLess common HIDs Driving simulator devices and flight simulator devices: gear sticks, steering wheels, pedals
Wired glove (Nintendo Power Glove)
Dance pad
Wii Remote
Surface computing device
Apple's Sudden Motion Sensor device
HID для вывода:
Компьютерный монитор
Обновляемый брайлевский дисплей
Громкоговорители
Гарнитура
Хаптические технологии
A human interface device or HID is a type of computer device usually used by humans that takes input from or provides output to humans. The term "HID" most commonly refers to the USB HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group. The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi directional communication. HIDs for Output Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technologyCommon HIDs Keyboard and Refreshable braille display
Pointing devices: Mouse, Trackball, Touchpad, Pointing stick, Light pen
Touchscreen
Magnetic Stripe Reader
Graphics tablet
Joystick, Gamepad, Analog stick
Webcam
Fingerprint ScannerLess common HIDs Driving simulator devices and flight simulator devices: gear sticks, steering wheels, pedals
Wired glove (Nintendo Power Glove)
Dance pad
Wii Remote
Surface computing device
Apple's Sudden Motion Sensor device
Распространенные HID:
Клавиатура и обновляемый брайлевский дисплей
Устройства указания: мышь, трекбол, тачпад, трекпоинт, световое перо
Сенсорный экран
Считыватель магнитной полосы
Графический планшет
Джойстик, геймпад, аналоговый стик
Веб-камера
Сканер отпечатков пальцев
A human interface device or HID is a type of computer device usually used by humans that takes input from or provides output to humans. The term "HID" most commonly refers to the USB HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group. The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi directional communication. HIDs for Output Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technologyCommon HIDs Keyboard and Refreshable braille display
Pointing devices: Mouse, Trackball, Touchpad, Pointing stick, Light pen
Touchscreen
Magnetic Stripe Reader
Graphics tablet
Joystick, Gamepad, Analog stick
Webcam
Fingerprint ScannerLess common HIDs Driving simulator devices and flight simulator devices: gear sticks, steering wheels, pedals
Wired glove (Nintendo Power Glove)
Dance pad
Wii Remote
Surface computing device
Apple's Sudden Motion Sensor device
Менее распространенные HID:
Устройства симулятора вождения и авиасимулятора: рычаги переключения передач, рулевые колеса, педали
Проводная перчатка (Nintendo Power Glove)
Танцевальный коврик
Пульт Wii Remote
Устройство поверхностных вычислений
Датчик внезапного движения Apple (Sudden Motion Sensor)
A human interface device or HID is a type of computer device usually used by humans that takes input from or provides output to humans. The term "HID" most commonly refers to the USB HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group. The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi directional communication. HIDs for Output Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technologyCommon HIDs Keyboard and Refreshable braille display
Pointing devices: Mouse, Trackball, Touchpad, Pointing stick, Light pen
Touchscreen
Magnetic Stripe Reader
Graphics tablet
Joystick, Gamepad, Analog stick
Webcam
Fingerprint ScannerLess common HIDs Driving simulator devices and flight simulator devices: gear sticks, steering wheels, pedals
Wired glove (Nintendo Power Glove)
Dance pad
Wii Remote
Surface computing device
Apple's Sudden Motion Sensor device
Стандарт HID
Стандарт HID был принят прежде всего для стимулирования инноваций в устройствах ввода для ПК и упрощения процесса их установки. До появления концепции HID устройства обычно соответствовали строго определенным протоколам для мышей, клавиатур и джойстиков; например, стандартный протокол мыши того времени поддерживал относительные данные по осям X и Y и двоичный ввод для максимум двух кнопок, без поддержки устаревших устройств. Любые аппаратные инновации требовали либо перегрузки использования данных в существующем протоколе, либо создания пользовательских драйверов и продвижения нового протокола среди разработчиков. В отличие от этого, все устройства, соответствующие стандарту HID, предоставляют самоописываемые пакеты, которые могут содержать любое количество типов и форматов данных. Один HID-драйвер на компьютере анализирует данные и обеспечивает динамическое связывание ввода-вывода данных с функциональностью приложения, что позволило быстро внедрять инновации и развиваться, а также значительно расширить ассортимент новых устройств человеко-машинного интерфейса. Стандарт HID был разработан рабочим комитетом с участием представителей нескольких известных компаний. Список участников приведен в документе "Определение класса устройств для устройств с человеческим интерфейсом (HID)". Идея самоописываемого расширяемого протокола впервые возникла у Майка Ван Фландерна и Манолито Адана во время работы над проектом "Raptor" в Microsoft, а независимо от них – у Стива Макгоуэна, который работал над проектом "SIM", определившим протокол устройства для VR-гарнитуры VFX1 и ее периферийных устройств на базе шины ACCESS, будучи сотрудником Forte Technologies. SIM также был самоописываемым и расширяемым, однако он был больше ориентирован на устройства моделирования, используемые для виртуальной реальности и захвата движения. После обмена информацией на конференции разработчиков потребительских игр Стив и Майк договорились о сотрудничестве над новым стандартом для новой универсальной последовательной шины (USB). До появления HID (ок. 1995 г.) для почти каждого устройства, подключаемого к ПК, требовалась установка проприетарных драйверов. Это означало, что производителям устройств необходимо отслеживать выпуски операционных систем, регулярно предлагать обновленные драйверы для своих устройств и разрабатывать драйверы для каждой операционной системы, которую они хотели поддерживать. Кроме того, любые новые устройства, например, джойстики для авиасимуляторов с дополнительными кнопками или D-pad, требовали программной поддержки не только от драйвера, но и от каждой игры, которая их поддерживала, для обеспечения новых элементов управления. Это возлагало на разработчиков устройств дополнительную ответственность за поддержку каждой игры, которую они хотели поддерживать. Возможность устройства HID самоописываться с помощью дескриптора отчета отделила разработчиков аппаратного обеспечения от разработчиков игр. Концепция дескриптора отчета также означала, что производители операционных систем могли написать HID-драйвер (парсер), который мог бы поддерживать практически любое устройство HID, которое только можно было придумать, без необходимости писать или поддерживать драйвер для каждой операционной системы, которую они хотели поддерживать. Таким образом, класс HID отделил производителей устройств от производителей игр и операционных систем, что позволило производителям устройств быстрее внедрять инновации и снижать затраты на разработку (например, отсутствие необходимости в драйверах или поддержке разработчиков игр). В документе "Таблица использования HID" определены тысячи элементов управления, которые могут предоставлять устройства HID. Производители игр могут запрашивать HID-парсер операционной системы, чтобы определить набор элементов управления, предоставляемых устройством, а затем сопоставить эти элементы управления с функциями в своей игре. С момента своего первоначального выпуска в документ "Таблица использования HID" (HUT) было добавлено сотни новых применений. Протокол HID имеет свои ограничения, но все современные основные операционные системы распознают стандартные USB HID-устройства, такие как клавиатуры и мыши, без необходимости в специализированном драйвере. Однако его универсальность подтверждается тем фактом, что он не обновлялся более 22 лет и по-прежнему поддерживается каждым ПК, планшетом и мобильным телефоном, выпускаемым сегодня. USB, а следовательно, и HID-устройства, можно подключать и отключать на ходу, поэтому при установке на экране обычно появляется сообщение о том, что "Устройство, совместимое с HID, было распознано". В отличие от этого, такое сообщение обычно не появлялось для устройств, подключенных через 6-контактные разъемы PS/2, которые предшествовали USB. PS/2 обычно не поддерживал Plug and Play, что означает, что подключение клавиатуры или мыши PS/2 при включенном компьютере не всегда работает и может представлять опасность для материнской платы компьютера. Кроме того, стандарт PS/2 не поддерживал протокол HID. Класс USB human interface device описывает USB HID. Протокол HID (дескриптор отчета и механизм отчета) был реализован на многих шинах, отличных от USB, включая Bluetooth и I2C. Существуют также многочисленные расширения HID, определенные в документах "HID Integrated Usage Table Documents", включая источники бесперебойного питания, элементы управления видеомониторами, устройства для точек продаж, аркадные и игровые (игровые автоматы) устройства.
document. The concept of a self describing extensible protocol initially came from Mike Van Flandern and Manolito Adan while working on a project named "Raptor" at Microsoft, and independently from Steve McGowan, who worked on a "SIM" project that defined a device protocol for the VFX1 VR Headset and its peripherals based on ACCESS. bus while at Forte Technologies. SIM was also self describing and extensible, however it was more focused on SIMulation devices used for VR and motion capture. After comparing notes at a Consumer Game Developer Conference, Steve and Mike agreed to collaborate on a new standard for the emerging Universal Serial Bus (USB). Prior to HID (c.1995), proprietary drivers needed to be installed for almost every device attached to a PC. This meant that device vendors needed to track OS releases, and regularly offer updated drivers for their devices, and to develop drivers for each OS that they wanted to support. Also, at the time any novel devices, e. g., Joysticks designed for flight simulators with extra buttons or D pads, required software support not only by the driver, but by each game that supported them to enable new controls. This meant that the device developers had the additional responsibility of enabling each game that they wanted to support. The ability for a HID device to describe itself via a Report Descriptor, decoupled hardware device developers from game developers. The Report Descriptor concept also meant that OS vendors could write a HID driver (Parser) that could accommodate almost any HID device a vendor could dream up, without the vendor needing to write or maintain a driver for every OS that they wanted to support. So the HID class decoupled device vendors from game and OS vendors, enabling device vendors to innovate faster, and reducing their development costs (e. g., no drivers or game developer support). The HID Usage Table document defines thousands of controls that can be presented by HID devices. Game vendors can query the OS's HID parser to identify the set of controls that are presented by a device, then map those controls to features in their game. Since its original release, the HID Usage Table (HUT) document has had hundreds of new uses added to it. The HID protocol has its limitations, but all modern mainstream operating systems will recognize standard USB HID devices, such as keyboards and mice, without needing a specialized driver. However its versatility has been demonstrated by the fact that it has not been updated in over 22 years, and it is still supported by every PC, tablet and cell phone in production today. USB, hence HID, devices can be hot plugged, so when installed, a message saying that "A 'HID compliant device' has been recognized" generally appears on screen. In comparison, this message did not usually appear for devices connected via the PS/2 6 pin DIN connectors which preceded USB. PS/2 did not typically support plug and play, which means that connecting a PS/2 keyboard or mouse with the computer powered on does not always work and may pose a hazard to the computer's motherboard. Likewise, the PS/2 standard did not support the HID protocol. The USB human interface device class describes a USB HID. The HID protocol (Report Descriptor and Report mechanism) has been implemented on many buses other than USB, including Bluetooth and I2C. There are also a number of extensions to HID defined in "HID Integrated Usage Table Documents", including uninterruptible power supplies, video monitor controls, point of sale devices, arcade and gaming (slot machines) devices.
Описание отчетов
Описатель отчетов раскрывает сообщения, генерируемые или принимаемые 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 существует 2 сущности: "хост" и "устройство". Устройство – это сущность, которая непосредственно взаимодействует с человеком, например, клавиатура или мышь. Хост взаимодействует с устройством и получает от него входные данные о действиях, выполняемых человеком. Выходные данные передаются от хоста к устройству, а затем к человеку. Наиболее распространенным примером хоста является ПК, но некоторые сотовые телефоны и КПК также могут выступать в роли хостов. Протокол HID значительно упрощает реализацию устройств. Устройства определяют свои пакеты данных, а затем предоставляют хосту "дескриптор HID". Дескриптор 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, бразильских ABNT 107 и японских DOS/V 109 раскладках. Кнопки, ручки и клавиши, которые не зарегистрированы на странице использования 7, недоступны. Например, клавиши QWERTY определенной американской клавиатуры будут функционировать, но клавиши "Калькулятор" и "Выход из системы" не будут, поскольку они определены на странице использования 12 и не могут быть зарегистрированы в протоколе загрузки. Мышь – Доступны только оси X и Y, а также первые 3 кнопки. Любые дополнительные функции мыши не будут работать. Одно из распространенных применений режима загрузки – первые моменты последовательности загрузки компьютера. Прямая настройка BIOS компьютера часто выполняется только в режиме загрузки. Иногда появляется сообщение, информирующее пользователя о том, что устройство установило правильный драйвер и теперь готово к использованию.
Keyboard – Any of the first 256 key codes ("Usages") defined in the HID Usage Tables, Usage Page 7 can be reported by a keyboard using the boot protocol, but most systems only handle a subset of these keys. Most systems support all 104 keys on the IBM AT 101 layout, plus the three extra keys designed for Microsoft Windows 95 (the left and right Windows key, and the Menu key). Many systems also support additional keys on basic western European 105 , Korean 106 , Brazilian ABNT 107 and Japanese DOS/V 109 key layouts. Buttons, knobs and keys that are not reported on Usage Page 7 are not available. For example, a particular US keyboard's QWERTY keys will function but the Calculator and Logoff keys will not because they are defined on Usage Page 12 and cannot be reported in boot protocol. Mouse – Only the X axis, Y axis, and the first 3 buttons will be available. Any additional features on the mouse will not function. One common usage of boot mode is during the first moments of a computer's boot up sequence. Directly configuring a computer's BIOS is often done using only boot mode. Sometimes a message will appear informing the user that the device has installed the correct driver and is now usable.
Определение устройства
Согласно спецификации HID, устройство в режиме передачи отчетов описывается как набор элементов управления или группа элементов управления. Элементы управления сопоставляются с полем, содержащим данные, и другим полем, содержащим тег использования. Каждый тег использования в спецификации описывается как рекомендуемое назначение данных, представленных в режиме передачи отчетов. Это приложение для Windows, которое позволяет генерировать все дескрипторы, связанные с HID-устройством (см. ссылку ниже). Оно выполняет синтаксическую проверку и может генерировать файлы на C, заголовочные файлы C и бинарные файлы для HID-дескрипторов. Его текстовые файлы определения таблицы использования также можно легко расширить для определения собственных применений (типов управления) или таблиц использования (набора применений, связанных с устройством или функцией).