修改标准键盘布局以便适应自己的workload
2025年1月1日2010年我使用了半年以上的德沃夏克Dvorak键盘布局。当时测试了快蹄qwerty布局和Dvorak的打字速度,发现训练半年后Dvorak的速度还是qwerty的三分之二。
主要原因有三:
1. Dvorak的按键操作精密,手背的筋有抽筋的感觉。
2. 非标准布局的支持问题:学校电脑、公司电脑、手机不一定都能更改键盘布局。有人用我的电脑或帮我写代码时有问题。
3. 破坏了很多快捷键的设计。包括游戏、Vim、Windows自带快捷键等。
我们绝大多数人都是用标准qwerty布局,所以我们最好从这个标准布局按自己的workload修改。
Sample Workload
git clone https://gitlab.com/gqq-my-master/character-frequencies
。在这个Python脚本,你可以设置一个文件夹,脚本会读取该文件夹和子文件夹里的指定文件(fileInclusionPatterns),统计alphabet frequencies。如果统计代码文件夹,该脚本还可以跳过代码文件开头的preamble,比如版权说明。
我的话我统计了我写的英文文档和代码文件。
character | latex frequency | C++ frequency | weighted frequency |
---|---|---|---|
‘space’ | 11.50 | 15.36 | 14.07 |
‘_’ | 0.10 | 2.27 | 1.55 |
‘-‘ | 0.39 | 0.48 | 0.45 |
‘,’ | 0.82 | 1.09 | 1.00 |
‘;’ | 0.13 | 1.15 | 0.81 |
‘:’ | 0.13 | 0.45 | 0.34 |
‘!’ | 0.01 | 0.09 | 0.06 |
‘?’ | 0.01 | 0.02 | 0.02 |
‘.’ | 3.11 | 0.63 | 1.46 |
”’ | 0.08 | 0.12 | 0.11 |
‘”‘ | 0.02 | 0.38 | 0.26 |
‘(‘ | 0.39 | 1.47 | 1.11 |
‘)’ | 0.39 | 1.47 | 1.11 |
‘[‘ | 0.27 | 0.09 | 0.15 |
‘]’ | 0.27 | 0.09 | 0.15 |
‘{‘ | 1.39 | 0.30 | 0.66 |
‘}’ | 1.38 | 0.30 | 0.66 |
‘@’ | 0.02 | 0.05 | 0.04 |
‘*’ | 0.03 | 0.89 | 0.60 |
‘/’ | 0.06 | 0.59 | 0.41 |
‘\’ | 2.01 | 0.14 | 0.76 |
‘&’ | 0.07 | 0.21 | 0.16 |
‘#’ | 0.02 | 0.15 | 0.11 |
” | 0.33 | 0.04 | 0.14 |
‘`’ | 0.04 | 0.00 | 0.01 |
‘^’ | 0.01 | 0.01 | 0.01 |
‘+’ | 0.03 | 0.14 | 0.10 |
‘<‘ | 0.05 | 0.12 | 0.10 |
‘=’ | 0.35 | 0.63 | 0.54 |
‘>’ | 0.07 | 0.37 | 0.27 |
‘|’ | 0.02 | 0.08 | 0.06 |
‘~’ | 0.09 | 0.01 | 0.04 |
‘$’ | 0.30 | 0.00 | 0.10 |
‘0’ | 0.80 | 0.43 | 0.55 |
‘1’ | 2.00 | 0.29 | 0.86 |
‘2’ | 1.71 | 0.22 | 0.72 |
‘3’ | 1.07 | 0.11 | 0.43 |
‘4’ | 0.87 | 0.09 | 0.35 |
‘5’ | 0.90 | 0.08 | 0.35 |
‘6’ | 0.93 | 0.09 | 0.37 |
‘7’ | 0.93 | 0.05 | 0.34 |
‘8’ | 0.92 | 0.09 | 0.37 |
‘9’ | 0.88 | 0.04 | 0.32 |
‘a’ | 4.73 | 3.30 | 3.78 |
‘A’ | 0.12 | 0.67 | 0.49 |
‘b’ | 0.95 | 0.73 | 0.80 |
‘B’ | 0.05 | 0.35 | 0.25 |
‘c’ | 2.56 | 2.02 | 2.20 |
‘C’ | 0.25 | 1.13 | 0.84 |
‘d’ | 2.28 | 1.92 | 2.04 |
‘D’ | 0.10 | 0.79 | 0.56 |
‘e’ | 7.65 | 6.09 | 6.61 |
‘E’ | 0.14 | 0.98 | 0.70 |
‘f’ | 1.30 | 1.33 | 1.32 |
‘F’ | 0.11 | 0.46 | 0.34 |
‘g’ | 1.47 | 1.10 | 1.22 |
‘G’ | 0.05 | 0.49 | 0.34 |
‘h’ | 1.91 | 1.56 | 1.68 |
‘H’ | 0.04 | 0.29 | 0.21 |
‘i’ | 4.65 | 3.73 | 4.04 |
‘I’ | 0.20 | 0.87 | 0.65 |
‘J’ | 0.05 | 0.05 | 0.05 |
‘j’ | 0.05 | 0.01 | 0.02 |
‘k’ | 0.39 | 0.44 | 0.42 |
‘K’ | 0.04 | 0.11 | 0.09 |
‘l’ | 2.65 | 2.24 | 2.38 |
‘L’ | 0.11 | 0.80 | 0.57 |
‘m’ | 1.97 | 1.45 | 1.62 |
‘M’ | 0.18 | 0.44 | 0.35 |
‘n’ | 4.55 | 3.60 | 3.92 |
‘N’ | 0.05 | 0.58 | 0.40 |
‘newline’ | 1.89 | 3.19 | 2.76 |
‘o’ | 4.17 | 3.27 | 3.57 |
‘O’ | 0.04 | 0.68 | 0.47 |
‘p’ | 1.50 | 1.59 | 1.56 |
‘P’ | 0.11 | 0.54 | 0.40 |
‘q’ | 0.18 | 0.05 | 0.09 |
‘Q’ | 0.01 | 0.01 | 0.01 |
‘r’ | 3.87 | 3.51 | 3.63 |
‘R’ | 0.18 | 0.80 | 0.59 |
‘s’ | 3.65 | 3.40 | 3.48 |
‘S’ | 0.20 | 1.14 | 0.83 |
‘t’ | 5.85 | 5.24 | 5.44 |
‘T’ | 0.29 | 0.92 | 0.71 |
‘tab’ | 0.16 | 2.70 | 1.85 |
‘u’ | 1.66 | 1.43 | 1.51 |
‘U’ | 0.04 | 0.36 | 0.25 |
‘v’ | 0.56 | 0.57 | 0.57 |
‘V’ | 0.03 | 0.20 | 0.14 |
‘w’ | 0.63 | 0.58 | 0.60 |
‘W’ | 0.03 | 0.29 | 0.20 |
‘x’ | 0.34 | 0.46 | 0.42 |
‘X’ | 0.01 | 0.08 | 0.06 |
‘y’ | 0.85 | 0.55 | 0.65 |
‘Y’ | 0.02 | 0.10 | 0.07 |
‘z’ | 0.18 | 0.13 | 0.15 |
‘Z’ | 0.03 | 0.02 | 0.02 |
sum | 99.98 | 100.02 | 100.01 |
我的weighted frequencies是按照latex 1 C++ 2的比例计算的。
该结果不能和english alphabet frequencies直接比较。比如《The frequency of the letters of the alphabet in English》只统计26个英文字母,而我们包含了标点符号。但order仍可比较。
例如,《The frequency of the letters of the alphabet in English》最频繁的字母是EARIO。而我的最频繁字母是ETINS。
Analyze frequency distribution
tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ |
1.85 | 0.10 | 0.80 | 7.31 | 4.22 | 6.15 | 0.72 | 1.76 | 4.68 | 4.04 | 1.96 | 0.15 | 0.15 | 0.76 |
control | a | s | d | f | g | h | j | k | l | ; | ‘ | newline | |
4.26 | 4.31 | 2.60 | 1.66 | 1.57 | 1.88 | 0.07 | 0.51 | 2.95 | 0.81 | 0.11 | 2.76 | ||
shift | z | x | c | v | b | n | m | , | . | / | shift | ||
0.17 | 0.48 | 3.04 | 0.71 | 1.05 | 4.32 | 1.98 | 1.00 | 1.46 | 0.41 | ||||
total | 6.39 | 5.59 | 12.95 | 15.37 | 10.74 | 6.19 | 8.44 | 7.11 | |||||
hand | 40.29 | 32.48 |
shift、control的频率没有统计,因为我不打算更改这些键的位置。但就算不统计也知道,这些键一定是pinkie按的。
按照统计图,我的右手手指的频率分布不好。middle finger的工作量小于pinkie。
吸收尝试Dvorak的经验,我这次只交换两个按键。根据统计图,我应该处理pinkie和middle finger的workload。发现p和k适合交换。
交换后的频率图如下。
tab | q | w | e | r | t | y | u | i | o | k | [ | ] | \ |
1.85 | 0.10 | 0.80 | 7.31 | 4.22 | 6.15 | 0.72 | 1.76 | 4.68 | 4.04 | 0.51 | 0.15 | 0.15 | 0.76 |
control | a | s | d | f | g | h | j | p | l | ; | ‘ | newline | |
4.26 | 4.31 | 2.60 | 1.66 | 1.57 | 1.88 | 0.07 | 1.96 | 2.95 | 0.81 | 0.11 | 2.76 | ||
shift | z | x | c | v | b | n | m | , | . | / | shift | ||
0.17 | 0.48 | 3.04 | 0.71 | 1.05 | 4.32 | 1.98 | 1.00 | 1.46 | 0.41 | ||||
pinkie | ring | middle | index | index | middle | ring | pinkie | ||||||
total | 6.39 | 5.59 | 12.95 | 15.37 | 10.74 | 7.64 | 8.44 | 5.66 | |||||
hand | 40.29 | 32.48 |
可惜k和p的位置没有跟Dvorak或Colemak布局匹配。
最后,更改Windows按键映射,可以用https://github.com/randyrants/sharpkeys/。
用File locator Pro验算,发现确实p比k常用。