Saltar al contenido

Barcode Scanner Emulator

La cuña de teclado HID explicada

La cuña de teclado es el modo de funcionamiento predeterminado de la inmensa mayoría de los lectores de códigos de barras. Esta guía explica qué es, cómo funciona a nivel de USB y qué implica al probar tu aplicación.

¿Qué es una cuña de teclado?

El término procede de los lectores antiguos de puerto serie que se «acuñaban» literalmente entre el teclado y el puerto del ordenador, interceptaban la señal del teclado e inyectaban en ella los caracteres leídos. Los lectores actuales ya no necesitan una cuña física: la expresión designa cualquier lector que presenta los datos leídos como si procedieran de un teclado, sea cual sea el tipo de conexión.

USB HID y emulación de teclado

USB define una clase Human Interface Device (HID) pensada para teclados, ratones y dispositivos de entrada similares. Cuando un lector se enumera en USB como teclado HID, el sistema operativo carga su controlador de teclado genérico e integrado: no hace falta un controlador específico del lector. El firmware convierte cada carácter descodificado en el código de tecla HID que enviaría un teclado físico, y los informes se entregan por el mismo mecanismo de transferencia por interrupción que usa cualquier teclado USB.

Cómo ve tu aplicación la entrada del lector

Ráfaga rápida de pulsaciones frente a la escritura humana: el lector envía toda la carga útil como una secuencia rápida de pares keydown/keyup y suele terminar en menos de un segundo, independientemente de la longitud del código.

Sin eventos de ratón: los lectores en modo de teclado HID nunca generan eventos de puntero, clic o foco. Si tu campo no tiene el foco cuando se produce la lectura, la entrada se pierde o va al elemento que sí lo tiene.

Sin eventos de pegado: como los datos llegan como pulsaciones individuales y no como una operación del portapapeles, los controladores del evento paste no verán la entrada del lector, y las máscaras de entrada que solo escuchan paste la pasarán por alto en silencio.

Problemas de distribución del teclado

Por qué aparecen caracteres incorrectos: el lector asigna los caracteres descodificados a códigos de tecla HID según su propia distribución de teclado configurada. Si esa distribución no coincide con la del sistema operativo, los caracteres pueden transponerse. Un síntoma clásico es que los dígitos o la puntuación se lean como otro carácter en sistemas QWERTY frente a AZERTY.

Desajuste de configuración regional: es un problema de configuración del lector, no un fallo del software. La mayoría de los lectores permiten cambiar la configuración regional mediante códigos de configuración impresos en el manual, y corregirlo consiste en reprogramar el lector para que coincida con la configuración regional del sistema operativo, no en cambiar el código de la aplicación.

Prefijos y sufijos

Los lectores suelen admitir secuencias configurables de prefijo y sufijo alrededor de la carga útil. Los sufijos más habituales son ENTER (CR, 0x0D), TAB (0x09) y, en ocasiones, un par CR+LF completo. Los prefijos son menos frecuentes, pero a veces se usan para dirigir las lecturas a campos concretos en aplicaciones de terminal antiguas.

Limitaciones de las pruebas en el navegador

Un navegador no puede ver los paquetes USB HID en bruto, no puede enumerar los dispositivos HID conectados como un lector en concreto (salvo mediante la API WebHID, por la que la mayoría de los lectores no exponen datos) y no puede distinguir un lector en modo de teclado HID de un teclado real. Solo los eventos de teclado visibles para el navegador (keydown, keyup, keypress) son accesibles desde JavaScript, y eso es exactamente lo que inspeccionan las herramientas de este sitio.

Relacionado

Usa el Probador de eventos de teclado para inspeccionar los eventos de teclado en bruto, o lee la guía Sufijos ENTER y TAB para los detalles de configuración del sufijo.