Home Row Mods
Assuming you’ve already chosen a keyboard that suits your hands and typing style, you’ll want to focus on using that keyboard in a way that’s maximally ergonomic and efficient. The best optimization for this is something called “home row mods”. I am always surprised when I speak to engineers how obscure this setup is when it should be taught immediately after touch typing.
Home row mods map the home row keys on your keyboard, i.e. ASDF
on the left side and JKL:
on the right to modifier keys when they are held down, on a Mac those would be Shift
, Command
, Option/Alt
(which I’ll just refer to as Alt
for simplicity), and Control
. Although this might initially seem like an overengineered bit of nerd fiddliness (it did to me at first) it eliminates a massive amount of unnecessary hand movement and awkward finger combinations. It is also easy to master fairly quickly. In this essay I’ll briefly walk you through how to set this up on your keyboard and give a brief take of my experience using home row mods for the past few years.
Setup
The prerequisite to setting up home row mods is that you have a keyboard which supports customization. This can be done a number of ways, QMK is a common open source keyboard fimrware that supports this. You used to have to code it yourself but now there are a bunch of great GUI-based options for configuration when working with QMK. I primarily use ZSA keyboards which use their own browser-based tool called Oryx basically a polished up UI on what I’m sure is QMK somewhere under the hood. However you are customizing your firmware, you’ll need to figure out how to change the behavior of a key according to whether it’s tapped or pressed and held down.
Which Mapping?
There’s good and bad news when it comes to determining what mapping to go with. The bad news is that virtually nobody else uses home row mods so your muscle memory isn’t going to help you when using a regularly mapped keyboard. The upside of this is that since there’s no standardized way of configuring home row mods, the world is your oyster, any mapping is permissible. Instead of being prescriptive in this essay about the “right way” to map your keys I’ll offer some general principles and then explain my own setup. YMMV and you should experiment with what fits your hands and typing style the best, which of course looks different for everyone.
The first principle is redundancy. The reason for this is that since your home row keys will now be doing double-duty, you need two options for your modifier key. An example, you map Command
to S
. You are typing furiously to meet a deadline - quick, you must save your file! You have become such a home row zealot that you have removed the original Command
key from your keyboard. You now have no keyboard-based way of pressing Command+S
to save. You feel like a failure as you reach for the mouse to save your work. Since you don’t want to feel like a failure, it’s best to give yourself a backup option for this very key-combination reason.
The second principle is symmetry. Whichever mapping you go with, it should be mirrored between the hands. For example the behavior of pressing and holding F
should produce the same behavior as pressing and holding J
, D === K
and so on. There’s no great example I can provide on why this is important for keymappings specifically but it feels like symmetry is easier for cross-body tasks. For example, think of the mental friction involved in patting your head and rubbing your stomach at the same time. If you’re the genetic anomaly who has no issue with breaking symmetry for something like this, you’re probably not reading an article on baby’s first home row mods anyways - keep being freaky.
The third principle is to HAVE FUN (this is also the first rule of firearm safety). Joking aside, the third principle is customization. Here’s the mapping I use:
F,J = Shift
D,K = Command
S,L = Alt
A,: = Control
I like this mapping because it works well with my workflow which is somewhat unique to me as yours is to you. That’s what you should strive for. Start with this mapping but pay attention, are you using Control
a LOT in your workflow? Maybe it makes sense to bump it to a stronger finger than the pinky as I have it here.
As with everything else I post on workflow optimization - experiment around, pay attention to your body and see if it makes your work a bit easier.