Tastiera e dati in uscita

Emulazione tastiera (keyboard wedge): come il lettore "scrive" nel computer

In emulazione tastiera (keyboard wedge) il lettore si presenta al computer come una tastiera USB e, dopo ogni lettura, "digita" il contenuto del codice tasto per tasto nel campo in cui si trova il cursore. Non serve alcun driver e funziona con qualsiasi programma, ma il lettore dipende dal layout di tastiera, dal campo attivo e dalla velocità con cui l'applicazione accetta i tasti.

Come funziona davvero

Il nome "wedge" (cuneo) viene dai vecchi lettori che si inserivano tra tastiera e PC con un cavo a Y sulla porta PS/2: i dati del lettore si mescolavano a quelli della tastiera. Oggi il principio è lo stesso ma passa dalla classe USB HID (Human Interface Device), la stessa di tastiere e mouse, o dal profilo HID del Bluetooth.

Il punto chiave è che il lettore non invia testo. Invia, per ogni carattere, la pressione e il rilascio di uno o più tasti (con Shift se serve una maiuscola). Il percorso è questo:

Codice stampato   "Ab-1"
Lettore decodifica A b - 1
Lettore invia     [Shift+tasto A] [tasto A] [tasto a destra dello 0] [tasto 1]
Sistema operativo applica il layout attivo (es. Italiano)
Applicazione      riceve "Ab'1"  se il lettore usa la tabella USA

Ecco perché il layout configurato sul lettore deve corrispondere a quello del PC: vedi impostare la tastiera italiana. E perché esiste un'alternativa che aggira il layout, la modalità ALT.

Vantaggi e limiti

Emulazione tastiera: cosa offre e cosa no
AspettoEmulazione tastiera HIDPorta COM / seriale
DriverNessuno, plug and playA volte necessario
CompatibilitàQualsiasi programma con un campo di testoSolo software che legge la porta
Layout di tastieraDeve coincidere con quello del PCIrrilevante, arrivano i byte
Caratteri di controllo (GS, RS, EOT)Difficili o impossibili da trasmettere fedelmenteArrivano intatti
Campo attivoI dati vanno dove si trova il cursoreIl software riceve i dati anche in background
Comunicazione verso il lettoreNo (salvo HID POS o protocolli dedicati)Possibile

Il confronto completo è in USB HID o porta COM virtuale.

Cosa può andare storto e perché

Il cursore non è dove pensi

Il lettore non sa nulla dell'applicazione. Se nel momento della lettura il campo attivo è la barra degli indirizzi del browser, una chat o il campo "quantità", il codice finisce lì. Con un suffisso Invio, poi, può anche eseguire un'azione indesiderata. Le applicazioni ben progettate riportano il cursore nel campo codice dopo ogni lettura.

Caratteri persi o in disordine

Il lettore può "digitare" molto più velocemente di una persona. Applicazioni web pesanti, desktop remoto, macchine virtuali o connessioni Bluetooth disturbate possono perdere o invertire caratteri. La soluzione è introdurre un piccolo ritardo tra i caratteri.

Caratteri invisibili

Tab, Invio e soprattutto i caratteri di controllo come GS (ASCII 29) non hanno sempre un tasto corrispondente. Ogni lettore decide come trasformarli in tasti: vedi la tabella dei caratteri di controllo ASCII e il caso specifico del carattere GS e FNC1.

Stato della tastiera del PC

Blocco Maiuscole attivo può invertire maiuscole e minuscole; vedi maiuscole, minuscole e Blocco Maiuscole. Un tasto Alt o Ctrl rimasto "premuto" su una tastiera fisica può trasformare il codice in una serie di scorciatoie.

Cifre dalla riga superiore o dal tastierino

Molti lettori permettono di scegliere se trasmettere le cifre con i tasti della riga superiore o con quelli del tastierino numerico. La riga superiore è la scelta più sicura su layout come quello italiano, dove le cifre non richiedono Shift. Il tastierino dipende dallo stato di Bloc Num: se è spento, i tasti diventano frecce, Home, Fine, e il codice si trasforma in movimenti del cursore. Alcuni software di cassa, al contrario, distinguono i dati del lettore proprio dall'uso del tastierino.

Come vedere cosa invia il lettore

Il Blocco note mostra le lettere, ma non dice se è arrivato un Tab, un Invio o un carattere di controllo. Il test del lettore visualizza ogni carattere con il suo codice, i prefissi e suffissi invisibili e i tempi tra un tasto e l'altro, e segnala se il layout sembra non corrispondere.

Lettura: 8001234567897 + suffisso
Caratteri: 8 0 0 1 2 3 4 5 6 7 8 9 7 [Invio]
Codici:    56 48 48 49 50 51 52 53 54 55 56 57 55 13

Quando l'emulazione tastiera non basta

  • Il software deve ricevere i dati anche se l'utente sta lavorando in un'altra finestra.
  • Devi ricevere dati GS1 completi di separatori GS o messaggi con RS ed EOT.
  • Il codice contiene caratteri non digitabili con il layout (per esempio testo con alfabeti diversi in un QR).
  • L'applicazione deve inviare comandi al lettore (beep di errore, disattivazione).

In questi casi valuta la porta COM virtuale o un'integrazione dedicata; per le applicazioni web vedi lettore in applicazioni web.

Domande frequenti

Posso usare lettore e tastiera insieme?

Sì, il sistema li vede come due tastiere e accetta l'input di entrambe. Evita solo di digitare durante una lettura.

Un programma può distinguere il lettore dalla tastiera?

In emulazione tastiera, in modo affidabile no: i tasti sono indistinguibili. Si usano trucchi come un prefisso dedicato o la velocità di digitazione, oppure interfacce diverse (COM, HID POS).

L'emulazione tastiera funziona su tablet e smartphone?

Sì, via USB OTG o Bluetooth HID. Su iPhone e iPad la tastiera a schermo si nasconde quando è collegato il lettore; vedi lettore Bluetooth con Android e iPhone.

Fonti e riferimenti

  • USB Device Class Definition for HID e HID Usage Tables (Keyboard/Keypad, Point of Sale), USB Implementers Forum.
  • Product Reference Guide dei produttori, capitolo "USB Keyboard" o "Keyboard Wedge": Honeywell, Zebra, Datalogic.

Altro in Tastiera e dati in uscita

Tutta la sezione Tastiera e dati in uscita