ubuntu交换Ctrl和win键(xkb版本)

ubuntu交换Ctrl和win键(xkb版本)

之前使用了xmodmap来交换win和ctrl键盘,但在莫名情况下或者锁屏之后,就要重新设置,比较麻烦,然后我的fcitx在切换中英文之后,总会自动重置,实在不厌其烦。

这个版本的修改没有在fcitx下测试,我的fcitx被我搞乱了,通知图标不会出来了

在/usr/share/X11/xkb/symbols下创建一个名为myswap的文件,内容如下

partial modifier_keys
xkb_symbols "swap_win_ctrl" {
    replace key <LWIN>  { [ Control_L ] };
    replace key <LCTL> { [ Super_L ] };
    replace key <RWIN> { [ Control_R ] };
    replace key <RCTL> { [ Super_R ] };
        modifier_map Control { <LWIN>, <RWIN> };
        modifier_map Mod4 { <LCTL> };
// 这里没有交换右Ctrl键,如果想要的话,添加上 <RCTL>
};

在/usr/share/X11/xkb/rules/evdev的(! option = symbols)中添加下面一行:

myswap:swap_win_ctrl          =       +myswap(swap_win_ctrl)

可选: 在/usr/share/X11/xkb/rules/evdev.lst中添加下面一行

myswap:swap_win_ctrl  win swap to ctrl,lctrl swap to lwin

然后调用下面的命令即可生效

setxkbmap -option "myswap:swap_win_ctrl"

如果想要一劳永逸,推荐使用dconf-editor修改org::gnome::desktop::input-sources中的xkb-options选项,添加上”myswap:swap_win_ctrl”即可,重启lightdm生效,或者重启系统。

PS: 使用 nautilus可以添加自定义的右键菜单,我将emacs添加到里面,用起来很舒服