在xorg.conf中将超级键映射到控件?

jak*_*son 5 linux x11 keymapping xorg

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

经过一些挖掘,我最终在我的01-keyboard-layout.conf文件中放了选项"XkbOptions""altwin:ctrl_win",这个文件已经让我到了中途:例如,左命令现在映射到133 Control_L.

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

通过evdev.lst(和一堆谷歌搜索)看起来没有相关的XkbOption将控制键变成超级,现在我很卡住了.

有任何想法吗?

jak*_*son 8

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

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

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> };
};
Run Code Online (Sandbox Code Playgroud)

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

altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
Run Code Online (Sandbox Code Playgroud)

(在选项=符号部分下)

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

altwin2:cmd_n_ctrl
Run Code Online (Sandbox Code Playgroud)

(根据选项部分)

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
Run Code Online (Sandbox Code Playgroud)

6:重启,你应该好好去.

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

希望能帮助其他人坚持这个位置!