软件推荐之keyd
1. 是什么?
keyd 是一个用于进行按键重映射的程序,其通过直接操作内核的事件循环来进行重映射, 可以在没有显示服务器的情况下进行重映射。
同时基于其分层的配置体系,经过简单的学习就可以编写出复杂的键盘映射规则来。
2. 为什么需要键盘重映射
在终端应用程序中,大多数程序宁愿多定义一些快捷键也不愿意在界面中添加按钮或者提示。 而Ctrl作为使用的最多的修饰键承担着许多功能,比如vim中的补全就是通过按下ctrl-n/p 来实现的,而在Emacs中更甚,几乎所有的功能都需要按下ctrl作为修饰键。而偏偏ctrl处 于一个十分尴尬的位置,几乎要把小拇指弯曲到一个十分难受的角度才能按下按键,久而久 之,关节炎之类的病痛就该找上来了。
如何解决呢?答案是调换按键位置,如果你留心观察,不难发现,大写锁定键几乎可以被 shift按键完全的取代。某种意义上,大写锁定键是十分没用的按键,但是它的位置又十分 好,小拇指几乎不需要动就可以直接按下这个按键。如果把大写锁定和Ctrl键相互调换位置 就可以大幅减轻小拇指的负担。
3. 其他的按键映射方案
当然,keyd如果只有一个交换两个键的位置的功能,我也不会去推荐它。我推荐它的一个原 因是它可以实现复杂的按键映射配置。
比如“逃逸/控制重载按键布局”1这个布局就是把大写锁定键重载为短按ESC长按Ctrl 的功能。
keyd的官方项目中也有其他按键重映射方案,比如:
vim模式按键布局 :这个按键布局主要表现是,按下大写锁定之后再按下空格切换到vim 模拟层,让hjkl映射到左上下右的布局。
home-row模式布局 :这个布局就是把“asdf-jkl;”这行被称为“home-row”的按键位置 重新映射为长按修饰键,短按本键的模式。2
shift-空格延长布局 :这个布局就是按下shift并长按空格时,即使放开shift,只要空 格还在按下,就会持续模拟按下shift这个动作。在大写锁定已经被映射到其他按键的情况 下,这个布局在连续输入大写字符时会相当好用。
4. 我正在使用的键盘映射方案
首先,我对大写锁定键的执念十分强烈,我的几乎所有的定制都是在大写锁定键的基础上进 行的。
对于大写锁定键,比较基础的就是长按Ctrl短按Esc。在按下大写锁定键的期间,按下空格 键会切换层,下一个层,大写锁定是super键3。
同时在Ctrl层中,长按空格是按下super键,而在super层中长按空格是按下Ctrl键。
通过这个映射,我才可以避免把手弯曲来按下Ctrl键和super键。