Abstruct
2023 is a start of AI era, with more strong AI tools explore to our life, typing maybe replaced by voice input one day, where natural language programming become true. But until now, typing is still not replacable. From daily usage to programming, the location of the keys may significantly effect the comfortable of long time typing. Here is a brief solution that hope to enhance the experience when typing on standard 78% keyboard.
Reason to redesign.
I use Macbook Air as my main machine, stick to it and cannot use an customizable
keyboard like planck’s keyboard and hhkb keyboard for the desire of
protable. The plain of using standard 78% keyboard on Macbook is the overusage
of pinky, Backspace
, [
, ]
, -
, =
and Enter
are all handled by right
pinky. As my right pinky is much weaker than left, which make typing long time a
difficult, inefficient and tired task. I believe it is true for other user who
programming a lot with Macbook.
There are so many plans and existing well designed layouts on the Internet, while they are mainly for one who use a external non-standard keyboards instead of standard. So I hope there will be more disscusion about configuration of trivail standard keyboard.
Choose of base layer, Qwerty
Not Colemak, Dvoark and any non-Qwerty. I have tried Colemak and Dvoark, but the musale memory of Qwerty is too strong that make me feel more natural and comfortalbe typing on Qwerty. Moreover, the change of layout may not bring significant advantages and comfor for typing, 10 keys on homerow is never enough, whatever layouts, your fingers still need to move along three rows to type characters. The analysis of those Qwerty alternative always be to ideal, without mention of muscale memory and symbols make such change not really solve the plain. Another reason is that the time cost is too high and the improvement is not that big, there is not need to explain why the time cost is high as it is well explained by those Qwetrty touch typer how share their experience of switching to non-Qwerty.
Analysis before design
Except the function row, all row is easier to reach even for number rows. I don’t touch type numbers rows using pinky fingers. Instead, I use ring fingers which are much longers then pinky fingers. So the keyboard layout don’t need to relay on layers heavily like 40% planck’s keyboard.
Let counts the key we need:
- 30 characters on the main area of the keyboard including
,
,.
,/
and;
. - 13 keys on numbers
- 8 modifier keys,
capslock
,left right option
,left right command
,left shift
,control
,fn
I don’t count right shift since I never use it. - 4 special keys, including
space
,reutrn
,tab
anddelete
. - 4 arrow keys, I don’t want to use home row arrow keys, since I seldom use them, there is no need to prepare a layer for them.
61 keys is already sweat enough for daily used, for those shortcut, I usually reduce them from three or above keys into two keys by define a customizing layer.
Layers
There are two types of layers, dead keys and modifers
Dead keys
The layout of keyboard is chagned permanently untill you press other keys or the inactive keys. One of the exmaple are the comma of workman-dead.
modifers
The layout is changed temporary, the layout return to default after release. One
of the example is shift
.
My solution
There are some keys that is underused, like space, tab and return. There are much space that can be leveraged. They should perform tap-mode, which provide two funciton when tap and held them down.
- Remap
space
tospace
when tap,shift
when held. It is much comfortable compare to use pinky finger to press shift. - Remap
left shift
toescape
when tap,control
when held. I use vim. - swap numbers and symbols for programming.
- remap
caps lock
to=
when tap, switch layer when held. - swap quote
'
and double quote'
, and locate at the original position of open bracket. - move hyphen and underscore to the original position of quote.
- move backslash and pipe to the original position of hyphen.
Layers: caps lock layers(held down caps lock): u: ] i: [ j: } k: {
Macro sequences
You can define a simple key that perform a sequence of key. It is better put them in a layer to avoid error when typing. I have defined some in the caps lock layer. d: -> f: != :: @:
Implementation
You may wonder how to implement those change on Mac, you may use Karabiner Elements together with Goku to define your own keyboard layout.
Conclusion
There are lots of method to increase comfortable and efficiency to get the job
done, before typing to modify your keyboard, make sure you have tried to use
good tools like Vim, IDE, auto compeletion, snippets and scritping to
reduece typing. Single modification of keyboard won’t make you a better typer.
With the help of snippets and auto completion, I now write code with less demand
to type all the symbols manually, therefor a entire symbols layers on homerow is
no needed(Previously I have one, use space to active, convert home row into
common used symbols.)