Tarmak Steps
TARMAK: PAVING THE ROAD TO PERFECTION
Each of the 4 Tarmak layouts changes 3–4 new keys from the previous step until you've made the full transition to Colemak. This is done by breaking up the loop of keys that move into each others' positions, misplacing only the very infrequently used J in the process. There is one big loop of 14 changed keys (Y>O>;>P>R>S>D>G>T>F>E>K>N>J) that you can learn in up to four steps, and one small self-contained loop of 3 keys (L>U>I). Each Tarmak step brings at least one of the most common letters in English (ETAOINSHR) to the home row where it belongs, right under your fingertips.
This animated image, like the one at the top of this page, shows the full Tarmak transition from QWERTY to Colemak. The keys moved into place for each Tarmak step are shown in a different color following the rainbow from red via orange, green and blue to violet.
Here I've explained each of the Tarmak "tar lumps" in more detail:
Tarmak steps:
Tarmak1(E)
1) The (J)>E>K>N "most essential" loop, fixing the important E (and N)
2) The (J)>G>T>F loop, bringing the important T into place
Tarmak2(ET)
3) The (J)>R>S>D loop, getting RSD into place – all of which are relatively frequent!
Tarmak3(ETR)
4) The J>Y>O>;>P loop, getting O in place and finalizing the big loop
Tarmak4(ETRO)
5) The L>U>I self-contained loop - step 5 is simply Colemak!
Tarmak5 = Colemak
Here are the spectrally color-coded Tarmak steps again, together in one Colemak image.
This image shows the Tarmak steps (red – orange – green – blue – purple), leading to "vanilla" Colemak.
Not shown here is how J hops around temporarily to QWERTY E, G and R before finding its place as explained above.
The next image shows the Tarmak steps leading to the Colemak-DH ergonomic variant, as described in the following section. I like it!
This image shows Tarmak-DH on an ANSI Angle(Z) modded board, leading to Colemak-DH.
On an ISO keyboard you can use a simpler Angle mod without splitting the ZXC keys.
TARMAK-DH: STEP & CURL
The Colemak-DH alias Curl(DH) ergo mod is an ingenious way of getting the frequent D and H keys to better positions for people who dislike the "middle trench" positions (QWERTY GH) and feel that this part of the home row doesn't feel quite like home after all! See the Ergonomy page or the DH-mod's creator SteveP's ColemakMods pages for more info.
Keep your hands at home position (QWERTY ASDF JKL;) and stretch inwards then down. Which is more comfortable?
- If you like the inwards stretches (QWERTY GH) best, ignore the curl mod. (Or, try again while keeping your wrists straight as they should be!)
- If you like the downward curls (QWERTY CM) best, consider Colemak-DH!
The Curl(DH) mod requires an Angle mod (see the Ergonomy page) to work well on standard row-staggered keyboards. Colemak-DH is good on matrix boards too, though.
In Oct 2020, SteveP, myself and others agreed on promoting one common Colemak-DH:
- It's the original DH-mod alias Curl-DHm, which has...
- G and M on the old home row, which...
- works well both for standard row-staggered boards and matrix boards.
- This version supersedes the 2017 DHk standard with K on the home row.
- The DHk standard wasn't so nice for matrix boards.
Tarmak-DH on ISO keyboards
For ISO keyboards, the Angle mod is simple enough as ZXC move one key to the left while the ISO key moves into the middle.
The standard CurlAngle mod keeps V untouched so that the Curl modded positions for D and H are symmetric.
Spectrally color-coded Tarmak-DH with the CurlAngle-ISO mod.
Tarmak Curl(DH)Angle-ISO:
Here are the Tarmak steps for Colemak-DH, shown on an ISO keyboard:
1a) The E>K>N>(J) "most essential" loop, fixing the important E (and N)
Tarmak1(E) "vanilla"
1b) The H>M Curl(H) swap, by default combined with step 1a
Tarmak1(E)-Curl
2a) The Angle (B>C>X>Z>_) mod, in preparation for Tarmak2-CurlAngle
Tarmak1(E)-CurlAngle-ISO
2b) The (J)>B>T>F loop, bringing the important T into place
Tarmak2(ET)-CurlAngle-ISO
3) The (J)>R>S>D loop, getting all of the relatively frequent RSD into place
Tarmak3(ETR)-CurlAngle-ISO
4) The J>Y>O>;>P loop, getting O in place and finalizing the big loop
Tarmak4(ETRO)-CurlAngle-ISO
5) The L>U>I self-contained loop - step 5 is simply the full Colemak-DH!
Colemak-DH (ISO)
I've split steps 1 and 2 above for clarity. But if you're the careful type you may choose to split them in practice too:
The full Tarmak1-Curl(H) step is a 6-key one which may be a bit much if you're new to layout switches. If that is the case, consider taking on the normal Tarmak1 step first!. In fact, you could do the H-M swap whenever you like in the progression, but for my own sanity's sake I've put it in step 1.
Similarly, if it seems that a lot is happening in the Tarmak2-Curl(DH) step then you may try tackling only the CurlAngle mod (_ZXCVB → ZXCBV_ in this case) first. In this case, the B gets temporarily misplaced. Several implementations allow you to select the DH mod separately.
Tarmak-DH on ANSI keyboards
For ANSI/US keyboards, you have to choose an ANSI-Angle mod as these boards don't have the extra key between Z and LShift. The most common one is Angle(Z), which moves Z into the middle where the B used to be as XC move to the left. The Curl mod then rearranges B and D.
Spectrally color-coded Tarmak-DH with the CurlAngle(Z)-ANSI mod.
Tarmak Curl(DH)Angle-ANSI:
Here are the Tarmak steps for Colemak-DH, shown on an ANSI keyboard:
1a) The E>K>N>(J) "most essential" loop, fixing the important E (and N)
Tarmak1(E) "vanilla"
1b) The H>M Curl(H) swap, by default combined with step 1a
Tarmak1(E)-Curl
2a) The Angle (B>C>X>Z) mod, in preparation for Tarmak2-CurlAngle
Tarmak1(E)-CurlAngle-ANSI
2b) The (J)>B>T>F loop, bringing the important T into place
Tarmak2(ET)-CurlAngle-ANSI
3) The (J)>R>S>D loop, getting all of the relatively frequent RSD into place
Tarmak3(ETR)-CurlAngle-ANSI
4) The J>Y>O>;>P loop, getting O in place and finalizing the big loop
Tarmak4(ETRO)-CurlAngle-ANSI
5) The L>U>I self-contained loop - step 5 is simply the full Colemak-DH!
Colemak-DH (ANSI)
See the notes above about splitting step 1 and 2. The ANSI CurlAngle(Z) mod is ZXCVB → XCBVZ as shown.