问题
珍爱小拇指,远离Emacs,说的就是windows下四个按键(CapsLock, Ctrl_L, Ctrl_L, Alt_L(从上到下,从左到右的顺序))令人想起来就脊背发凉的安排。虽然吾等买不起某种动辄上千的键盘(hhkb),但是通过xmodmap进行简单的按键映射,可以给早以不堪重负的小拇指一息喘气的机会。
通常情况下我使用Ctrl_L和Alt_L要远远多于 CapsLock 和Shift_L。因为Emacs的很多快捷键的修饰键都是Ctrl_L或Alt_L(此处的“或”具有数学中“或”的意义),所以我的要求是:1)交换CapsLock和Ctrl_L;2)交换Shift_L和Alt_L。
解决方案
使用xmodmap进行按键映射, 首先查看Ubuntu下这几个修饰键是如何映射的
xmodmap -pm
我的输出是
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_R (0x3e), Shift_L (0x40), Shift_L (0xcc) lock Caps_Lock (0x25) control Control_L (0x42), Control_R (0x69) mod1 Alt_L (0x32), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
交换CapsLock和Ctrl_L
在自家的目录下建立文件.Xmodmap
touch ~/.Xmodmap
然后输入
remove Lock = Caps_Lock remove control = Control_L keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add lock = Caps_Lock add control = Control_L
即可。
交换Shift_L和Alt_L
继续在.Xmodmap 中添加
remove shift = Shift_L remove mod1 = Alt_L keysym Shift_L = Alt_L keysym Alt_L = Shift_L add shift = Shift_L add mod1 = Alt_L
最后log out重新log in即可。