在打字的时候如果需要移动光标,把手指挪到方向键的位置很不方便,但是 Capslock 键在很好按到的位置。vim 虽然是一个很好的选择,但是学习 vim 需要改变一些原有的打字习惯,以及 vim 的操作逻辑总是要在各种文本编辑器软件中实现,无法做到全局操作。Windows 中的 Capslock+ 以及 Linux 系统中的 xxx (需要自己设置)利用 Capslock 组合键解决了这个问题。
Capslock+
下载之后还可以参考 CapsLock+settingsDemo.ini 中的格式,在 CapsLock+settings.ini 中加入自己需要的组合键。
keyd
Linux 中虽然有很多能够实现各种 key remapping 功能的软件,但是很多都在 Wayland 中没法用。keyd 通过内核级的操作规避了这个问题:
keyd attempts to solve this problem by providing a flexible system wide daemon which remaps keys using kernel level input primitives (evdev, uinput).
配置文件
Arch linux 中,keyd 的配置文件路径为 /etc/keyd/default.conf
keyd 虽然有非常详细的 man page ,但是不像 Capslock+ 那样有一个现成的配置文件可以照葫芦画瓢,因此配置文件写起来会麻烦一点。这里直接给出我现在在用的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ids] * [main] # 定义 Capslock 键的功能 # - 短按: capslock (大小写锁定) # - 长按: 切换到 [nav] 层 capslock = overload(nav, capslock) [nav] # 这是一个自定义的导航层 (layer) # 只有当 Capslock 被按住时,这里的映射才会生效 # --- 基本光标移动 (Vim-style) --- i = up k = down j = left l = right # --- 扩展光标移动 --- # Capslock + p: 移动到行首 (Home) p = home # Capslock + ;: 移动到行末 (End) - 新增 semicolon = end # Cpaslock + b: 向下移动 10 行 b = macro(down down down down down down down down down down) # --- 文本选中功能 --- # Capslock + u: 选中至行首 (Shift + Home) u = S-home # Capslock + o: 选中至行末 (Shift + End) o = S-end # Capslock + h: 向左选中一个单词 (Shift + Ctrl + Left) h = S-C-left # Capslock + dot: 向右选中一个单词 (Shift + Ctrl + Right) dot = S-C-right # Capslock + y: 向上选中 10 行 y = macro(S-up S-up S-up S-up S-up S-up S-up S-up S-up S-up) # Capslock + m: 向下选中 10 行 m = macro(S-down S-down S-down S-down S-down S-down S-down S-down S-down S-down) # --- 文本编辑功能 (新增) --- # Capslock + Enter: 在行末换行 (End -> Enter) enter = macro(end enter) # Capslock + Backspace: 删除当前行 (Home -> Shift+End -> Backspace) backspace = macro(home S-end backspace)