|
34 | 34 | "source": [ |
35 | 35 | "# Arno's Engram key layout\n", |
36 | 36 | "\n", |
37 | | - "The [Engram layout](https://github.com/binarybottle/engram-layout) is an optimal keyboard layout for touch typing in English created by [Arno Klein](https://binarybottle.com), with open source code.\n", |
| 37 | + "The [Engram layout](https://github.com/binarybottle/engram-layout) is a keyboard layout optimized for comfortable touch typing in English created by [Arno Klein](https://binarybottle.com), with open source code to create other optimized key layouts.\n", |
38 | 38 | "\n", |
39 | 39 | "\n", |
40 | 40 | " Q I O U D N L Y Z \n", |
|
102 | 102 | "In the future, I hope to include an engaging rationale for why I took on this challenge.\n", |
103 | 103 | "Suffice to say that I have battled repetitive strain injury since I worked\n", |
104 | 104 | "on an old DEC workstation at the MIT Media Lab while composing my thesis back in the mid-90s.\n", |
105 | | - "Ever since then I have experimented with different key layouts (Dvorak, Colemak, my own, etc.),\n", |
106 | | - "which place too much stress on tendons, with lateral extension of the index and little fingers,\n", |
| 105 | + "Ever since then I have used different key layouts (Dvorak, Colemak, my own, etc.),\n", |
| 106 | + "and have primarily used Colemak for almost 10 years. I find that they all place too much stress on tendons, with lateral extension of the index and little fingers,\n", |
107 | 107 | "and on uniform distribution of finger use, which has damaged my little fingers.\n", |
108 | 108 | "I have also experimented with a wide variety of human interface technologies\n", |
109 | | - "(voice dictation, one-handed keyboard, keyless keyboard, foot mouse, and ergonomic keyboards\n", |
110 | | - "like the Kinesis Advantage. I recently got an Ergodox that I am looking forward\n", |
111 | | - "to trying out with the Engram layout.\n", |
| 109 | + "(voice dictation, one-handed keyboard, keyless keyboard, foot mouse, and ergonomic keyboards like the Kinesis Advantage. I recently got an Ergodox that I am looking forward to trying out with the Engram layout.\n", |
112 | 110 | "\n", |
113 | 111 | "**\"Engram\"?** <br>\n", |
114 | | - "The name is a pun, referring both to \"n-gram\", letter permutations used to compute\n", |
115 | | - "this layout, and \"engram\", or memory trace, the postulated change in neural tissue\n", |
116 | | - "to account for the persistence of memory." |
| 112 | + "The name is a pun, referring both to \"n-gram\", letter permutations used to compute this layout, and \"engram\", or memory trace, the postulated change in neural tissue to account for the persistence of memory." |
117 | 113 | ] |
118 | 114 | }, |
119 | 115 | { |
|
211 | 207 | "\n", |
212 | 208 | "**E, T, A, O, I, N, S, R, H, L, D**, C, **U**, M, F, P, G, W, (Y), B, (V), K, (X), J, Q, (Z)\n", |
213 | 209 | "\n", |
214 | | - "The 12 letters are split across left and right sides by an optimization algorithm, which is then used to optimize the arrangement of the 6 letters on each side.\n", |
| 210 | + "An optimization algorithm splits the 12 letters across left and right sides, and then arranges the 6 letters on each side.\n", |
215 | 211 | "\n", |
216 | | - "The resulting arrangement led to all vowels on the left and the most common consonants on the right (except for H):\n", |
| 212 | + "The resulting arrangement has all vowels on the left and the most common consonants on the right (except for H):\n", |
217 | 213 | "\n", |
218 | 214 | " - I O U D N L - - \n", |
219 | 215 | " - H E A T S R - -\n", |
220 | 216 | " - - - - - - - -\n", |
221 | 217 | "\n", |
222 | 218 | "#### **Details** <br>\n", |
223 | | - "I set an initial location for E and T, the most common letters, with E on the left side and T on the right side, to encourage a balance of typing across left and right hands, and to reduce the number of permutations to compute (3,628,800 for 10 letters). Each permutation corresponds to a unique arrangement of letters, and we score each arrangement by the average of the scores for all possible pair of letters (bigrams) in this arrangement. The score for each bigram is a product of the frequency of occurrence of that bigram and the factors Flow, Strength, and Speed: \n", |
| 219 | + "I set an initial location for E and T, the most common letters, with E on the left side and T on the right side, to encourage a balance of typing across left and right hands, and to reduce the number of permutations to compute (3,628,800 for 10 letters). Each permutation corresponds to a unique arrangement of letters, and its score is the average of the scores for all possible pairs of letters (bigrams) in this arrangement. The score for each bigram is a product of the frequency of occurrence of that bigram and the factors Flow, Strength, and Speed: \n", |
224 | 220 | "\n", |
225 | 221 | "**Flow**: measure of ease of a finger transition from the first in a pair of letters to the second\n", |
226 | 222 | "\n", |
227 | 223 | "Flow factors to _penalize_ difficult key transitions include:\n", |
228 | 224 | " \n", |
229 | 225 | "- roll out from index to little finger\n", |
230 | | - "- either index or little finger on top row\n", |
231 | | - "- either middle or ring finger on bottom row\n", |
| 226 | + "- index or little finger on top row\n", |
| 227 | + "- middle or ring finger on bottom row\n", |
232 | 228 | "- index above middle, or little above ring \n", |
233 | 229 | "- index above ring, or little above middle\n", |
234 | | - "- index above little, or little above index\n", |
235 | 230 | "- ring above middle\n", |
236 | | - "- use same finger twice\n", |
| 231 | + "- use same finger twice for a non-repeating letter\n", |
237 | 232 | "- at least one key not on home row\n", |
238 | 233 | "- one key on top row, the other on bottom row\n", |
239 | 234 | "\n", |
|
1399 | 1394 | "side_up_2away_down = 0.95 # index above ring, or little above middle\n", |
1400 | 1395 | "side_up_3away_down = 1.0 # index above little, or little above index\n", |
1401 | 1396 | "ring_up_middle_down = 0.9 # ring above middle\n", |
1402 | | - "same_finger = 0.9 # use same finger twice\n", |
| 1397 | + "same_finger = 0.9 # use same finger twice for a non-repeating letter\n", |
1403 | 1398 | "not_home_row = 0.9 # at least one key not on home row\n", |
1404 | 1399 | "skip_home_row = 0.9 # one key on top row, the other on bottom row\n", |
1405 | 1400 | "\n", |
|
0 commit comments