我键盘上的问号键不起作用。(“?”)。我尝试使用軍并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
检查扫描码
如果某个键没有键码,您可以通过使用 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"
希望这可以帮助!