Barcode Scanner Emulator
Explicația penei de tastatură HID
Pana de tastatură este modul de funcționare implicit pentru marea majoritate a scanerelor de coduri de bare. Acest ghid explică ce este, cum funcționează la nivel USB și ce înseamnă pentru testarea aplicației.
Ce este o pană de tastatură?
Termenul vine de la scanerele mai vechi pe port serial, care erau literalmente „împănate” (wedged) între tastatură și portul calculatorului, interceptând semnalul tastaturii și injectând caracterele scanate. Scanerele moderne nu mai au nevoie de împănare fizică. Expresia desemnează acum orice scaner care prezintă datele scanate ca și cum ar fi venit de la o tastatură, indiferent de tipul de conexiune.
USB HID și emularea de tastatură
USB definește o clasă Human Interface Device (HID) anume pentru tastaturi, mouse-uri și dispozitive de introducere asemănătoare. Când un scaner se enumeră pe USB ca tastatură HID, sistemul de operare încarcă driverul generic de tastatură încorporat. Nu este nevoie de un driver specific scanerului. Firmware-ul transformă fiecare caracter decodificat în codul de tastă HID pe care l-ar trimite o tastatură fizică, iar rapoartele sunt livrate prin același mecanism de transfer prin întrerupere ca la orice tastatură USB.
Cum vede aplicația introducerea de la scaner
Rafală rapidă de apăsări față de tastarea umană: scanerul trimite întreaga sarcină ca o secvență rapidă de perechi keydown/keyup și termină de obicei în mai puțin de o secundă, indiferent de lungimea codului.
Fără evenimente de mouse: scanerele în modul tastatură HID nu generează niciodată evenimente de indicator, clic sau focalizare. Dacă câmpul nu are focalizare în momentul scanării, introducerea se pierde sau ajunge la elementul care are focalizarea.
Fără evenimente de lipire: pentru că datele sosesc ca apăsări individuale, nu ca operație de clipboard, gestionarii de paste nu văd introducerea de la scaner, iar măștile care ascultă doar paste o ratează în tăcere.
Probleme de dispunere a tastaturii
De ce apar caractere greșite: scanerul asociază caracterele decodificate cu coduri de tastă HID folosind propria dispunere de tastatură configurată. Dacă acea dispunere nu se potrivește cu cea a sistemului de operare, caracterele se pot schimba între ele. Simptomul clasic este un cifru sau un semn de punctuație scanat ca alt caracter pe sisteme QWERTY față de AZERTY.
Nepotrivire de localizare: aceasta este o problemă de configurare a scanerului, nu o eroare de software. Majoritatea scanerelor schimbă localizarea prin coduri de configurare tipărite în manual, iar remedierea înseamnă reprogramarea scanerului ca să se potrivească cu localizarea sistemului, nu schimbarea codului aplicației.
Prefixuri și sufixe
Scanerele acceptă de obicei secvențe configurabile de prefix și sufix în jurul sarcinii. Cele mai frecvente sufixe sunt ENTER (CR, 0x0D), TAB (0x09) și, uneori, o pereche CR+LF completă. Prefixurile sunt mai rare, dar se folosesc uneori ca să dirijeze scanările către câmpuri anume în aplicații vechi de terminal.
Limitări pentru testarea în browser
Browserul nu vede pachete USB HID brute, nu poate enumera dispozitivele HID conectate anume ca scaner (în afara API-ului WebHID, prin care majoritatea scanerelor nu expun date) și nu poate deosebi un scaner în modul tastatură HID de o tastatură reală. Doar evenimentele de tastatură vizibile browserului (keydown, keyup, keypress) sunt accesibile JavaScript, iar instrumentele de pe acest site inspectează exact asta.
Înrudite
Folosiți testerul de evenimente de tastatură ca să inspectați evenimente brute de tastatură sau citiți ghidul Sufixe ENTER și TAB pentru detalii despre configurarea sufixului.