linux 修改按键映射

xmodmap(X modify key map)可以修改X下的键位映射
比如0现在用的键盘没有右边的CTRL,很难用,右侧的INSERT键刚好在空格右侧不远的地方,可以把它修改为右CTRL

可以使用xev程序来查看当前的keymap,可以看到右侧的INSERT键位映射为:

1
2
3
4
5
6
KeyPress event, serial 33, synthetic NO, window 0x2a00001,
root 0xdc, subw 0x0, time 102519, (936,455), root:(986,569),
state 0x10, keycode 118 (keysym 0xff63, Insert), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

导出原映射

1
$ xmodmap -pke > ~/.Xmodmap

修改映射

控制键要先clear,最后再add
编辑.Xmodmap文件,文件开头处添加

1
clear Control

将keycode 118修改为

1
keycode 118 = Control_R NoSymbol Control_R

然后文件尾部添加

1
add Control = Control_L Control_R

测试配置

修改好映射文件后

1
$ xmodmap ~/.Xmodmap

GDM,XDM和LightDM在开启xsession时会自动读取$HOME/.Xmodmap,但不稳定,时好时坏:(

使用startx时激活你自己的映射表,请添加下面的文件和内容:

1
2
3
4
~/.xinitrc
if \[ -f $HOME/.Xmodmap \]; then
/usr/bin/xmodmap $HOME/.Xmodmap
fi

References:
[1]Xmodmap
[2]linux下修改键位映射