Jason Garber

Tracking innovations in code and culture

KeyRemap4MacBook Fixes the Broken 'Dvorak - Qwerty ⌘' Layout

I switched to the Dvorak keyboard layout over Christmas break in 2001, figuring that if I were to spend the next 80 years typing, a couple weeks re-learning to touch type would be worth it.

And it has been. My hands just never get tired of typing, which is good because I spend all day at it. There are only two problems with being in the minority on this:

  1. Shortcut keys are less convenient to use. Cut, copy, and paste are X, C, and V for a reason. You can get used to the new positions, but they never quite feel as handy.
  2. Sharing or borrowing other computers becomes more difficult.

The first problem I solved early on by using a keyboard layout that is Dvorak except when you’re holding down the command key. On a Mac, this is the “Dvorak – Qwerty ⌘” input source.

Since I learned touch-typing on Qwerty, I can switch between the layouts in my head with some effort or just look at the keys as I type, so the second problem isn’t a very big one for infrequent and short-term Qwerty use. For the computer I shared with my wife for three or four years, we got used to switching input modes from the menubar or by shortcut key.

This year, I almost quit Dvorak when I discovered Apple’s Dvorak – Qwerty ⌘ layout is broken and there’s no way to get to some shortcut keys. That was a minor frustration compared to how it made pair programming more complicated.

KeyRemap4MacBook solved these problems. I’ve dropped Dvorak-Qwerty ⌘ and now just use the Dvorak input source with KeyRemap4MacBook converting my ⌘ keypresses. ⌘ + and – makes my text bigger and smaller and I can <Ctrl-W> in vim again—two glitches peculiar to Dvorak – Qwerty ⌘.

My private.xml file, which is how you make custom mappings in KeyRemap4Macbook, contains the mapping, along with some device_only and device_not filters that limit it to a certain set of keyboards at work, where our multitude of bluetooth devices are named after well-known Rubyists.