Un dispositivo de interfaz humana ( HID ) es un tipo de dispositivo informático utilizado habitualmente por humanos que recibe información de ellos o proporciona información a ellos.
El término "HID" se refiere más comúnmente a la especificación USB HID . El término fue acuñado por Mike Van Flandern de Microsoft cuando propuso que el comité USB creara un grupo de trabajo sobre la clase de dispositivo de entrada humana. [ ¿Cuándo? ] El grupo de trabajo cambió su nombre a la clase de dispositivo de interfaz humana por sugerencia de Tom Schmidt de DEC porque el estándar propuesto admitía la comunicación bidireccional. [ ¿Cuándo? ]
El estándar HID se adoptó principalmente para permitir la innovación en dispositivos de entrada de PC y simplificar el proceso de instalación de dichos dispositivos. Antes de la introducción del concepto HID, los dispositivos generalmente se ajustaban a protocolos estrictamente definidos para mouse , teclados y joysticks ; por ejemplo, el protocolo estándar para mouse en ese momento admitía datos relativos de los ejes X e Y y entrada binaria para hasta dos botones, sin soporte heredado. Todas las innovaciones de hardware requerían sobrecargar el uso de datos en un protocolo existente o la creación de controladores de dispositivos personalizados y la evangelización de un nuevo protocolo a los desarrolladores. Por el contrario, todos los dispositivos definidos por HID entregan paquetes autodescriptivos que pueden contener cualquier número de tipos y formatos de datos. Un solo controlador HID en una computadora analiza los datos y permite la asociación dinámica de la E/S de datos con la funcionalidad de la aplicación, lo que ha permitido una rápida innovación y desarrollo, y una diversificación prolífica de nuevos dispositivos de interfaz humana.
Un comité de trabajo con representantes de varias empresas importantes desarrolló el estándar HID. La lista de participantes aparece en el documento "Definición de clase de dispositivo para dispositivos de interfaz humana (HID)" [1] . El concepto de un protocolo extensible autodescriptivo surgió inicialmente de Mike Van Flandern y Manolito Adan mientras trabajaban en un proyecto llamado "Raptor" en Microsoft , e independientemente de Steve McGowan, quien trabajó en un proyecto "SIM" que definió un protocolo de dispositivo para el auricular VFX1 VR y sus periféricos basados en ACCESS.bus mientras estaba en Forte Technologies. SIM también era autodescriptivo y extensible, sin embargo estaba más enfocado en dispositivos de simulación utilizados para VR y captura de movimiento. Después de comparar notas en una Conferencia de desarrolladores de juegos para consumidores, Steve y Mike acordaron colaborar en un nuevo estándar para el emergente Universal Serial Bus (USB).
Antes de HID (c.1995), era necesario instalar controladores propietarios para casi todos los dispositivos conectados a una PC. Esto significaba que los proveedores de dispositivos necesitaban realizar un seguimiento de las versiones del sistema operativo y ofrecer periódicamente controladores actualizados para sus dispositivos, y desarrollar controladores para cada sistema operativo que quisieran admitir. Además, en ese momento, cualquier dispositivo nuevo, por ejemplo, joysticks diseñados para simuladores de vuelo con botones adicionales o D-pads , requerían soporte de software no solo por parte del controlador, sino por cada juego que los admitiera para habilitar nuevos controles. Esto significaba que los desarrolladores de dispositivos tenían la responsabilidad adicional de habilitar cada juego que quisieran admitir. La capacidad de un dispositivo HID de describirse a sí mismo a través de un Descriptor de informe, desacopló a los desarrolladores de dispositivos de hardware de los desarrolladores de juegos. El concepto de Descriptor de informe también significaba que los proveedores de sistemas operativos podían escribir un controlador HID (analizador) que pudiera adaptarse a casi cualquier dispositivo HID que un proveedor pudiera soñar, sin que el proveedor tuviera que escribir o mantener un controlador para cada sistema operativo que quisiera admitir.
De esta forma, la clase HID desvinculó a los proveedores de dispositivos de los proveedores de juegos y sistemas operativos, lo que les permitió innovar más rápido y reducir sus costos de desarrollo (por ejemplo, no hay controladores ni soporte para desarrolladores de juegos). El documento de tabla de uso de HID define miles de controles que pueden presentar los dispositivos HID. Los proveedores de juegos pueden consultar el analizador HID del sistema operativo para identificar el conjunto de controles que presenta un dispositivo y luego asignar esos controles a las características de su juego. Desde su lanzamiento original, se han agregado cientos de nuevos usos al documento de tabla de uso de HID (HUT).
El protocolo HID tiene sus limitaciones, pero todos los sistemas operativos modernos reconocen dispositivos USB HID estándar, como teclados y ratones, sin necesidad de un controlador especializado. Sin embargo, su versatilidad ha quedado demostrada por el hecho de que no se ha actualizado en más de 22 años y todavía es compatible con todos los PC, tabletas y teléfonos móviles que se fabrican en la actualidad. Los dispositivos USB, y por tanto HID, se pueden conectar en caliente, por lo que, cuando se instalan, suele aparecer en la pantalla un mensaje que dice "Se ha reconocido un 'dispositivo compatible con HID'". En comparación, este mensaje no solía aparecer en los dispositivos conectados a través de los conectores DIN de 6 pines PS/2 que precedieron al USB. El PS/2 no solía admitir plug-and-play , lo que significa que conectar un teclado o un ratón PS/2 con el ordenador encendido no siempre funciona y puede suponer un peligro para la placa base del ordenador. Del mismo modo, el estándar PS/2 no admitía el protocolo HID. La clase de dispositivo de interfaz humana USB describe un HID USB.
El protocolo HID (Descriptor de informe y mecanismo de informe) se ha implementado en muchos buses distintos del USB, incluidos Bluetooth y I2C .
También hay una serie de extensiones de HID definidas en los "Documentos de la tabla de uso integrado de HID", incluidos sistemas de alimentación ininterrumpida , controles de monitores de vídeo , dispositivos de puntos de venta y dispositivos de juegos y arcade ( máquinas tragamonedas ).
El descriptor de informes expone los mensajes generados o aceptados por un dispositivo HID. Cada mensaje se denomina "informe". Los informes pueden definir bits/controles en un dispositivo que se pueden leer o escribir, o generar periódicamente para mantener a un host actualizado sobre el estado actual del dispositivo. Por ejemplo, un mouse normalmente genera un informe 200 veces por segundo para informar al host de cualquier movimiento o pulsación de botón. Los descriptores de informes están "orientados a bits", lo que significa que los controles pueden presentar entre 1 y 32 bits de información. Cada control definido en un descriptor de informes tiene un ID y define su tamaño y posición en su informe. Un descriptor de informes puede definir muchos informes, cada uno de los cuales informa sobre un conjunto o combinación de información diferente.
Por ejemplo, un ratón básico define un informe de 3 bytes en el que el bit menos significativo (0) del informe es el botón izquierdo, el siguiente (1) bit es el botón del medio y el tercer (2) bit es el botón derecho. Para permitir que las coordenadas de posición X e Y de 8 bits del ratón se sitúen convenientemente en los límites de bytes, se define un "relleno" de 5 bits. A continuación, la coordenada X se define como un valor relativo de 8 bits (es decir, la cantidad de "mickeys" desde el informe anterior) que reside en las posiciones de bit 8 a 15, y la coordenada Y se define como un valor relativo de 8 bits que reside en las posiciones de bit 16 a 24, lo que da como resultado un paquete de datos que se presenta al host.
Un descriptor de informe es extremadamente versátil, ya que permite que un dispositivo especifique la resolución, el rango y muchas otras características de cada control que presenta. Al estar diseñado en una época en la que un controlador de teclado o ratón tenía la suerte de tener 1 KB de ROM para todo su código y datos, la sintaxis del descriptor de informe tiene muchas características que permiten minimizar su tamaño, por ejemplo, los parámetros de control seleccionados pueden persistir en múltiples definiciones de control, y solo es necesario volver a declararlos si su valor cambia. Los informes generados por un ratón básico se pueden describir en 50 bytes y un teclado de 104 en 65 bytes.
Una característica poco conocida o entendida de HID es el Descriptor Físico. El Descriptor Físico se utiliza para definir las partes del cuerpo humano que interactúan con los controles individuales definidos en el Descriptor de Informe. Al controlar un juego, el dedo índice y el pulgar se utilizan generalmente para invocar acciones repetitivas. Debido a que se considera que estos dedos tienen la respuesta de "contracción" más rápida, se utilizan normalmente para apretar el gatillo de un arma o activar una función de juego de uso frecuente. El Descriptor Físico permite a un proveedor de dispositivos identificar qué dedos descansan sobre cada control y priorizar el conjunto de controles que se pueden alcanzar con un dedo individual. Esta característica permite a un proveedor de juegos presentar de forma inteligente la mejor asignación de botones predeterminada, incluso para un dispositivo que no existía cuando se desarrolló el juego. El Descriptor Físico también permite que un dispositivo HID presente información de captura de movimiento de cuerpo completo, es decir, el ángulo, la orientación, la posición relativa o absoluta de cualquier articulación del cuerpo humano. Y a través del Descriptor de Informe, los datos de captura de movimiento se pueden presentar en cualquier resolución que el dispositivo pueda soportar.
En el protocolo HID, hay dos entidades: el "host" y el "dispositivo". El dispositivo es la entidad que interactúa directamente con un ser humano, como un teclado o un ratón. El host se comunica con el dispositivo y recibe datos de entrada del dispositivo sobre las acciones realizadas por el ser humano. Los datos de salida fluyen del host al dispositivo y luego al ser humano. El ejemplo más común de un host es una PC , pero algunos teléfonos móviles y PDA también pueden ser hosts.
El protocolo HID simplifica enormemente la implementación de dispositivos. Los dispositivos definen sus paquetes de datos y luego presentan un "descriptor HID" al host. El descriptor HID es una matriz de bytes codificada de forma rígida que describe los paquetes de datos del dispositivo. Esto incluye: cuántos paquetes admite el dispositivo, el tamaño de los paquetes y el propósito de cada byte y bit del paquete. Por ejemplo, un teclado con un botón de programa de calculadora puede indicar al host que el estado de pulsación/liberación del botón se almacena como el segundo bit del sexto byte del paquete de datos número 4 (nota: estas ubicaciones son solo ilustrativas y específicas del dispositivo). El dispositivo normalmente almacena el descriptor HID en la ROM y no necesita comprender o analizar intrínsecamente el descriptor HID. Algunos ratones y teclados del mercado actual se implementan utilizando solo una CPU de 8 bits .
Se espera que el host sea una entidad más compleja que el dispositivo. El host necesita recuperar el descriptor HID del dispositivo y analizarlo antes de poder comunicarse completamente con el dispositivo. Analizar el descriptor HID puede ser complicado. Se sabe que varios sistemas operativos han incluido errores en los controladores de dispositivos responsables de analizar los descriptores HID años después de que los controladores de dispositivos se lanzaran originalmente al público. Sin embargo, esta complejidad es la razón por la que es posible la rápida innovación con dispositivos HID.
El mecanismo anterior describe lo que se conoce como "protocolo de informe" HID. Debido a que se entendió que no todos los hosts serían capaces de analizar descriptores HID, HID también define "protocolo de arranque". En el protocolo de arranque, solo se admiten dispositivos específicos con solo características específicas porque se utilizan formatos de paquetes de datos fijos. El descriptor HID no se utiliza en este modo, por lo que la innovación es limitada. Sin embargo, el beneficio es que aún es posible una funcionalidad mínima en hosts que de otra manera no podrían admitir HID. Los únicos dispositivos admitidos en el protocolo de arranque son
Un uso común del modo de arranque es durante los primeros momentos de la secuencia de arranque de una computadora. La configuración directa del BIOS de una computadora se realiza a menudo utilizando únicamente el modo de arranque. A veces, aparecerá un mensaje que informa al usuario que el dispositivo ha instalado el controlador correcto y ahora se puede utilizar.
Según la especificación HID, un dispositivo se describe, durante el modo de informe, como un conjunto de controles o un grupo de controles. Los controles se corresponden con un campo que contiene los datos y otro que contiene una etiqueta de uso. Cada etiqueta de uso se describe en la especificación como el uso sugerido por el constructor de los datos descritos en el modo de informe.
La
es una aplicación de Windows que se puede utilizar para generar todos los descriptores asociados con un dispositivo HID (consulte el enlace a continuación). Realiza la verificación de sintaxis y puede generar archivos binarios y de encabezado C para los descriptores HID. Sus archivos de definición de tabla de uso basados en texto también se pueden ampliar fácilmente para definir usos propietarios (tipos de control) o tablas de uso (el conjunto de usos asociados con un dispositivo o una función).Desde la definición original de HID en USB, HID ahora también se utiliza en otros buses de comunicación de computadoras . Esto permite que los dispositivos HID que tradicionalmente solo se encontraban en USB también se puedan utilizar en buses alternativos. Esto se hace porque el soporte existente para dispositivos HID USB normalmente se puede adaptar mucho más rápido que tener que inventar un protocolo completamente nuevo para admitir mouse, touchpad, teclados y similares. Los buses conocidos que utilizan HID son: