2012-02-22 8 views
9

Voglio interagire con un Virtualbox-VM per eseguire un'installazione automatica di Virtualbox-Guest-Additions. Pertanto devo inviare sequenze di tasti alla VM. Sono in grado di farlo utilizzando il VBoxManage-API, dove io mando il HEX del scancode al VM:Ottieni tastiera scancode di char

# sends "b" to the VM 
VBoxManage controlvm "$VMNAME" keyboardputscancode <HEX> 

Ora voglio inviare un comando completo al VM, come:

mount /dev/scd0 /media/cdrom0<Enter> 

Quindi devo convertire ogni singolo carattere di quella stringa in uno scancode e inviarlo alla VM utilizzando VBoxManage.

Come si convertono questi caratteri negli scancodes di tastiera corrispondenti su Linux? La mia VM ha la stessa mappatura della tastiera come il mio host. Sto cercando qualcosa che posso usare in questo modo:

$ getscancode n 
> 31 

?

+0

Ho appena trovato 'showkey -s', che mi dà lo scancode corretto. Ma funziona solo su un Terminale al di fuori del mio Window Manager, altrimenti ricevo "Impossibile ottenere un descrittore di file riferito alla console". – ifischer

+1

'xev' fornirà le informazioni di cui hai bisogno, ma non in un formato così ordinato come' showkey -s' (quindi sono riluttante a darlo come risposta). Dovrai posizionare il cursore nella casella nera, quindi digitare i tasti necessari. –

+0

Vedi anche [Traduci codici ascii su AT set 2 keyboard scancodes] (http://unix.stackexchange.com/questions/250377/translate-ascii-codes-to-at-set-2-keyboard-scancodes) – Gilles

risposta

5

showkey --ascii sembra funzionare per most keys e funziona nel mio terminale GNOME.

+1

solo questo funziona in una modalità interattiva. Voglio ottenere il keychar da uno script, quindi posso chiamare qualcosa come 'getscancode n'. – ifischer

+1

showkey --ascii o non riporta gli scancodes corretti nel mio caso, o non li riporta affatto, solo glifi ascii, octal pseudo scancode e keycode –