重新映射键:在 Ubuntu 13.10 中将 Caps Lock 转换为 Escape 以及反之亦然

重新映射键:在 Ubuntu 13.10 中将 Caps Lock 转换为 Escape 以及反之亦然

我刚刚安装了 Ubuntu 13.10,缺少交换 Esc 和 Caps Lock 键的功能。以前在 Ubuntu 12.04 中可以通过 GUI 实现。有人知道我该如何解决这个问题吗?

谢谢您的帮助 :)

答案1

您仍然可以从命令行直接访问底层 dconf 键,如下所示:

dconf read /org/gnome/desktop/input-sources/xkb-options
dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:escape']"

(立即生效。)

要启用多个 XKB 选项,请将它们列为逗号分隔的引号字符串;例如,我还使用菜单作为我的撰写键:

dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:escape', 'compose:menu']"

查看xkeyboard 配置手册页提供了您可以使用的 XKB 选项的完整参考。

答案2

以前(在 13.04 及更早版本中),您可以在主目录中创建一个名为 .Xmodmap 的文件,它会在登录时自动设置,但我还没有在 13.10 中测试过这一点。

remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

编辑:

现在在 13.10 中,我开始在 /usr/share/X11/xkb/symbols 中编辑 swapescape

partial hidden modifier_keys
xkb_symbols "swapescape" {
    key <CAPS> {        [       Tab, ISO_Left_Tab  ]       };
    key <ESC>  {        [     Caps_Lock    ]       };
    key <TAB>  {        [     Escape, Escape    ]       };
};

这使得我能够使用 setxkbmap 在我的可编程键盘上使用 -variant basic,否则使用 -variant swapescape。

答案3

我做了一个解决方法(有点),将以下命令放入其中并在每次重新启动时执行它:

#! /bin/bash
xmodmap -e "clear Lock"
xmodmap -e "keycode 9 = Caps_Lock"
xmodmap -e "keycode 66 = Escape"
xmodmap -e "add Lock = Caps_Lock"

不幸的是,每次我切换键盘布局时我也需要执行它,而我经常这样做,因此这不是我可以长期使用的解决方案。

答案4

在 13.10 中使用 Unity 时,登录时 xmodmap 不会自动解析 ~/.Xmodmap。您可以创建一个包装器脚本并让其通过“启动项”运行,但每次暂停/恢复时,您都会发现大写锁定键正常工作。

13.10 Unity 无法像 kubuntu 那样禁用/重新映射 Caps_lock。到目前为止,这是 Unity 中唯一一个我尚未找到解决方法或学会忍受的功能(错误?遗漏?)。

CapsLock 很笨。

相关内容