2012-02-22 9 views
9

Quiero interactuar con Virtualbox-VM para realizar una instalación desatendida de Virtualbox-Guest-Additions. Por lo tanto, tengo que enviar pulsaciones de teclas a la máquina virtual. Soy capaz de hacer esto mediante el uso de la VBoxManage-API, donde puedo enviar el HEX del código de rastreo a la máquina virtual:Obtener scancode de teclado de char

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

Ahora quiero enviar un comando completo a la máquina virtual, como:

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

Así que tengo que convertir cada char de esa cadena en un scancode y enviarlo a la VM usando VBoxManage.

¿Cómo convierto estos caracteres a los códigos de escaneo de teclado correspondientes en Linux? Mi VM tiene el mismo mapeo de teclado como mi host. Estoy buscando algo que pueda usar así:

$ getscancode n 
> 31 

?

+0

Acabo de encontrar 'showkey -s', que me da el scancode correcto. Pero eso solo funciona en un Terminal fuera de mi Administrador de ventanas, de lo contrario obtengo 'No se pudo obtener un descriptor de archivo que haga referencia a la consola'. – ifischer

+1

'xev' proporcionará la información que necesita, pero no en un formato tan preciso como' showkey -s' (por lo que dudo en darle una respuesta). Tendrá que poner el cursor en el recuadro negro, luego escriba las claves que necesita. –

+0

Vea también [Traducir códigos ASCII a AT establecer 2 códigos de escaneo de teclado] (http://unix.stackexchange.com/questions/250377/translate-ascii-codes-to-at-set-2-keyboard-scancodes) – Gilles

Respuesta

5

showkey --ascii parece funcionar para most keys, y funciona en mi Terminal de GNOME.

+1

esto solamente funciona en un modo interactivo. Quiero obtener el keychar desde un script, así puedo llamar algo como 'getscancode n'. – ifischer

+1

showkey --ascii no informa los códigos de scan correctos en mi caso, o no los informa en absoluto, solo ascii glyph, octal pseudo scancode y keycode –