Я хочу взаимодействовать с Virtualbox-VM, чтобы выполнить автоматическую установку Virtualbox-Guest-дополнений. Поэтому я должен отправить нажатия клавиш на виртуальную машину. Я могу сделать это с помощью VBoxManage-API, где я отправить шестигранный Scancode к VM:Получить клавиатурный scancode char
# sends "b" to the VM
VBoxManage controlvm "$VMNAME" keyboardputscancode <HEX>
Теперь я хочу, чтобы послать полную команду на виртуальную машину, как:
mount /dev/scd0 /media/cdrom0<Enter>
Поэтому я должен преобразовать каждый символ этой строки в scancode и отправить его на виртуальную машину с помощью VBoxManage.
Как преобразовать эти символы в соответствующие клавиатурные сканноды в Linux? Моя виртуальная машина имеет такое же сопоставление клавиатуры, что и мой хост. Я ищу что-то, что я могу использовать следующим образом:
$ getscancode n
> 31
?
Я только что нашел 'showkey -s', который дает мне правильный scancode. Но это работает только в терминале вне моего диспетчера окон, иначе я получаю 'Не могу получить файловый дескриптор, ссылающийся на консоль'. – ifischer
'xev' предоставит необходимую вам информацию, но не в таком аккуратном формате, как' showkey -s' (поэтому я не решаюсь дать ему ответ). Вам нужно будет поместить курсор в черный ящик, затем введите нужные ключи. –
См. Также [Перевести коды ascii на AT set 2 клавиатуры scancodes] (http://unix.stackexchange.com/questions/250377/translate-ascii-codes-to-at-set-2-keyboard-scancodes) – Gilles