我刚刚安装了 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 很笨。