2012-02-22 11 views
9

Chcę współpracować z Virtualbox-VM, aby wykonać nienadzorowaną instalację Virtualbox-Guest-Additions. Dlatego muszę wysłać naciśnięcia klawiszy do VM. Jestem w stanie to zrobić za pomocą VBoxManage-API, gdzie wysłać HEX z scancode do VM:Uzyskaj kod Scancode klawiatury o znaku

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

Teraz chcę wysłać kompletne polecenie do VM, jak:

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

Muszę więc przekonwertować każdy znak tego łańcucha na kod scancode i wysłać go do VM przy użyciu VBoxManage.

Jak przekonwertować te znaki do odpowiednich skanerów klawiatury w systemie Linux? Moja maszyna wirtualna ma takie samo odwzorowanie klawiatury jak mój host. Szukam czegoś, co mogę użyć w ten sposób:

$ getscancode n 
> 31 

?

+0

Właśnie znalazłem 'showkey -s', który daje mi prawidłowy scancode. Ale działa to tylko w Terminalu poza moim Window Manager, W przeciwnym razie otrzymam komunikat "Nie można uzyskać deskryptora pliku odnoszącego się do konsoli". – ifischer

+1

'xev' dostarczy potrzebnych informacji, ale nie w tak zgrabnym formacie, jak' showkey -s' (więc nie chcę podawać go jako odpowiedzi). Będziesz musiał umieścić kursor w czarnym polu, a następnie wpisać potrzebne klucze. –

+0

Zobacz także [Przekieruj kody ASC na AT 2 scancodes klawiatury] (http://unix.stackexchange.com/questions/250377/translate-ascii-codes-to-at-set-2-keyboard-scancodes) – Gilles

Odpowiedz

5

showkey --ascii wydaje się działać dla most keys i działa w moim terminalu GNOME.

+1

to tylko działa w trybie interaktywnym. Chcę uzyskać keychar z poziomu skryptu, więc mogę nazywać coś w stylu 'getscancode n'. – ifischer

+1

showkey --ascii nie zgłasza prawidłowych skanów w moim przypadku lub nie zgłasza ich w ogóle, tylko glif ascii, ósemkowy pseudo scancode i kod klucza –

Powiązane problemy