天天打字, 速度就是生命. 那么, 如何讓鍵盤更好的服務自己呢?
第一, 你要盲打, 包括數字鍵和符號鍵; TODO: 練習. 推薦 keybr.com.
第二, 改造你的鍵盤. TODO: 看完本文, 配置自己的鍵盤.
如何改造鍵盤? 這里有幾個參考方向:
- 換一個鍵盤布局, 比如 Dvorak;
- 去掉不常用的鍵, 換成更有用的鍵 (或者按鍵組合);
- 在不影響原來按鍵的情況下, 給它增加功能.
這里, 1 和 2 都是侵入式的, 使用它們來改造鍵盤, 動作太大, 需要花一些功夫適應. 我當年就用了暑假一個多月來練習 dvorak 的盲打. 作為一個 dvorak 死忠粉, 我仍然不建議你這樣改造鍵盤, 尤其... 如果你是一個 devops, 需要經常使用其他人的電腦.
這里的 3 就是本文的重點.
(按鍵的表示, 舉例: C-a
標識 Control+A, M-x
表示 Alt+X (或者 Option+X), ESCAPE
, RETURN
, SPACE
分別表示跳出符, 回車符, 和空格鍵. )
概念
首先介紹一些概念:
- /KeyDown/: 按下一個按鍵;
- /KeyUp/: 抬起一個按鍵;
- /Modifier Key/: 修飾鍵, 比如
shift
可以讓a
變成A
,control
可以讓c
變成一個能代表復制操作的鍵; - /Key Sequence/: 按鍵序列, 這里特指有組合效用的按鍵, 比如在一般的 shell 下
ESCAPE
a
這兩個鍵等效于C-a
(回到行首)
這里 KeyDown 和 KeyUp 很重要. 雖然你不太會留意自己打字的時候按鍵是什么時候上屏, 但你應該知道是 key down, 或者 key up, 只能是其中一個時刻. 這是一個 "漏洞", 利用它可以用來擴展你的鍵盤.
"漏洞"
一個更明顯的漏洞是很多 Modifier key 根本沒有和其他鍵盤綁定. 那我們自己綁定它啊! 我把自己電腦上的 Fn+J, Fn+K, Fn+L... 綁定到了方向鍵左, 下, 和右... 這樣一來, 我的 I/J/K/L/U/O
在和 Fn 一起按的時候, 就分別變成了 上, 左, 下, 右, HOME (回到行首), END (到行尾)
. 我們成功地擴充了自己的鍵盤, 而且還沒有影響既有的配置.
另一個漏洞, 剛才已經提到, 是關于 key down 和 key up. 這里有一個概念叫 dual-role key, 指的是一個按鍵 (key) 有兩個 role (功能/角色/職責). 兩個 role 互不影響的套路是, 第一個 role 發生在 key up 的那一時刻, 第二個 role 發生在 key down 的過程中 (key up 之前). 所以, 我們只要讓一個鍵 "上屏" 的時刻從 key down 挪到 key up. 就能在 down 之后, up 之前插入一個新的 functionality (功用).
Dual-role key 就是干這個的. 比如我的設置里, CAPS LOCK 鍵是一個 dual-role key, 在單獨敲擊這個鍵的時候 (key up), 它代表一個 ESCAPE 鍵 (根本沒有啥切換大小寫的場景, 所以我把它映射成了 ESCAPE 鍵); 在我按下這個鍵, 沒有 key up 的時候, 如果按了其他的鍵, 這個 CAPS LOCK 又像是一個 control 鍵. 最終效果是, CAPS LOCK 變成了 ESCAPE 和 control 鍵的合體. 互不影響.
唯一的不足是, 單獨按 CAPS 鍵, ESCAPE 只會在 key up 的時候上屏, 有些人會覺得有點延遲. (Tip: 打字要 swiftly, down & up 干脆點, 就不會覺得有延遲了)
所有的 modifier 鍵 (單獨按沒有啥作用) 都可以自己定制呢.
設置
具體不說了, Windows 上用 AutoHotkey 可以輕松實現; Linux 上用 xcape; macOS 上用 Karabiner.
當你有了這個概念, 怎么實現都只是 google 的問題.