I type in Programmer Dvorak, a somewhat obscure but useful variant of the Dvorak keyboard layout. It keeps the improved placement of the letter keys found in Dvorak and moves symbols commonly used in programming into better locations. In particular, Shift must be held to press the number keys. This frees up that entire row for symbols.
Dvorak – QWERTY ⌘ (Command)
Mac OS X comes with a keyboard layout called Dvorak – QWERTY ⌘ that allows you to type in Dvorak normally, but when you hold Command, all of the keys become their QWERTY equivalents. When I used to type in plain Dvorak I loved using the familiar locations of shortcut keys, but its behavior with Control and other modifier keys left me dissatisfied.
I tried to use Ukelele to create a keyboard layout to support a similar Programmer Dvorak – QWERTY ⌘ (Command) mode, but the built in facilities did not work everywhere. In particular Java applications did not use QWERTY when I held modifier keys, which became a significant problem when I started using Android Studio regularly.
To fix this, I wrote an XML snippet for Karabiner to enable the “correct” behavior. It works by remapping all keys to Programmer Dvorak unless any modifier key–that is: Control, Command, or Option–is held down, in which case every key combination will behave as if it is in QWERTY. This allows you to use normal shortcut keys in every app but still type in Programmer Dvorak.
First you must install Karabiner.
and add this snippet under the
Then press ReloadXML in the upper-right corner of Karabiner, and check the “Use Programmer Dvorak – Qwerty Keyboard Layout” box.
That’s it! If you want to further customize the behavior, edits to the XML should be reasonably straightforward.
My Programmer Dvorak experience
I sometimes get asked if it is worth learning to type in Programmer Dvorak. My short answer is no.
My longer answer is that while I find it more comfortable than QWERTY, I do not find that I type faster or see a strong daily benefit (I alone am too small a sample size to say anything useful about RSI). It also requires work to maintain things like shortcut keys, and it inhibits both my ability to work on other people’s computers as well as other people working on mine. It also has decreased my QWERTY typing speed, especially with numbers and symbols.
That said, I have largely solved these problems for myself, and I will continue to use Programmer Dvorak day-to-day.