I love my keyboard! It’s the perfect tool: practical, comfortable, and customizable. And, although there have been iterations on the ErgoDox layout that some may argue fix flaws with the original, I try (and sometimes fail…) to find a compelling use for every key. Here I document a home-grown keymap that I use daily for typing, “programming”, and, most importantly, gaming.
Ergonomics
First, let’s talk comfort. One might think that the main ergonomic
benefit to the ErgoDox is its split layout. While the ability to
spread the keyboard out more is beneficial to your shoulders,
the most important feature, in my opinion, is its columnar
layout. This means all keys are positioned directly above and below
home row. Instead of reaching side-to-side to press keys not on the
home row, for most keys, you simply extend or retract the joint. Once
you adjust to typing this way, it feels amazing. It requires much
less side-to-side movement, although you are unfortunately required
to move your pointers inwards for keys like QWERTY’s T
and N
that are not directly above or below the home row.
Layout
I currently use the Colemak-DH keyboard layout. For me, the primary reason for using an alternative layout is comfort. I’ve always found QWERTY to be somewhat uncomfortable, with many common keys requiring large movements. Colemak is designed to alleviate this issue by putting the most common keys on the home row. The DH variant in particular is designed to prioritize keys which are in the same column as the pointer fingers, rather than those which require lateral movement.
Base layer
The base layer is pretty straightforward: it contains just about
every key you’d expect. A
to Z
, 0
through 9
, modifiers,
and punctuation. Nevertheless, there are some surprises.
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |MO(CONF)|
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | F | P | B | { | | } | J | L | U | Y | ; | \ |
* |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
* | Esc | A | R | S | T | G |------| |------| M | N | E | I | O | ' |
* |--------+------+------+------+------+------| MO(2)| | MO(2)|------+------+------+------+------+--------|
* | LS/( | Z | X | C | D | V | | | | K | H | , | . | / | RS/) |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | LCtl | LGui | LAlt | | | | | | RAlt | RGui | RCtl |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Home | End | | Vol- | Vol+ |
* ,------+------+------| |------+------+------.
* | | | PgUp | | H(M) | | |
* | MO(3)| Enter|------| |------| BkSp | Space|
* | | | PgDn | | Mute | | |
* `--------------------' `--------------------'
*/
Off the bat, right and left Shift
have an additional function: when
tapped instead of held, they print (
and )
, respectively. This
is nicknamed space cadet Shift
and is simply more comfortable to
me than Shift-{9,0}
. I snuck in a few media keys on the right-hand
thumb cluster, though I will admit I rarely use my thumb for these
keys (it’s really more of a pointer-finger cluster in that way). The
conventional location for the Backspace
key is now a modifier
key for configuration-related hotkeys (for things like switching
layers and putting the keyboard in flashing mode), with the actual
Backspace
being moved to the left of the Space
key, on the right
thumb cluster. The Enter
key has been edged out of the right-hand
side by '
, which now lives on the left thumb cluster. Next to Enter
lives the mysteriously named MO(3)
, a momentary layer-switch that
brings up some keys that are very important to me: Dota keys.
Dota keys
This layer is designed to faciliatate the extensive use of hotkeys in, Dota 2, a competitive online game. It allows for 100% hotkey coverage (on one hand!) for just about every action you can perform ingame, from purchasing items in the Quick Buy section and calling the courier to spamming chat wheels and taunts. Even most professional players I have watched sometimes click UI elements with their mouse, wasting precious milliseconds!
/* Keymap 3: Dota/misc layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | \/ | F1 | F2 | F3 | F4 | H | P | | | | F13 | F14 | F15 | F16 | PScr |
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | \/ | F5 | F6 | F7 | F8 | L | J | | | | F17 | F18 | F19 | F20 | SLck |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | \/ | Z | X | C | K | Y |------| |------| Left | Down | Up | Right| | Paus |
* |--------+------+------+------+------+------| U | | |------+------+------+------+------+--------|
* | \/ | V | B | N | , | M | | | | | LGui | LAlt | RAlt | RGui | \/ |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | \/ | F9 | F10 | F11 | F12 | | F21 | F22 | F23 | F24 | \/ |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | Prev | Next |
* ,------+------+------| |------+------+------.
* | | | | | H(D) | | |
* | \/ | \/ |------| |------| Del | Ins |
* | | | | | Play | | |
* `--------------------' `--------------------'
*/
(Mostly) default ingame settings:
I utilize a single thumb key which acts as a “modifier” (think of it like a shift key) that changes what keys are available under my left hand. This has many advantages: unlike many players, I have quick access to every F-key, 1-12. By default, many actions in Dota use these keys, but I’m sure few Dota players are taking their hand off of “Dota home row” to reach for the actually quite useful F-keys.
For example, normally the Q
key is my primary ability. However,
when the modifier key is held down, it becomes F5
, the default
hotkey for purchasing the Quick Buy item. I use this hotkey dozens
of times ingame: first Shift
-clicking on an item in the shop adds
it to the corner of my screen, then Mod-Q
purchases components as
I get more gold. Finally, I can Mod-3
(F3
) to order the courier
to bring me my new item, and Mod-W
(F6
, my courier boost hotkey)
will put a rush on it.
I also have quick, intuitive access to all of my item hotkeys. When
polling my friends, I noticed that many of them use three or four
of the item slots, with the rest being reserved for items with no
active ability. With my Dota layer, ASDZXCV
becomes ZXCVBN,
,
preserving the default item hotkeys while being much more comfortable
and intuitive than a long run-on row of keys (N
and ,
are not
accessible on the left-hand side of an ErgoDox anyways).
This layer also gives me quick access to other useful things when
I’m not gaming. I have quick access to the arrow keys (on HJKL
),
Delete
, and additional media keys on the right hand.
Configuration keys
This layer is toggled on momentarily with the MO(CONF)
key that
lives on the base layer. It is pretty sparse, containing keys that
configure the keyboard itself. One fun thing I did here was use
alphabetical mnemonics for each of the keys: E
resets the EEPROM,
R
resets the keyboard for flashing, and D
puts the keyboard
in debug mode. The 1
, 2
and 3
keys switch on the Colemak,
QWERTY, and FPS modes, respectively.
/* Keymap 4: Config layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | |ColeDH|QWERTY|T(FPS)| | | | | | | | | | | \/ |
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | RESET| | | |------| |------| | |EEPRST| | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | DEBUG| | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------+------+------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
FPS keys
Finally, there is an FPS layer for games like Counter-Strike that
require non-space-cadet Shift
and left-hand accessible Space
. It
is toggled on and off using the Configuration layer.
/* Keymap 1: FPS layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | \/ | \/ | \/ | \/ | \/ | \/ | \/ | | \/ | \/ | \/ | \/ | \/ | \/ | \/ |
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | \/ | \/ | \/ | \/ | \/ | \/ | \/ | | \/ | \/ | \/ | \/ | \/ | \/ | \/ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | \/ | \/ | \/ | \/ | \/ | \/ |------| |------| \/ | \/ | \/ | \/ | \/ | \/ |
* |--------+------+------+------+------+------| \/ | | \/ |------+------+------+------+------+--------|
* | Shift | \/ | \/ | \/ | \/ | \/ | | | | \/ | \/ | \/ | \/ | \/ | Shift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | \/ | \/ | \/ | \/ | \/ | | \/ | \/ | \/ | \/ | \/ |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | \/ | \/ | | \/ | \/ |
* ,------+------+------| |------+------+------.
* | | | \/ | | \/ | | |
* | Space| \/ |------| |------| \/ | \/ |
* | | | \/ | | \/ | | |
* `--------------------' `--------------------'
*/
Download
You can download my keymap here! Depending on the model of ErgoDox you have, modifications may need to be made. I personally have the Alpaca Keyboards Hot Dox, but the physical layout is identical to the other “standard” ErgoDoxes on the market, such as the ErgoDox EZ.