No More Finger Typing Gymnastics


The Dilemma
Home Row Mods to the Rescue
Is This Just Another Gimmick?
Okay, I'm Sold. How Do I Get Started?
Using Karabiner Elements
One More Thing...
Closing Notes
Useful Links
The Dilemma
We spend a surprisingly large amount of time on our keyboards each day, typing away, getting things done (be it for work or play). It could be typing out a word document (that report whose deadline is due the next day), or filling in an Excel sheet (a daily routine in bookkeeping), or even just taking some notes (journaling maybe?). Whilst completing these tasks, it's very likely that you will need to use some specific function of the program, like copying (Ctrl + C) and pasting (Ctrl + V), or 'undo' (Ctrl + Z), saving the document (Ctrl + S), to name a few. The macOS version of these would be something like (Cmd + C) for saving. Most of these commands, among others, are pretty standard in most programs/apps we use, and have been ingrained in most people's muscle memory.
The issue, however, is that the keys that enable us to perform these shortcuts, i.e. the Ctrl, Cmd, Alt/Option, and Shift keys (also known as the 'mod' keys) aren't positioned well on most generic keyboards and require us to move our hands off the home row (and off the keyboard for some) and then place our fingers on them, or even worse, twist and bend our fingers to reach them whilst pressing the other keys to complete the shortcut.
Over time, performing these finger stances can hurt our fingers and even lead to Repetitive Strain Injuries. We rely on these shortcuts to get things done, so quitting using them is not on the table. "Then what can we do about this?" you ask.
Home Row Mods to the Rescue
Enter 'home row mods' (home row mods have joined the chat). "What are home row mods?" you ask. 'Mods' or modifier keys are the keys like Ctrl and Shift that, when combined with other keys, allow us to perform those specific shortcuts and tasks. 'Home row mods' simply means that those keys are positioned on the home row, right underneath our fingertips, which means we won't need to twist and turn our fingers to reach them. Now you're probably wondering what happens to the keys that were originally on the home row. Well, we still keep them in the same positions, however the behavior of the keys now depends on how we press them. So now, a single tap of the key would give the normal key value, but a long press would result in a modifier key being activated (the long press behavior is similar to how we use the Ctrl, Cmd, Alt/Option and Shift keys in their normal positions).
Is This Just Another Gimmick?
The short answer is no, you're still using your Command, Ctrl, Shift, and Option keys the same way you always have (i.e., long pressing the key and combining it with another key press). The difference being the fact that you've moved those keys to your home row, making it way easier for your fingers to reach them, without having to move your hands (or worse, bending and straining your fingers just to reach a mod key).
And since we spend so much time on our computers, and our hands do so much for us each day, beyond just typing, and we also like to take care of ourselves, why wouldn't we want to make things easier for our hands and fingers? And you still get to use your home row keys (asdf - jkl;) like you normally would.
Okay, I'm sold. How Do I Get Started?
The best part of this is that you don't need a fancy new keyboard to start using home row mods, you can just use your default or laptop keyboard that you use everyday to get started, with the help of an app/program known as "Karabiner-Elements". Karabiner-Elements is a user-friendly and easy to use app that allows you to configure and modify your keyboard's keys to behave differently from the default behavior. And thus we can use it to modify the home row keys of our keyboard to allow them to act as home row mods when we long press them. For example, we can map the keys Cmd, Alt/Option, Shift and Ctrl to the keys a, s, d and f respectively. Thus when we tap the key 'a' we get 'a' but if we long press 'a' then we activate the mod 'Cmd'.
Another common use case for Karabiner-Elements is to convert the 'Caps Lock' key into the 'Esc' key, for those that use the Esc key heavily in their day-to-day tasks.
Using Karabiner-Elements
- Permissions - Upon installing/opening Karabiner-Elements, you will be asked to give it permissions in the "Login & Extensions" section of the system settings, as well as in the "Privacy and Security" section, and any other permissions that it might need. Refer to this article for more details on the permissions needed, as well as the official Karabiner-Elements docs.
- Upon opening the app, you will land on the Simple Modifications section. You may be asked to select your keyboard as well as selecting the type of keyboard you have.
- In this section you can make simple key modifications for your keyboard; however, for setting up home row mods, we will need to go to the Complex Modifications section of the app, where we get the option to "Use a predefined rule" or "Setup new rule". For this part, we will select the Setup New Rule option.
- You will then be presented with a simple in-app text editor with an example JSON config inside. Karabiner-Elements uses a JSON config format to setup these complex modifications. Feel free to delete that example in the editor and paste in the following JSON config:
Phew, that's a bit long, but the gist of it is that it will setup the following key modifications:
- a - Left Command
- s - Left Option
- d - Left Shift
- f - Left Control
- j - Right Control
- k - Right Shift
- l - Right Option
- semicolon - Right Command
- Thus, long pressing any of these keys should trigger the respective mod key. Feel free to change this setup to suit your own desired home row mods layout, e.g., you might want to have the Command mod on F, as opposed to A like I did in my setup.
- The config also sets up a "tap + tap and hold" for the keys J and K, to trigger key repeating for the keys J and K, since a normal long press is now assigned to a home row mod. (I need this behavior for navigation in Vim)
Pro Tip!! If you prefer modifying the config in your own default editor, you can access the full Karabiner-Elements JSON config in the path
~/.config/karabiner/karabiner.json
and paste the JSON above in the array value of the "rules" property.
One more thing...
We might need to adjust the amount of time it takes for a key press to be detected as a single tap and the amount of time it takes for a key press to be detected as a long press. Ideally, you want the long press detection time to be low enough that you don't have to wait a long time for a long press to be detected (which would slow you down) but high enough that you don't accidentally trigger a long press with a single tap whilst typing, which could lead to lots of mistakes when typing.
We might also need to adjust the max time window within which we can trigger the "tap + tap and hold" behavior.
These can be adjusted in the parameters section of the Karabiner-elements gui.
The parameters:
- to_if_alone_timeout_milliseconds -> the max tap detection time
- to_if_held_down_threshold_milliseconds -> the long press detection time
- to_delayed_action_delay_milliseconds -> the max time window within which we can trigger the "tap + tap and hold" behavior
- simultaneous_threshold_milliseconds -> the simultaneous mods (e.g Ctrl + Shift) detection.
Please refer to docs to get the most accurate descriptions of each.
My parameters:
- to_if_alone_timeout_milliseconds -> 1000 (this is the default value)
- to_if_held_down_threshold_milliseconds -> 110 (my custom value)
- to_delayed_action_delay_milliseconds -> 250 (my custom value)
- simultaneous_threshold_milliseconds -> 50 (this is the default value)
Closing notes:
I do hope that you have fun getting started with home-row mods, and I encourage you to try it with a friend, which can be an encouraging boost toward embarking on and completing your transition to home-row mods, and also help you to be more pro-active in adopting the layout. And for those that own more sophisticated keyboards/external keyboards, I recommend you use the software that comes paired with your hardware to make this modification/change.
Useful Links:
Subscribe to my newsletter
Read articles from Adrian Nare directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Adrian Nare
Adrian Nare
📺 Frontend dev ⚛️ Reactjs, Typescript, nextjs, node, TaliwindCss, 📺 I use vim btw