ubuntu-键盘映射

原文链接
偶然间看到一篇文章,在Linux下互换Capslock和LCtrl(链接忘了),然后就有了重新映射一下功能键的想法。新的映射如下:

物理按键 功能
CapsLock Control
LCtrl Escape
RAlt Control
RCtrl Caps lock

下面是ubuntu16.04, gnome3的环境下设置键映射的方法,使用的是xkb。

用到的命令及工具有:dconf-editor, setxkbmap

编写映射文件

/usr/share/X11/xkb/symbols目录下面新建一个文本文件,不如就叫cus_map,然后往里面写入如下内容:

partial modifier_keys  
xkb_symbols "my_maps" {         // 这个my_maps名字可以自己定
    // 右边alt当control使
    replace key  { [ Control_L, Control_L ] };

    // capslock当control使
    replace key  { [ Control_L, Control_L ] };
    modifier_map Control { ,  };

    // 左边control当成esc
    key  { [ Escape ] };

}; // end  

添加到数据库中

打开/usr/share/X11/xkb/rules/evdev文件,找到! option = symbols的行,在下面加入刚刚编写的映射,修改之后如下:

! option    =   symbols
  cus_map:rctrl_as_caps = +cus_map(my_maps)
  grp:shift_toggle  =   +group(shifts_toggle)
  altwin:menu       =   +altwin(menu)
  altwin:meta_alt   =   +altwin(meta_alt)
  ...

使其对gnome可见

打开/usr/share/X11/xkb/rules/evdev.lst,在! option一栏的后面加上一行:

  ...
  esperanto:dvorak     To the corresponding key in a Dvorak layout
  esperanto:colemak    To the corresponding key in a Colemak layout
  solaris              Maintain key compatibility with old Solaris keycodes
  solaris:sun_compat   Sun Key compatibility
  terminate            Key sequence to kill the X server
  terminate:ctrl_alt_bksp Ctrl + Alt + Backspace

  cus_map:my_maps      my mappings

启用映射

方法一

使用dconf-editor修改数据库。

运行dconf-editor,找到/org/gnome/desktop/input-sources/xkb-options,这是一个列表,往里面加入我们的map:['cus_map:my_maps']

如果之前里面有内容,用,分隔字符串即可。

方法二

使用setxkbmap -print查看当前的映射情况,如下:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+cn:2+inet(evdev)+cus_map(rctrl_as_caps)" };
    xkb_geometry  { include "pc(pc105)" };
};

然后启用:

$ setxkbmap -layout cn -option cus_map:my_maps

最后

使用setxkbmap -layout ,如果编写得没有错误,映射生效。


参考文章:

[Custom keymaps in GNOME 3 on Wayland](Custom keymaps in GNOME 3 on Wayland)

你可能感兴趣的:(ubuntu-键盘映射)