6

我一直在尝试在 Macbook 上的 X 中切换我的超级键和控制键,并且成功了一半。如果可能,我想避免创建自定义 .Xmodmap,因为每次加载自定义地图时都会弹出一个临时的 100% cpu 错误。

经过一番挖掘,我最终将 Option "XkbOptions" "altwin:ctrl_win" 放在了我的 01-keyboard-layout.conf 文件中,这让我走到了一半:例如,left 命令现在映射到 133 Control_L。

但是,控制键保持不变。左控制,例如仍然映射到 37 Control_L。

浏览 evdev.lst (和一堆谷歌搜索)发现没有相关的 XkbOption 将控制键变成超级,现在我很卡住。

有任何想法吗?

4

1 回答 1

9

好的,我终于让它工作了。

首先,这两个资源对于任何想要深入研究这个烂摊子的人来说都是惊人的:

http://madduck.net/docs/extending-xkb/ & http://www.charvolant.org/~doug/xkb/html/index.html

对于专门尝试进行此切换的任何人,这就是我所做的:

1) 在 /usr/share/X11/xkb/symbols 中为您的新映射创建一个文件 2) 将其放入其中:

// Control is SWAPPED with Win-keys 
partial modifier_keys
xkb_symbols "cmd_n_ctrl" {
    key <LWIN> {        [       Control_L               ]       };
    key <RWIN> {        [       Control_R               ]       };
    key <LCTL> {       [       Super_L         ]       };
    modifier_map Control { <LWIN>, <RWIN> };
    modifier_map Mod4 { <LCTL> };
};

3:编辑 /usr/share/X11/xkb/rules 中的 evdev 以包括:

altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)

(在选项 = 符号部分下)

4:将您的新选项添加​​到 evdev.lst(相同的目录):

altwin2:cmd_n_ctrl

(在选项部分下)

5:现在编辑您的 01-Keyboard conf 文件以包含您创建的新选项。我的看起来像这样:

Section "InputClass"
        Identifier "keyboard-layout"
        Driver "evdev"
        MatchIsKeyboard "yes"
        Option "XkbLayout" "us, ru, ca, fr"
        Option "XkbOptions" "altwin2:cmd_n_ctrl"
EndSection

6:重新启动,你应该很好去。

上述资源可以更好地解释所有这些,或者您可能遇到的任何障碍。可能有更好的方法来做到这一点(可能不会改变 /usr/share 的内容),但到目前为止,这就是让我开始并运行的原因。

希望能帮助困在这个地方的其他人!

于 2013-01-05T01:29:59.070 回答