2014-11-22 14 views
11

Dove sono in grado di trovare un elenco dei codici di scansione tastiera esadecimale per layout di tastiera diversi?Elenco dei codici di scansione tastiera esadecimale e documentazione tastiera USB HID

sto inviando i codici chiave nel corso di un (finto) della tastiera USB HID con il comando bash echo -ne seguito dal codice esadecimale sfuggito chiave di scansione e il dispositivo HID:

echo -ne "\x00\x00\x00\x38\x00\x00\x00\x00" > /dev/hidg0 
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x00" > /dev/hidg0 

per una barra (/) sulla tastiera americana.

Sul mio layout di tastiera (CH) è

echo -ne "\x00\x00\x00\x24\x00\x00\x00\x00" > /dev/hidg0 
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x00" > /dev/hidg0 

per una barra. Quindi immagino ci debba esistere un elenco per tutti questi. Tuttavia, sono riuscito a trovare un elenco per lo US layout ma non per nessun altro layout di tastiera.

So che la seconda riga interrompe la digitazione del tasto ma non capisco la sintassi di queste sequenze di escape. So che se cambio il primo \x00 su un x02 "cambierà" il tasto inserito. Ma perché ci sono altri 6 modificatori? Stanno per ctrl, alt, ...? E per chi sta?

Una documentazione di questa sintassi sarebbe davvero interessante. Non ero ancora riuscito a trovarne uno.

(sto usando Kali Nethunter su un Nexus 7 2012)

+0

Sulla base del tuo codice per la barra, direi che la tua tastiera è un T2 tedesco, piuttosto che un qwertz ceco. Il codice 'x24' corrisponde alla posizione meccanica di un 7 & su un equivalente americano, che è una barra in avanti su un T2, ma su una versione ceca"/"sarebbe' x2F' Penso (equivalente a US '['). – jiggunjer

+0

Abbastanza OT, ma CH è il codice ISO per la Svizzera (Confoederatio Helvetica), il Ceco sarebbe CZ. – Erik

risposta

28

i "codici di scansione" (sono davvero indici a codici d'uso) sono pubblicati sul usb.org nella specifica USB HID Usage Tables nel Capitolo 10 "Keyboard/Pagina tastiera (0x07) ". Un tipico layout di report tastiera è disponibile nello USB Device Class Specification for HID in Appendice B "Descrittori interfaccia di avvio", sezione "B.1 Protocollo 1 (tastiera)".

che descrive il formato del report tastiera come:

Byte 0: Keyboard modifier bits (SHIFT, ALT, CTRL etc) 
Byte 1: reserved 
Byte 2-7: Up to six keyboard usage indexes representing the keys that are 
      currently "pressed". 
      Order is not important, a key is either pressed (present in the 
      buffer) or not pressed. 

Si noti che le specifiche USB non definisce i layout di tastiera. Elenca semplicemente i codici di utilizzo assegnati a particolari funzioni chiave. La lettera "a" è ad esempio il codice di utilizzo 0x04. Se vuoi una "A" maiuscola, devi anche impostare i bit del modificatore Byte 0 per selezionare "Spostamento a sinistra" (o "Spostamento a destra").

Il formato esatto del buffer del report dipende dal descrittore del report inviato al computer host quando la tastiera è stata collegata a una porta USB, quindi quanto sopra è solo un esempio (piuttosto tipico).

+0

Grazie. Il capitolo 10 è utile per le tastiere HID per inviare specifici tratti chiave dall'hardware (ad esempio, una demo della tastiera HID di Microchip invia un 4 che corrisponde a un tasto 'a'). –

+0

Attenzione: questo è vero solo per una tastiera QWERTY. Su una tastiera AZERTY il 4 è associato al tasto 'q' e non al tasto 'a'. In altre parole, i codici dipendono dal layout di tastiera regionale –

+0

@PierrePoliakoff Penso che intendessi dire che i codici sono * fissi * (o dovrebbero essere), basati su un layout * meccanico * corrispondente a una tastiera inglese. Per esempio. la stessa chiave produce lo stesso ID di utilizzo, indipendentemente dal carattere stampato su di esso. – jiggunjer

Problemi correlati