I have been using the Programmer Dvorak keyboard layout for a while, but ran into problems after a poorly-executed tweak of mine which lead to me re-installing version. However, the latest package (marked as beta) does not support KeyBindings that use the control modifier. If I try to modify the Programmer Dovarak bundle with Ukelele, it seems Mac OS X then ceases to recognize it, even after restarts.

I then settled for remaking the Programmer Dvorak layout from Ukelele's built-in Dvorak template. This keyboard layout lets me use the Cocoa text shortcuts (^A ^E ^F etc), but I can't do things like dealing with system dialogs (e.g., do a Software Update and press spacebar. In general, outlined button : spacebar :: solid shaded button : enter). In addition, some apps won't let me use Command- shortcuts. For example, I can't use Command-C, -X, or -N in Mental Case while I'm using my remade Dvorak, but I can't use KeyBindings like ^D if I'm using the official Dvorak. BUT if I use the normal US keyboard, I get no problems; both control- and command- stuff work fine.

So, my main question is: how do I merge the functionalities of these two layouts? Phrased a different way: Why is it that, given the below XML, I run into the phenomena described above?

  1. a GitHub gist for my recreated Programmer Dvorak layout
  2. another gist, posted to save you time from downloading the whole package

Note that the official layout (2nd link above) actually installs itself with a .bundle directory in /Library/Keyboard Layouts/ whereas I have my recreated layout simply at $HOME/Library/Keyboard Layouts/name.layout.

If there's any other information that would be helpful, please let me know; I'd be happy to take screenshots or something if necessary.

1 Answer 1


There is now a new version of Programmer Dvorak that works with key combinations like ⌃A.

◊ Option modifier is currently non-functional. Also, you cannot replace a default Roman layout with this one. Control keys should now be functional.

Option worked everywhere I tested, so non-functional could just mean that states under option don't output non-ASCII characters. If you want to disable all default input sources, you can edit the HIToolBox plist.

In previous versions you could have added a keymap where all keys output a control character like �. See Control not working in iTerm 2 when using Programmer Dvorak keyboard layout.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .