What does it say when 50% of your blog posts are about keyboard layouts? Either that you are obsessed, or that you blog too little. Or as in my case, both.
I’ve been a keyboard tinkering addict for 18 months. (It’s a thing - check the end of this post). I’ve spent weeks thinking about it. Not a working day goes by when I don’t stop mid finger yoga and wonder if there’s a better way of doing this. My neural pathways have spent so much energy re-routing that I lost weight because of it. (OK, that’s a lie). I’ve woken up from sleep at 2 AM with a new layout idea and couldn’t go back to sleep until I tried it out. (This isn’t a lie)
But something happened on 10 March 2017 that made me stop.
It wasn’t a conscious effort. It wasn’t extraneous factors. It wasn’t me not using a keyboard. Like the fag end of the process of getting over someone after breaking up, I realized several weeks later that I simply hadn’t thought about it in a long time. I had to go and check when my program was last modified to get the date I stopped.
Like a smoking addict trying to quit, I had told myself several times that I would stop tinkering from the next day, but didn’t. I marked the folder that contained my scripts as read-only, but my addiction was too strong. I’d just end up changing the folder back a day later.
So, what happened on 10 March 2017?
I designed a keyboard layout that didn’t need any more tinkering. If you think the last few paragraphs were a way to get you to read about my latest layout, then I am afraid I am guilty of that. If that (and the click-baity title) annoys you, then I am glad this discourse is happening through a screen and not over a beer - I doubt I’d enjoy the smell of it in my hair, the existence of a beer shampoo notwithstanding.
If it doesn’t annoy you, read on…
I strongly recommend anyone who spends significant time in front of a desktop (I guess that would be everyone who is still reading, and most that didn’t make it here) to use this. The first five people who use this for an hour a day for over a week and don’t find it useful get a beer from me. I’d love to hear feedback. More beer will follow..
I find myself coding faster, reaching for the mouse less and thinking while I navigating a document. After decades of typing, I have even started using more punctuation. When that happens, you know something fundamental has changed!
The picture at the end of the post summarizes everything. I’ll send you the code used for this modification if you are interested in giving this a whirl. These modifications were done on a Logitech k810 keyboard.
Principles (similar to my previous post):
- Minimize use of pinkies. They are the weakest fingers, but are very commonly used for enter, shift and control
- Commonly used keys should be easily accessible. We move our hands quite a bit every time we reach for the cursor keys, delete and backspace keys, and the document navigation keys.
- Enter key: very commonly used, but only accessible by the stretch of a pinky. I map the ; key to the Enter key.
- Cursor layer: use the left alt key to activate a layer on the alphabet keys on the keyboard. This layer does what is described below and makes it dead easy to use cursor keys and their combos with modifiers. The left alt key is also what most windows users are very habituated to using because of the Alt-Tab combo that most people use. This works as a hold modifier (Shift style) as opposed to a toggle modifier (Caps Lock style) changes the right side of the keyboard to cursor keys, document navigation keys, backspace, delete, esc, app and Tab keys. Full details are in the picture. changes the left home row to the modifier keys - Win, Ctrl, Shift and Alt
- Number keys as common modifier keys: The Ctrl key is one of the most difficult to reach keys on a windows keyboard, in spite of being very commonly used. The Shift key also needs pinkies. The number keys 2,3,9,0 are the easy to hit, even though they are used rarely. I use them for ctrl and shift keys on the left (2,3) and right (9,0). Since the left alt key has been used for the cursor layer, 4 is used as the left alt key. The 6 key is used to toggle the Cursor layer
- Number Layer: most people who type lots of numbers in for a living use the numpad available on most full sized keyboards. So, a numpad layer is created around the right home row to mimic the numpad on full size keyboards. In this layout, this layer becomes a necessity since the number keys are used as modifier keys. 1 key (held down) is used to activate the number layer.
- Special Character Layer: coders use a lot of special characters, often in combinations and I found it especially inefficient to hunt and peck as I started coding. There is also a heavy use of pinkies, either to hold down shift or the get to the special character cluster on the right side of the keyboard between the enter and backspace keys. Instead, I use the numbers 5 and 8 to activate a special character layer on the alphabet keys. Easy to reach alphabet keys can have the most commonly used special characters.
- Document navigation cluster: Full size keyboards have a document navigation cluster that is indispensable to many users. Since the [ ] \ ‘ are available easier through the special character layer, they can be co-opted for the document navigation cluster. I also map the rarely used print-screen key to Esc and F12 to Tab to be able to fully navigate a document using only the right hand.
- Misc changes: these are changes that aren’t essential to the core features of my layout, but are collateral benefits.
- Caps Lock: this key is very easy to access but needs the pinky. Since people rarely use caps lock, and I have used the left alt key to as a Cursor modifier, I use this as a left alt key instead.
- Left Shift: this key is also easy to access but needs the pinky. Since the 1 key (that is used to activate the number layer) is quite hard to reach (and needs the pinky anyway) I use the left shift key to activate the number layer.
- Shift+Tab: is commonly used to have the opposite effect of the tab key. Since the use of layers frees up so many keys, a single key on the cursor layer can be mapped to produce this combination.
- Cursor Layer options: When the cursor layer is activated, the left side of the keyboard is relatively free. So far only 4 keys have been used for the modifiers ( a - win, s - ctrl, d - shift, f - alt ). The other alphabet keys can me mapped to commonly used but hard to reach keys. I map e -> tab, and w -> Shift+Tab, so I can alt tab using the left hand alone. I also map q -> esc so that I don’t need to stretch while reaching for Esc with my left hand. Several keys are still left unmapped on the left side and can be used for further customization.
- Custom Layer: the 7 key is used to create a whole other custom layer exposing another 27 functions through the alphabet keys. I use it for emoticons, but most of the keys in this layer are still unused.
The colours indicate the layers. Curs* stands for a toggle style cursor layer.
The learning curve is shallow. It took my just an evening to get used to this layout. I have arranged many keys to mimic existing patterns, albeit in a different part of the keyboard. Look at the cursor keys in the cursor layer for instance. I think I have improved on many existing keyboard patterns as well. I derive the greatest benefit from how easy it is to hit the enter, backspace and Esc keys
Ping me if you want the Autohotkey program that changes a regular keyboard to the one above. Ping me if you want me to tell you how to mentally adapt to the keyboard quickly.
Great, now 60% of my posts are about keyboards.
Appendix - keyboard tinkering addiction
When one’s keyboard tinkering predilection makes the jump to out and out addiction, that person is said to have crossed the K-T boundary. Google it - it’s what killed the dinosaurs.