2012-02-22 32 views
9

我想與Virtualbox-VM進行交互以進行Virtualbox-Guest-Additions的無人值守安裝。因此我必須將擊鍵發送給虛擬機。我能夠通過使用VBoxManage-API,在這裏我把掃描碼的HEX發送到VM要做到這一點:獲取字符的鍵盤掃描代碼

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

現在我想給一個完整的命令到VM,如:

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

所以我必須將該字符串的每個字符轉換爲掃描碼並通過VBoxManage將其發送到虛擬機。

如何將這些字符轉換爲Linux上相應的鍵盤掃描碼?我的虛擬機與我的主機有相同的鍵盤映射。我在找東西,我可以這樣使用:

$ getscancode n 
> 31 

+0

我剛剛發現'showkey -s',它給了我正確的掃描碼。但是,這隻能在我的窗口管理器以外的終端中使用,否則我會得到'無法獲得涉及控制檯的文件描述符。 – ifischer 2012-02-22 13:47:09

+1

'xev'將提供您需要的信息,但不能以'showkey -s'這樣的整齊格式(所以我猶豫不決)。您需要將光標放入黑框,然後輸入您需要的鍵。 – 2012-02-22 16:35:59

+0

另請參見[將ASCII碼翻譯爲AT set 2鍵盤掃描碼](http://unix.stackexchange.com/questions/250377/translate-ascii-codes-to-at-set-2-keyboard-scancodes) – Gilles 2015-12-20 01:22:53

回答

5

showkey --ascii似乎適用於most keys,它在我的GNOME終端中工作。

+1

這隻以交互模式工作。我想從腳本中獲取keychar,所以我可以調用類似'getscancode n'的東西。 – ifischer 2012-03-19 17:35:16

+1

showkey --ascii在我的情況下不報告正確的掃描碼,或根本不報告它們,只是ascii字形,八進制僞掃描碼和鍵碼 – 2015-12-20 12:17:52