En informática , la clase de dispositivo de interfaz humana USB ( clase USB HID ) forma parte de la especificación USB para periféricos de ordenador : especifica una clase de dispositivo (un tipo de hardware de ordenador ) para dispositivos de interfaz humana como teclados , ratones , pantallas táctiles , paneles táctiles , controladores de juegos y dispositivos de visualización alfanumérica .
La clase USB HID se define en varios documentos proporcionados por el Grupo de Trabajo de Dispositivos del Foro de Implementadores USB . El documento principal utilizado para describir la clase USB HID es la Definición de Clase de Dispositivo para HID 1.11. [ 1 ]
Dispositivos
La clase USB HID describe los dispositivos que se utilizan en casi todos los ordenadores modernos. Existen numerosas funciones predefinidas en la clase USB HID. Estas funciones permiten a los fabricantes de hardware diseñar un producto que cumpla con las especificaciones de la clase USB HID y que funcione con cualquier software que también cumpla con dichas especificaciones.
El mismo protocolo HID se utiliza sin modificaciones en los dispositivos de interfaz humana Bluetooth . [ 2 ] La especificación del perfil Bluetooth solo remite a los lectores a la documentación USB HID. En este sentido, esos dispositivos también pertenecen a la clase USB HID.
Teclados
Los teclados son un tipo común de dispositivo USB HID. Un teclado USB HID suele estar diseñado con un puerto de entrada (IN) que comunica las pulsaciones de teclas al ordenador y un puerto de salida (OUT) que comunica el estado de los LED del teclado desde el ordenador al teclado. El estándar PC 97 exige que la BIOS del ordenador detecte y sea compatible con los teclados USB HID diseñados para usarse durante el arranque.
Algunos teclados implementan el perfil de teclado de arranque USB especificado en la definición de clase de dispositivo USB para dispositivos de interfaz humana (HID) v1.11 y están configurados explícitamente para usar el protocolo de arranque. Estos están limitados a la detección simultánea de 6 teclas (6KRO) e interrumpirán la CPU cada vez que se consulte el teclado (incluso si no hay cambios de estado), a menos que el controlador USB esté programado para indicarle al teclado que responda con acuses de recibo negativos, que el controlador USB descarta por hardware sin interrumpir la CPU, cuando no hay cambios de estado que notificar. Este perfil está diseñado para permitir que la BIOS gestione un teclado USB en ausencia de un sistema operativo compatible con USB. El perfil recomendado para teclados que no están en modo de arranque en esta especificación limita los teclados a 6KRO y hace que respondan a una interrupción con un informe de estado al menos cada medio segundo (de nuevo, incluso si no hay cambio de estado) para implementar la función typematic (repetir el código de escaneo cuando se presiona la tecla el tiempo suficiente), a menos que el controlador USB esté programado para indicarle al teclado que responda con acuses de recibo negativos cuando no haya cambios de estado que informar. Sin embargo, los teclados en modo que no sea de arranque pueden implementar un perfil HID alternativo. [ 1 ]
El comportamiento mencionado anteriormente contrasta con la interfaz PS/2 , que admite la función NKRO ( Number Key Rollover) para teclados compatibles.
Ratón
El ratón de ordenador es otro dispositivo común de la clase USB HID. Los ratones USB HID pueden variar desde dispositivos sencillos de un solo botón hasta dispositivos compuestos con varios botones. La mayoría de los sistemas operativos modernos incluyen controladores para los diseños estándar de ratones HID (el diseño moderno más común tiene dos botones dedicados y una rueda que también funciona como tercer botón); los ratones con funciones avanzadas requieren controladores personalizados del fabricante.
Los ratones USB tienen latencias más bajas que los ratones PS/2 porque los ratones USB estándar suelen ser muestreados a una frecuencia predeterminada de 125 Hz, mientras que los ratones PS/2 estándar envían interrupciones a una frecuencia predeterminada de 100 Hz cuando tienen datos que enviar al ordenador. [ 3 ] [ 4 ] Además, los ratones USB no hacen que el controlador USB interrumpa el sistema cuando no tienen ningún cambio de estado que informar según el perfil predeterminado de la especificación USB HID para dispositivos de ratón. [ 1 ] Tanto PS/2 como USB permiten anular la frecuencia de muestreo, con PS/2 admitiendo una frecuencia de muestreo de hasta 200 Hz [ 5 ] y USB admitiendo una frecuencia de sondeo de hasta 1 kHz [ 3 ] si el ratón USB funciona a velocidad completa o hasta 8 kHz si el ratón USB funciona a alta velocidad. [ 6 ]
mandos de juego
Los mandos y joysticks modernos suelen ser dispositivos USB HID. A diferencia de los dispositivos con puertos de juego antiguos , los dispositivos USB HID normalmente no requieren controladores propietarios para funcionar. Casi todos los dispositivos de juego funcionan con los controladores integrados, siempre que estén diseñados para cumplir con los estándares de la clase USB HID.
Otros dispositivos
Las especificaciones de la clase USB HID permiten incluir una gran variedad de dispositivos dentro de esta clase. Algunos ejemplos son los controladores de simulación de automóviles, las máquinas de ejercicio, los dispositivos de telefonía , los termómetros, los controles de audio y la instrumentación médica. Incluso las fuentes de alimentación ininterrumpida y los dongles de protección de software [ 7 ] se clasifican dentro de esta clase, a pesar de que a menudo carecen de interfaz de usuario. Cualquier dispositivo puede ser un dispositivo de la clase USB HID siempre que el diseñador cumpla con las especificaciones lógicas de la clase USB HID. Esto no significa que no sea necesario distribuir controladores para estos dispositivos, ni que un sistema operativo los reconozca de inmediato. Simplemente significa que el dispositivo puede clasificarse dentro de la clase de dispositivo de interfaz de usuario.
Vulnerabilidades de seguridad
La interfaz USB es vulnerable a vulnerabilidades de seguridad como BadUSB , que abusan de la combinación de la capacidad de USB para conectar muchos tipos diferentes de dispositivos, su incapacidad para verificar que los dispositivos sean realmente lo que dicen ser, la posibilidad de que los dispositivos USB cambien de tipo o anuncien subdispositivos adicionales mientras están conectados, y su comportamiento predeterminado de aceptar cualquier dispositivo que se conecte a ella. Como contramedida parcial, se pueden usar periféricos PS/2 junto con la desactivación de todos los puertos USB. [ 8 ]
Conductores
Una de las ventajas de una especificación bien definida como la clase USB HID es la abundancia de controladores de dispositivos disponibles en la mayoría de los sistemas operativos modernos. Los dispositivos de la clase USB HID y sus funciones básicas se definen en la documentación USB-IF sin tener en cuenta ningún software específico. Gracias a estas descripciones genéricas, a los diseñadores de sistemas operativos les resulta fácil incluir controladores funcionales para dispositivos como teclados, ratones y otros dispositivos genéricos de interfaz humana. La inclusión de estos controladores genéricos permite una implementación más rápida de los dispositivos y una instalación más sencilla para los usuarios finales. Windows 98 fue la primera versión de Windows que admitió USB HID. [ 9 ]
Especificaciones lógicas
Características funcionales
La clase de dispositivo de interfaz humana USB se puede usar para describir tanto las clases de dispositivo como las de interfaz. La clase de interfaz se usa cuando un dispositivo USB puede contener más de una función. Por lo tanto, es posible tener dispositivos USB con dos interfaces diferentes al mismo tiempo (por ejemplo, un teléfono USB puede usar un teclado cubierto por la clase HID y un altavoz cubierto por la clase de dispositivo de comunicaciones USB ).
Los dispositivos de interfaz también se definen con descriptores de subclase. El descriptor de subclase se utiliza para declarar un dispositivo como arrancable. Un dispositivo de arranque cumple con un protocolo básico mínimo y será reconocido por la BIOS del ordenador .
Cada interfaz USB HID se comunica con el host mediante un canal de control o un canal de interrupción . Los canales isócronos y de transferencia masiva no se utilizan en los dispositivos de clase HID. Se requieren transferencias de control tanto de entrada como de salida para la enumeración; solo se requiere una transferencia de interrupción de entrada para los informes HID. Las transferencias de interrupción de salida son opcionales en los dispositivos de clase HID.
Informes
La clase USB HID requiere que cada dispositivo describa cómo se comunicará con el dispositivo anfitrión para predecir y definir con precisión todos los dispositivos de interfaz humana actuales y futuros. Durante la enumeración, el dispositivo describe cómo deben estructurarse sus informes para que el dispositivo anfitrión pueda prepararse adecuadamente para recibir esta información.
El host sondea periódicamente el punto final de interrupción IN del dispositivo durante su funcionamiento. Cuando el dispositivo tiene datos para enviar, genera un informe y lo envía como respuesta al token de sondeo. Los dispositivos comunes, como teclados y ratones, envían informes que cumplen con los estándares establecidos por el USB Implementers Forum (USB-IF). [ 10 ] Cuando un fabricante crea un dispositivo de clase USB HID personalizado, los informes generados por el dispositivo deben coincidir con la descripción del informe proporcionada durante la enumeración y el controlador instalado en el sistema host. De esta manera, la clase USB HID puede ser extremadamente flexible.
API USB HID
Existen dos niveles de API relacionadas con USB HID: el nivel USB y el nivel del sistema operativo . En el nivel USB, existe un protocolo para que los dispositivos anuncien sus capacidades y el sistema operativo procese los datos recibidos. El sistema operativo ofrece entonces una vista de nivel superior a las aplicaciones, que no necesitan incluir compatibilidad con dispositivos individuales, sino con clases de dispositivos. Esta capa de abstracción permite que un juego funcione con cualquier controlador USB, incluso con aquellos creados posteriormente.
Véase también
Referencias
- 1 2 3 "Definición de clase de dispositivo para HID 1.11" (PDF) .
- ↑ "HID Spec v1_0.zip" . Consultado el 22/01/2013 .
- 1 2 "Guía de optimización del ratón: corrección de aceleración y tasa de sondeo" . eu.cybergamer.com. 09/04/2007. Archivado del original el 09/07/2014 . Consultado el 09/07/2014 .
- ↑ "LCOM 2012/2013: Lab5" . web.fe.up.pt. Consultado el 9 de julio de 2014 .
- ↑ Adam Chapweske. "Interfaz de ratón PS/2" . computer-engineering.org . Consultado el 9 de julio de 2014 .
- ↑ "Documentación técnica" . docs.nordicsemi.com . Consultado el 2 de noviembre de 2025 .
- ↑ "El dongle USB no requiere controladores, es un dispositivo HID., SecuTech Solution Inc." . News.thomasnet.com . Consultado el 18 de enero de 2014 .
- ↑ Anthony, Sebastian (31 de julio de 2014). "Se ha descubierto una enorme e indetectable vulnerabilidad de seguridad en USB: es hora de sacar tu teclado PS/2 del armario" . ExtremeTech . Consultado el 26 de octubre de 2015 .
- ↑ Axelson, Jan. "Controladores USB incluidos con Windows" . Lakeview Research . Consultado el 6 de julio de 2026 .
- ↑ "Documentación HID relacionada con Microsoft" . USB.org. Archivado del original el 19 de agosto de 2012. Consultado el 22 de enero de 2013 .
Enlaces externos
- USB.org : la página principal del USB Implementers Forum, Inc.
- USB en pocas palabras
- Herramientas HID de USB-IF : la página de USB-IF dedicada a los dispositivos de interfaz humana incluye toda la documentación aprobada.
- Página de Lakeview Research sobre dispositivos HID: una colección de artículos y ejemplos de código para dispositivos USB HID.
- Guías del sistema PC : Especificaciones del sistema PC de Microsoft (por ejemplo, PC '97, PC '98)
- USB