【问题标题】:Get keyboard scancode of char获取字符的键盘扫描码
【发布时间】:2012-02-22 13:13:33
【问题描述】:

我想与 Virtualbox-VM 交互以进行 Virtualbox-Guest-Additions 的无人值守安装。因此,我必须将击键发送到 VM。我可以通过使用 VBoxManage-API 来做到这一点,我将扫描码的 HEX 发送到 VM:

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

现在我想向虚拟机发送一个完整的命令,例如:

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

所以我必须将该字符串的每个字符转换为扫描码,并使用 VBoxManage 将其发送到 VM。

如何在 Linux 上将这些字符转换为相应的键盘扫描码?我的虚拟机与我的主机具有相同的键盘映射。我正在寻找可以这样使用的东西:

$ getscancode n
> 31

?

【问题讨论】:

  • 我刚刚找到showkey -s,它给了我正确的扫描码。但这只适用于我的窗口管理器之外的终端,否则我会得到Couldn't get a file descriptor referring to the console
  • xev 将提供您需要的信息,但不像showkey -s 那样简洁的格式(所以我很犹豫是否给出答案)。您需要将光标放在黑框内,然后键入您需要的键。

标签: linux scancodes


【解决方案1】:

showkey --ascii 似乎对 most keys 有效,并且在我的 GNOME 终端中也有效。

【讨论】:

  • 这只适用于交互模式。我想从脚本中获取 keychar,所以我可以调用 getscancode n 之类的东西。
  • showkey --ascii 在我的情况下要么不报告正确的扫描码,要么根本不报告它们,只是 ascii 字形、八进制伪扫描码和键码
猜你喜欢
  • 2014-09-19
  • 2020-12-18
  • 1970-01-01
  • 2015-03-16
  • 2013-06-19
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多