在 Virtualbox VM 中的 Ubuntu 10.04 中,xev 和 showkey -k 均未检测到密钥

在 Virtualbox VM 中的 Ubuntu 10.04 中,xev 和 showkey -k 均未检测到密钥

我键盘上的问号键不起作用。(“?”)。我尝试使用showkey -k尝试识别至少一个键码并手动使用 xmodmap 来映射它。

不幸的是,这两个实用程序都无法检测到密钥。我在虚拟机 (VirtualBox 3.2.4 r62467) 中使用 Ubuntu 10.04,我的内核是 2.6.32-22-generic。我的主机是 Ubuntu 8.04。

当我xev在主机中运行时,我得到:

KeyRelease event, serial 30, synthetic
NO, window 0x3600001,
root 0x5d, subw 0x0, time 19346721, (726,722), root:(730,746),
state 0x2010, keycode 211 (keysym 0x2f, slash), same_screen YES,
XKeysymToKeycode returns keycode: 61
XLookupString gives 1 bytes: (2f) "/"
XFilterEvent returns: False

当我跑步时showkey -v

0x59 0xd9

xmodmap -pk关于此访客密钥:

0x002f (slash)  0x003f (question)   0x002f (slash)  0x003f (question)   0x00b0 (degree) 0x00bf (questiondown)

...在主机中:

 0x002f (slash)  0x003f (question)   0x003b (semicolon)  0x003a (colon)  0xfe60 (dead_belowdot)  0xfe56 (dead_abovedot)

但当我在我的客人上点击它时,它根本不起作用。

Virtualbox 中的一些相关票证:#4957#599#205

这是怎么回事?这不是一个特殊的多媒体键,而是一个普通键。我想了解到底发生了什么,这样至少我可以尝试更好地调试这个问题。如果我的主机检测到了它,为什么我的客户机上没有检测到它?

答案1

archlinux 维基

检查扫描码

如果某个键没有键码,您可以通过使用 dmesg 命令查看内核日志来了解它是否具有扫描码:

$ dmesg|tail -5

如果按下键时出现类似这样的内容:

atkbd.c: Unknown key pressed (translated set 2, code 0xf1 on isa0060/serio0).
atkbd.c: Use 'setkeycodes e071 <keycode>' to make it known.

那么你的按键就有可以映射到按键码的扫描码。参见将扫描码映射到键码

如果 dmesg 中没有出现任何新信息,则表示您的密钥没有扫描码,这意味着内核无法识别它并且无法使用。

答案2

我放弃。

我要买一个新键盘。花 10 美元买个新键盘。我已经学习了很多 xmodmap 概念等。

答案3

我花了很多时间绑定可检测的但无法获得正确的键码。这是我发现的最简单的检测和绑定方法。使用:

xbindkeys -k

如果未安装,请安装 xbindkeys。然后输入上述命令,然后输入您想要知道密钥代码的密钥。您将获得密钥代码和密钥名称,如下所示,

m:0x10 + c:169
Mod2 + XF86AudioPlay

然后使用 xmodmap 将键与键名绑定(您可以使用以下命令 xmodmap -pk 在列表中搜索键名)。 在我的例子中,我想将此键与 Super 键绑定。

xmodmap -e "keycode 169 = Super_L"

希望这可以帮助!

相关内容