在启动 VMware 中的虚拟机之前,所有修饰键均能正常工作。即使在启动 VMware 后,但在启动虚拟机之前,一切正常。
然而,一旦我启动虚拟机左 Ctrl和右移键停止工作。它们根本不起作用。
以下几点观察可能会带来一些启发:
- 我的左移仍在继续工作。
- 我绘制了我的将 Caps Lock 改为 Ctrl并且它运行正常。
- 临时执行
sudo setxkbmap
会将所有内容恢复正常。一旦 VMware 获得焦点并且我输入了一些内容,问题又出现了。 - 即使我退出 VMware 后问题仍然存在。
这是我第一次使用 Unity(我已经使用 Gnome 很长时间了),我怀疑问题与此有关。您知道为什么会发生这种情况吗?
答案1
总结:
在 Gnome Tweak Tool 中,将“Ctrl 键位置”设置为“Caps Lock 为 Ctrl”,并将“Caps Lock 键行为”设置为“Caps Lock 已禁用”。
完整故事:
问题似乎在于 Ubuntu 如何重新映射 CapsLock 键。当 Gnome Tweak Tool 的“Caps Lock 键行为”属性设置为“将 Caps 设为附加 Ctrl 键”时,xmodmap 报告:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Caps_Lock (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
问题似乎是两个都锁定和控制列表“Caps_Lock (0x42)”。一切正常,直到您将焦点设置到 VMWare VM(我使用 VMWare Player 进行了测试)。将焦点设置到 VMWare 窗口后,xmodmap
将报告一个空映射:
xmodmap: up to 0 keys per modifier, (keycodes in parentheses):
shift
lock
control
mod1
mod2
mod3
mod4
mod5
运行setxkbmap
将重置键盘映射并暂时解决问题。使用 后xmodmap
,我发现从 lock 中删除 Caps_Lock (0x42) 可阻止 VMWare 刷新键盘映射。但,Ubuntu 14.04 忽略.Xmodmap
文件,因此没有简单的方法可以使用xmodmap
。
我们可以通过更改 Gnome Tweak Tool 中的两个设置来解决此情况的根本原因,如本文开头所述。这样做将正确配置键盘映射,以便 Caps_Lock (0x42) 不会出现在两个位置:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)