This is a summarizing write-up after using Colemak for almost four years (in 2015, updated in 2022, after switching to Maltron). I hope it's explanatory enough to show how (not) to learn, why Colemak is (not) a good choice, and some other aspects of writing text on a keyboard.
background
I'm a self-taught touch typist and a computer power user.
I started to touch type back around 2004/5, while I was still interested in web development. I went cold turkey without practicing at all, following some of the advice by Dušan "Yuhů" Janovský. My primary concern was being able to type without looking at the keyboard. I used Czech QWERTZ on generic OEM (Samsung or Genius) rubber-dome-over-membrane keyboards at the time. Most of my typing involved Czech prose and HTML/CSS/JS code.
Briefly about the Czech QWERTZ layout… It's QWERTZ (heritage of the Austro-Hungarian Empire), but with significant changes to punctuation placement compared to US or UK QWERTY. Written Czech makes heavy use of diacritic marks (ever since Jan Hus) which results in ~15 "extra letters". Therefore, these accented letters replace punctuation on the number row. Number-row numbers are placed on the second (Shift) layer, thus it's necessary to use either dead keys, or Caps Lock to type upper-case accented letters. The special "programmer" punctuation is moved to the third (AltGraph) layer.
Fast forward to summer 2008. I was already using GNU/Linux full-time and often had to type in US QWERTY for system administration. The difference between QWERTY and QWERTZ frustrated me, thus I switched to Czech QWERTY, because there was no reason to stick to QWERTZ anyway. I was also using scissor-switch keyboards most of the time: a classic thinkpad or latitude (D series), or Logitech UltraX at home. This was the first time I measured my typing speed; I could produce (i.e., not copy, I didn't test copying) about 40 words per minute in Czech.
Fast forward another three years, to summer 2011. I was frustrated. I was stuck at 55 wpm while my hands were all over the place. My typing technique heavily favored the left hand (which made sense, because it was dominant anyway); I used only the left Shift and Control keys, my left index finger took over one extra column (6YHB) as well as the C key. The overuse of left Shift and consequent finger stretches made me hate the ISO layout. I was hunting for decent, quiet keyboards with the ANSI physical layout (i.e., long left Shift)—not an easy quest in a market dominated by ISO and Asian layouts with a big-ass Enter and an 1-unit Backspace (which I didn't want either, because of my relatively short pinkies). To add insult to injury, the Czech QWERTY keymap turned out to be inconsistent in the 3rd (AltGraph) layer across various GNU/Linux distributions and MS Windows, and I needed to code on both kinds of systems.
motivation
I wanted to "fix" my typing technique, i.e., relearn the standard fingering, start to hover my wrists without resting them on the desk/wrist rest, and learn to touch type numbers and punctuation located on the number row or in the layout's corners. A new layout seemed like a great opportunity to do so. I wanted to break away from Czech QWERTY regardless. US QWERTY seemed like an obvious choice as a standard; programming languages and shells were designed around it too. However, I still needed to type in Czech, and various "international" QWERTY layout implementations were even less consistent than Czech QWERTY.
Then I stumbled upon Dvorak Simplified Keyboard. The idea of an optimized layout seemed intriguing, but I naïvely thought the optimization wouldn't work for Czech, and I was still attached to US QWERTY as the industry standard. In addition, I didn't believe I had the motor skills to manage the amount of hand alternation typical for Dvorak layouts.
That's why I picked Colemak. It was the second most popular Western alternative keyboard layout, and I (again, naïvely) thought I could maintain my typing skills in both Colemak and US QWERTY—punctuation and some letters were the same anyway. I already gave up on a standardized layer for diacritic marks and wanted to design my own.
flaws in reasoning
I ignored the fact that DSK was an ANSI standard, thus available nearly everywhere just like Czech QWERTZ/QWERTY. I ignored UCW layouts as well (both QWERTY- and DSK-based); UCW was a popular Czech programmer layout with a custom 3rd/4th layer for accented letters and various typographic symbols. My custom layers for Colemak could be classified as an example of the NIH syndrome, considering that they turned out to be very similar to UCW.
My belief that I was too clumsy for Dvorak's high alternation was unfounded too. I didn't even try at the time.
I did test "efficiency" of different layouts in the simplistic online Keyboard Layout Analyzer, but considered finger travel as the primary metric. I don't think it warranted any conclusions for real-life scenarios.
I put too much stress on similarity to US QWERTY, although I never bothered to relearn touch typing in QWERTY after the switch.
poor learning methods
I started to practice Colemak on Sunday 07/08/2011. One session a day for two weeks, usually up to 20 minutes before going to bed. (So far so good.) I went through the first nine typing lessons at the Colemak website. Therefore, I couldn't really record my progress, but certainly became familiar with the home row at the very least. I gave up after two weeks, not altogether though.
I went cold turkey on Monday 05/09/2011. No practicing anymore. I didn't even print out the layout or set it as my wallpaper. Even typing a short comment was a struggle, but incredibly helpful at the same time. Sometimes, I'd just blank out and stare at the screen trying to remember which finger was supposed to be used for that letter. No cheating. I was stuck at roughly 30 wpm the whole time, and my accuracy slowly improved from horrible 80 % to almost bearable 90 % after a month.
Most of my issues involved confusing middle and ring fingers on either hand (R/S, I/E). J placement was initially too far from the home position as well, considering its frequency in Czech.
For the record, I didn't remap Caps Lock to Backspace until three months in.
back to the former QWERTY speed
I started to take random online tests every now and then after the one-month mark. Again, there was no system. I could spend an hour or two avidly copying one paragraph after another, or avoid any extra typing altogether for weeks. I sometimes went to 10FastFingers (random common words), sometimes Key Hero (quotes), rather rarely hi-games.net (infinite stream of short quotes). Always in English.
My accuracy "rocketed" from initial ~85 % to 95 % after 6 weeks, 97 % after 4 months and 98 % after 6 months. Short-term speed followed a similar curve; I was somewhere in the 30s until about 3 months in, then in the 40s for another two months, and finally reached my former QWERTY plateau (~55 wpm) after 6 months of using Colemak. When I "nailed" it and hit 100 % accuracy, my top speed was only 5 wpm higher than the average at the time; for example, I sometimes reached 60 wpm at the 6-month mark.
Meanwhile, I was successfully using Colemak to take notes in history lectures, although I ignored diacritic marks for the sake of keeping up with the professor. Handwriting wasn't an alternative anyway; I did a couple of brief tests out of curiosity, and found my handwriting speed to be only around 20 wpm.
focused learning
I reached a plateau just right above 60 wpm at 98 % accuracy. I was satisfied that I managed to surpass my QWERTY speed despite all shortcomings in the process. It was good enough for taking lecture notes, and speed didn't matter when I was coding or writing at home.
However, I made several attempts to practice deliberately, inspired by reading about performance psychology and learning methods in music. One of these experiments happened in January 2014 (2.3 years after going cold turkey). I practiced typing on my thinkpad each and every night before going to bed. The motion of my hands was a subject to a close observation whenever I found a sequence of keystrokes that was a source of mistakes or simply felt fatiguing. I repeated these motions over and over again, slowly at first, then at higher speeds. The outcome? I went from burst speed just above 70 wpm to more than 80 wpm average in a month; I broke 85 wpm at 100 % accuracy.
the effect of hardware
I've tried dozens of different keyboards over the last few years. From well-regarded modern laptops to various vintage keyboards, sometimes with obscure (semi)mechanical switches, to custom ergonomic keyboards. Swapping them around has greatly helped improve my typing technique. Some notable experiences follow.
First, scissor-switch keyboards in general. I've noticed that low-profile, rather flat keyboards work fairly well with Colemak, because it's easier to slide between keys, and less aggressively sculpted cylindrical keycap tops don't force a specific finger positioning, thus wrist deviation.
My favorite low-profile keyboard is TypeMatrix 2030. It's compact and decent quality, supports US Colemak out of the box in firmware, and the layout is somewhat extraordinary… Keys are aligned in a grid (matrix) with some extra hand separation. Imagine a more polished DreymaR's angle&wide mod, but easier to learn. If you want to press a key on the top or number row, your finger simply moves forward without any extra asymmetrical lateral movement. This key arrangement finally helped me learn touch typing on the number row. It also made B and J (QWERTY Y) keys easier to reach, although at the cost of messing with my muscle memory for bottom-row hotkeys (XCV) and a temporary K/M confusion.
Another shout-out goes to the ErgoDox. The benefits of full hand separation for wrist comfort and health should be pretty clear. There's something else though. The layout rich in thumb keys enables hand alternation for all modifiers, including AltGraph, and toggles for custom layers (navigation, embedded tenkey, more symbols).
(Update: I don't recommend ErgoDox anymore since ~2018, because there are better, readily available alternatives with more ergonomic thumb clusters and other features.)
Force and travel required to actuate a key matter too. I originally fell in love with Cherry MX Red switches (linear, low-force), thanks to the cloud of boobs effect. However, I hated anything stiffer, and that was almost everything. Then I built my ErgoDox with stock Cherry MX Clear switches (tactile, medium stiffness with force rapidly growing after actuation). Daily rotation of these two completely different switch types (one for gaming at home, the other one for typing in school) forced me to reconsider my keystroke technique. I had to exercise a bit with a power grip ring to build strength in fingers in order to avoid fatigue. At the same time, I had to work on my motor skills to avoid bottoming out hard on reds. Then it suddenly clicked and I've been capable of typing efficiently on basically any switch from MX Red to buckling spring ever since.
Not all key mechanisms are pleasant, though. For example, I initially hated scratchy modern Cherry MX Brown switches in Kinesis Advantage. Luckily, the manufacturer included a buzzer in the keyboard which emulated key click on actuation. I was amazed how it messed with my brain and completely masked the gritty feeling. (Check out psychoacoustics.) It also greatly complemented the gentle typing style that I adopted thanks to the partial switch to stock clears.
posture
Proper posture matters. Unfortunately, it isn't particularly easy to maintain, though, esp. with budget office chairs. I've danced around this issue by building the $22 Ikea standing desk. The keyboard tray is mounted just below my elbow level and doesn't get in the way of arm rests (because there aren't any) or my legs. Therefore, I can hover wrists above the keyboard comfortably.
(Update: I later upgraded to a cheap, manually-adjustable sit-stand setup with a refurbished chair from Steelcase.)
Czech Colemak extension
I use custom layers for typing in Czech. It's somewhat similar to UCW.
Typing accented letters via AltGraph greatly benefits from two symmetrically placed AltGraph keys, that I've mentioned as a benefit to my ErgoDox (or Japanese keyboards for that matter). Chording still isn't as efficient as dead keys, though.
A side note: I'm not a fan of switching layouts for different purposes, such as coding, writing in one language, writing in another language and so on.
the final plateau
I've tried to point out that there are many factors involved in typing comfort. That's also the reason why it's difficult to quantify my further progress. It may, or may not be directly associated with Colemak. Either way, my current status is following (in 2015).
I can consistently score 50 to 75 wpm (the latter at 99+ % accuracy) in short typing tests, depending on my mood, part of the day, temperature, and familiarity with a particular key mechanism. My speed has been around 60 wpm in the 5-minute test at hi-games.net—for the last few years. Real-life use cases are more complicated, though. What if I'm composing or editing a text in Czech? What about code? What about both, such as some writing with inline LaTeX formulas? I've tried to measure it a few times, and estimated the actual speed around 40 wpm, does it actually mean anything, though?
compatibility
I haven't bothered to keep or rebuild my QWERTY skills. I can hunt&peck with most fingers at ~25 wpm, which is enough to look up schedules… and that's almost all I ever do on systems, where I don't have an account with my own configuration.
However, I usually carry a TypeMatrix 2030 around with me, thus basic US Colemak is always at hand. Current OS X has the same level of Colemak support built in. GNU/Linux (or rather X.Org) supports stock Colemak out of the box. I keep PKL in my home directory in the university network. I don't type prose there, thus the defaults (as opposed to my custom layers for Czech) are fine.
On the other hand, I still can and do use staggered keyboards, although my weapons of choice are ErgoDox and TypeMatrix. It only feels inefficient (due to modifier placement, esp. for GNU Emacs) and uncomfortable, in case of long-throw keys (because of ulnar deviation) or winkeyless keyboards (because of AltGraph too far out in the right corner). The only thing, that confuses me, is Caps Lock, when it isn't remapped to Backspace.
Colemak works fine with most software in my experience. GNU Emacs default key bindings are mostly mnemonic anyway, games support remapping and so do, say, common X.Org window managers, such as KWin. My only beef are vi-like controls. For example, VimFX (user-friendly vi-like controls for Firefox) generates strings for keyboard-operated access to links based on QWERTY home row, thus I sometimes have to overreach for G, K or J.
what next?
I'm mostly happy with my 80key ErgoDox and Colemak typing experience. It's already good-enough efficiency-wise. My hands move less, there are fewer awkward keystroke sequences, and my wrists are relaxed on a split keyboard. I can further exploit thumb keys for text expansion, and improve my workflow in GNU Emacs (the thumb keys are very beneficial).
However, I naïvely started to research keyboard layouts further, and I've been intrigued by both Maltron and Dvorak-based layouts. Let me explain…
Maltron favors "rolls" (use of adjacent fingers) just like Colemak, but under the condition that the physical layout is columnar, thus takes non-uniform finger length into account. I'm already using Colemak on ErgoDox most of the time, thus it shouldn't be a problem, right? Actually, there's another interesting design principle behind Maltron layouts: vowels are scattered across the keyboard. That's because of an error analysis that found vowel substitution to be the most common kind of error in texts typed in DSK (which had all vowels in one block, not unlike Colemak with the exception of A).
On the other hand, there's one argument for separating vowels from everything else. It makes it much easier to type their accented variants using multiple keystrokes (AltGraph or dead keys). In Czech, only vowels are used with an acute and mostly consonants with a caron. High-alternation layouts aren't completely outdated (in regards to speed) on straight keyboards anyway, and frequent hand alternation should help keep wrists more relaxed on non-split straight keyboards too.
Moreover, DSK is an ANSI standard, thus available basically everywhere. It might serve me as a QWERTY replacement, should I ever need to use common systems with default settings more often. I already tried to practice it for a week once, and it was an interesting experience, due to a completely different kind of motions compared to Colemak or QWERTY. Of course, a fully optimized layout, such as AdNW, would be potentially more efficient, but at the cost of portability.
I'm not worried about keyboard shortcuts anymore. There's, for example, the Dvorak-QWERTY layout in OS X, which is essentially DSK, but with QWERTY applied while a modifier (Command, Control) is held. It can be implemented on other systems and for other layouts too, rendering the Colemak ZXCV argument moot.
All in all, I might stick to Colemak; learn DSK for fun, simplified typing in Czech or better compatibility with the rest of the world; or analyze and perhaps learn a Maltron-based layout. The symbol arrangement isn't everything anyway, and there are many more aspects of text processing.
Maltron is next
So why Maltron, again? The main reason is the letter 'e' placement under a thumb, hence better finger-load balance in some languages and various other corollaries.
Why not some other layout that puts 'e' under a thumb? There were some three Dvorak-inspired layouts that I didn't even consider because of the "Dvorak" part (maximized hand alternation). I also found a "Maltron++" further optimized by AdNW but the optimizations didn't look convincing to me.
hardware requirements
The dual-hand Maltron keyboards have a columnar layout with thumb clusters. I initially used the ErgoDox and eventually switched to Kinesis Advantage2 (very similar design).
Laptops obviously don't have such a layout. I did, however, buy a JIS-layout module for my thinkpad, and remap the muhenkan key to 'e', and already had Phantom with 7bit layout as well as a JIS Topre Realforce. It took a while to get used to the standard asymmetrically staggered physical layout, but ended up good enough.
implementation
There's essentially no software support for the Maltron keymap.
Maltron keyboards have scancodes simply shuffled in firmware so that the corresponding QWERTY keymap variant in the OS yields desired results.
I created a custom XKB keymap in KLFC instead, and merged it with my Czech Colemak keymap (layers, utilization of JIS-layout scancodes). It was a bit of an ad-hoc hack initially, using Backspace as 'e' and Delete as Backspace, because that was the default firmware mapping on my keyboards.
In the end though, I have come to the conclusion that the best option is to have a low-level scancode permutation (in firmware or software like KMonad/keyd/…) paired with a custom high-level QWERTY-based keymap for symbol layers (mainly accents and localized punctuation discussed earlier in this post).
transition from Colemak
I did it the proper way. Colemak by day, Maltron practice by night. It took me dozens of hours, but in 5-10 minute chunks (you do the math). The practice was the usual, copying English words in an online test. It didn't affect my ability to type in Colemak at all (except in those typing tests, switching back was nearly impossible there). I moved to Maltron full-time after reaching 70-80 wpm in practice sessions.
Getting used to 'e' under the right thumb was the most challenging part. It felt like having a third hand all of a sudden and having to coordinate its movement with fingers of the usual two hands.
How is my ability to use Colemak now? It's gone. There was a period when I could switch back and forth, not with perfect fluency but still… That's gone, except for a couple of passwords. More precisely, my muscle memory for non-trivial n-grams is gone. I blame the similarity between Colemak and Maltron, actually, because the two are very similar in principle, but with swapped rows or keyboards halves. This obviously messes with muscle memory for hotkeys too (an Extend-like layer obviously helps… well, that, or having dedicated keys for those functions).
conclusion
I'm fairly happy with the switch. Was it worth the effort? For one, I successfully tested learning to type in a new layout properly, and the typing flow is just as good as with Colemak—arguably, it feels better since I don't stumble in words such as "thought" anymore. It does restrict my ability to use majority of standard keyboards, until I try to do something about it, but mostly affects only my hobby of trying various (often vintage) keyboards.
Get yourself an ergonomic keyboard. Learn Maltron. Or stenography.