This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.

Keyboard Optimization

Stefan Tilkov,

For the last few months, I’ve been continuously tweaking my laptop settings to optimize my typing speed and efficiency. Here are some of the things I’ve learned, and some of the tools and approaches I’m currently using.

  • I finally took up “real” touch typing, i.e. using 10 fingers and a classical system. For years I’d been quite satisfied, even a little proud, of my awesome typing skillz, only to be shot down when I took the first real speed typing test and found myself scoring a ridiculous 30-40 words per minute, the reason being mostly mistakes and the “occasional” peeking if some not-so-common character came along. There are a ton of tools for learning touch typing. The one I spent the most time with is the excellent (and free) Tipp10, which is available in both offline and online versions. There’s also the very nicely done Keys if you’re on a Mac and have a US keyboard. If you like to have some social interaction, both 10 Fast Fingers and Typeracer are also quite nice. Finally, for a programmer, typing.io is a fantastic resource.

  • I switched to a US keyboard layout a while ago. I don’t know why I’d put this off for so long; while I originally started out using a German keyboard layout (QWERTZ instead of QWERTY), I easily write half of what I produce in English, so it wouldn’t have hurt to do this earlier. The most important benefits are that almost all of the characters required in programming languages are far easier to type using a US keyboard and all of the keyboard shortcuts, particularly in editors such as my favorite, Emacs, suddenly make a lot more sense. Because I still type a lot of German texts and hated the default input method for umlauts and the German “ß”, I installed the great “USGerman” keyboard layout, which allows me to use Option+a, u, o and s to get the appropriate characters with a single combination. This has turned out to be a very workable solution.

  • It also made me use Cmd for Meta in Emacs, which is both good and bad: It’s good because when you use Emacs, you use Meta a lot; it’s bad, because some of the keyboard shortcuts for moving around now need to be done with Cmd (in Emacs) and Option (everywhere else), which can be a bit annoying. Also, I ordered my new laptop with a German keyboard layout by accident, which ended up being great because it means I now have no chance to actually look at the keyboard for those special characters anymore. (It also allowed me to turn the keyboard lighting all the way down.)

  • Speaking of Emacs, I wanted to make sure I have the Emacs short cuts available everywhere. This is actually the case to a large degree by default on a Mac, but I wanted to be able to rely on combinations such as Ctrl-M, Ctrl-H, Ctrl-I, etc. Enter the slightly ugly, stupidly named, but incredibly powerful KeyRemap4MacBook, which allowed me to ensure Emacs keys work everywhere. (I hear this is possible for vi users, too.)

Now I find myself not taking my fingers off home row very much, and I’m comfortably moving along at 60-80 wpm. There’s a weird satisfaction in this – I noticed that in a recent company-internal discussion, many of my co-workers did not seem to see much of a point in taking up touch-typing because they don’t see typing speed as the limiting factor. One reason I might see this differenly is because I (sadly) don’t program much these days, but produce a lot of prose instead. And there, at least, I’m absolutely confident that not having your typing get in the way is a huge asset.