改键记

从vim转到了emacs,大家知道:emacs频繁使用control键,而普通键盘的control键位于键盘一角,按起来颇不顺手。HHKB又买不起,为了预防关节炎、节约生命,改键!
BTW:不得不承认,HHKB的主键区排列是最合理的,其他键盘为何不跟进:-<。

交换CtrlCapsLk

首先想到的就是交换这两个键,这个很简单,直接运行gnome-tweak(中文名称叫优化,当然前提是先安装)。

  • 选 键盘与鼠标 -> 其它布局选项 -> Ctrl键位置 -> 交换Ctrl和大写锁定 -> 关闭
  • 重启gnome shell, 按Alt + F2,输入命令 r 并回车。

改完用起来确实顺手多了,但有一个问题,因为肌肉记忆的原因,频繁错按Ctrl(这时候已经是大写锁定了:-<),好不烦人,干脆不要大写锁定功能了!
于是…

CapsLk as Control, Control as Hyper

方法和上条相同,也是在gnome-tweak中设置,只是选择 Caps lock as Control, Control as Hyper 而已。

用了一段时间,挺好的,再也不用为误触烦恼了,多了一个Hyper键(一个上古键盘上的键,不过emacs支持,将来可以用作其它功能,)不过没有大写锁定,感觉总是缺点什么…
于是…

找回Caps Lock

于是上网各种搜索,终于找到了一个命令(xmodmap),可以用来重新定义键,我得做法是把pause这个从来没用过的键改成Capslk:

1
xmodmap -e "keycode 127 = Caps_Lock NoSymbol Caps_Lock"

xmodmap命令请参照:https://www.cnblogs.com/yinheyi/p/10146900.html ,里面有一个关于 xev 命令的介绍,非常好,相当于Windows的Spy,可以用来侦测消息,这里用来查找KeyCode(键盘扫描码)的。

运行完毕后键就改过来了,下一步是为这个命令找一个合适的位置让它自动启动,.zshrc是不行的,它只是在加载终端时执行。应该在gnome启动成功后立即加载。
只需要在 ~/.config/autostart/ 建一个.desktop文件就可以了,我的如下:

1
2
3
4
5
[Desktop Entry]
Type=Application
Name=pause2caps
Exec=xmodmap -e "keycode 127 = Caps_Lock NoSymbol Caps_Lock"

锦上添花

对于没有指示灯的小键盘来说,可以安装一个gnome插件,名字叫 Lock keys,用来在桌面右上角指示大小写状态。
下载: https://extensions.gnome.org/extension/36/lock-keys/