Barcode Scanner Emulator
Le mode en coin de clavier HID expliqué
Le mode en coin de clavier (keyboard wedge) est le mode de fonctionnement par défaut de la très grande majorité des scanneurs de codes à barres. Ce guide précise ce que c'est, comment cela fonctionne au niveau USB et ce que cela implique pour les essais de votre application.
Qu'est-ce que le mode en coin de clavier?
L'expression vient d'anciens scanneurs sur port sériel qu'on plaçait littéralement « en coin » entre un clavier et le port de l'ordinateur. Ils interceptaient le signal du clavier et y injectaient les caractères lus. Les scanneurs actuels n'ont plus besoin de ce branchement physique. L'expression désigne maintenant tout scanneur qui présente les données lues comme si elles provenaient d'un clavier, peu importe le type de connexion.
USB HID et émulation de clavier
L'USB définit une classe Human Interface Device (HID) réservée aux claviers, aux souris et aux appareils de saisie semblables. Lorsqu'un scanneur s'énumère en USB comme clavier HID, le système d'exploitation charge son pilote de clavier générique intégré. Aucun pilote propre au scanneur n'est requis. Le microprogramme du scanneur convertit chaque caractère décodé en keycode HID qu'un clavier physique enverrait, et les rapports sont livrés par le même mécanisme de transfert par interruption que n'importe quel clavier USB.
Comment votre application perçoit la saisie du scanneur
Salve rapide de frappes plutôt que frappe humaine : le scanneur envoie tout le contenu comme une suite rapide de paires keydown/keyup, habituellement en moins d'une seconde, quelle que soit la longueur du code à barres.
Aucun événement de souris : les scanneurs en mode clavier HID ne produisent jamais d'événements de pointeur, de clic ou de focus. Si votre zone n'a pas le focus au moment de la lecture, la saisie est perdue ou aboutit dans l'élément qui détient le focus.
Aucun événement de collage : comme les données arrivent sous forme de frappes distinctes et non d'une opération du presse-papiers, les gestionnaires de l'événement paste ne voient pas la saisie du scanneur. Les masques de saisie qui n'écoutent que paste la manquent en silence.
Problèmes de disposition du clavier
Pourquoi de mauvais caractères s'affichent : le scanneur associe les caractères décodés à des keycodes HID selon sa propre disposition de clavier. Si cette disposition ne correspond pas à celle du système d'exploitation, les caractères peuvent être intervertis. Un symptôme classique est que des chiffres ou de la ponctuation sont lus comme le mauvais caractère entre un clavier QWERTY et un clavier AZERTY.
Écart de paramètres régionaux : il s'agit d'un problème de réglage du côté du scanneur, pas d'un bogue logiciel. La plupart des scanneurs permettent de changer les paramètres régionaux au moyen de codes à barres de configuration imprimés dans leur guide, et la correction consiste à reprogrammer le scanneur pour qu'il corresponde aux paramètres régionaux du système, pas à modifier le code de l'application.
Préfixes et suffixes
Les scanneurs prennent généralement en charge des séquences de préfixe et de suffixe réglables autour du contenu. Les suffixes les plus fréquents sont ENTER (CR, 0x0D), TAB (0x09) et, à l'occasion, une paire CR+LF complète. Les préfixes sont moins courants, mais servent parfois à diriger les lectures vers des zones précises dans d'anciennes applications de terminal.
Limites des essais dans le navigateur
Un navigateur ne voit pas les paquets USB HID bruts. Il ne peut pas énumérer les appareils HID branchés comme des scanneurs en particulier (sauf par l'API WebHID, que la plupart des scanneurs n'utilisent pas pour exposer leurs données) et il ne peut pas distinguer un scanneur en mode clavier HID d'un vrai clavier. Seuls les événements clavier visibles dans le navigateur (keydown, keyup, keypress) sont accessibles à JavaScript, et ce sont précisément ceux que les outils de ce site examinent.
Pour aller plus loin
Utilisez l'outil d'essai des événements clavier pour examiner les événements clavier bruts, ou lisez le guide Suffixes ENTER et TAB pour le détail du réglage des suffixes.