作为Vim使用者。由于我的键盘是108键全键盘,需要remap键位来适应vim编辑器。我的目的是两两交换Cap_Locks,Esc,Ctrl三个键。
Linux gnome tweak tool 有提供交换Cap和Ctrl等功能,但是不能满足的我的需求,故放弃。
最后选择用xmodmap。
xmodmap 不提供恢复初始化到功能,所以在使用如下指令备份map表,防止map出错 xmodmap -pke > /etc/X11/.Xmodmap.bak
如果出错导致键盘不能正常使用,可以重启。如果是外接键盘,重新插拔即可恢复
Xmodmap配置文件
remove Control = Control_L remove Lock = Caps_Lock
keysym Control_L = Escape NoSymbol Escape keysym Caps_Lock = Control_L keysym Escape = Caps_Lock NoSymbol Caps_Lock
add Control = Control_L add Lock = Caps_Lock
Ctrl、Caps作为modifier key(修饰键)在重新映射之前必要先去除其修饰性,使其不影响已有到map。如不这样做会报错。
keysym会将将等号左边的keysym name转换为相应到keycode,将等号右边的值映射给等号左边到keycode。
以keysym Control_L = Escape NoSymbol Escape为例,Control_L(left)到keycode是29,于是这句话等价为keycode 29 = Escape NoSymbol Escape。第一个Escape为直接按键的操作,其他到是配合不同到修饰键到操作。
结语
貌似没有什么好办法,每次开机解锁屏幕都要敲一遍,比较麻烦,但没与办法。只能设置别名少打点字。。。 xmd=”xmodmap ~/.Xmodmap”
更新
Fedora 25之后默认使用Wayland作为 Display Server Protocol。目前它还不支持xmodmap命令,所以需要换回X11。修改配置文件/etc/gdm/custom.conf
# GDM configuration storage
[daemon]
# Uncoment the line below to force the login screen to use Xorg
WaylandEnable=false