Control not working in iTerm 2 when using Programmer Dvorak keyboard layout I'm using the Programmer Dvorak keyboard layout and found that the Control key does not work in iTerm 2. Emacs is unusable as a result, and I can't interrupt processes with Ctrl-C. Interestingly, the only thing I have found control to do is that Ctrl-Z still sends SIGTSTP.

I've swapped the Ctrl and Caps-Lock keys at the Mac level, but undoing that has no effect. I use zsh, but running bash doesn't help. Everything works fine in Terminal.

How can I get a working control key?

PS: Reverting back to QWERTY does fix this, but that's not really an option.
Edit: There is now a new version of Programmer Dvorak that works with key combinations like ⌃A, so the instructions below are no longer needed.


  ◊  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 other input sources, you can edit the HIToolBox plist.

Instructions for older versions of Programmer Dvorak:


Open /Library/Keyboard Layouts/Programmer Dvorak.bundle/Contents/Resources/Programmer Dvorak.keylayout
And add this to modifierMap:

&lt;keyMapSelect mapIndex="3"&gt;
  &lt;modifier keys="control anyOption? anyShift?"/&gt;
&lt;/keyMapSelect&gt;

Add this to keyMapSet:

&lt;keyMap index="3"&gt;
  &lt;key code="0" output="&amp;#x0000;"/&gt;
  &lt;key code="1" output="&amp;#x0000;"/&gt;
  &lt;key code="2" output="&amp;#x0000;"/&gt;
  &lt;key code="3" output="&amp;#x0000;"/&gt;
  &lt;key code="4" output="&amp;#x0000;"/&gt;
  &lt;key code="5" output="&amp;#x0000;"/&gt;
  &lt;key code="6" output="&amp;#x0000;"/&gt;
  &lt;key code="7" output="&amp;#x0000;"/&gt;
  &lt;key code="8" output="&amp;#x0000;"/&gt;
  &lt;key code="9" output="&amp;#x0000;"/&gt;
  &lt;key code="10" output="&amp;#x0000;"/&gt;
  &lt;key code="11" output="&amp;#x0000;"/&gt;
  &lt;key code="12" output="&amp;#x0000;"/&gt;
  &lt;key code="13" output="&amp;#x0000;"/&gt;
  &lt;key code="14" output="&amp;#x0000;"/&gt;
  &lt;key code="15" output="&amp;#x0000;"/&gt;
  &lt;key code="16" output="&amp;#x0000;"/&gt;
  &lt;key code="17" output="&amp;#x0000;"/&gt;
  &lt;key code="18" output="&amp;#x0000;"/&gt;
  &lt;key code="19" output="&amp;#x0000;"/&gt;
  &lt;key code="20" output="&amp;#x0000;"/&gt;
  &lt;key code="21" output="&amp;#x0000;"/&gt;
  &lt;key code="22" output="&amp;#x0000;"/&gt;
  &lt;key code="23" output="&amp;#x0000;"/&gt;
  &lt;key code="24" output="&amp;#x0000;"/&gt;
  &lt;key code="25" output="&amp;#x0000;"/&gt;
  &lt;key code="26" output="&amp;#x0000;"/&gt;
  &lt;key code="27" output="&amp;#x0000;"/&gt;
  &lt;key code="28" output="&amp;#x0000;"/&gt;
  &lt;key code="29" output="&amp;#x0000;"/&gt;
  &lt;key code="30" output="&amp;#x0000;"/&gt;
  &lt;key code="31" output="&amp;#x0000;"/&gt;
  &lt;key code="32" output="&amp;#x0000;"/&gt;
  &lt;key code="33" output="&amp;#x0000;"/&gt;
  &lt;key code="34" output="&amp;#x0000;"/&gt;
  &lt;key code="35" output="&amp;#x0000;"/&gt;
  &lt;key code="36" output="&amp;#x0000;"/&gt;
  &lt;key code="37" output="&amp;#x0000;"/&gt;
  &lt;key code="38" output="&amp;#x0000;"/&gt;
  &lt;key code="39" output="&amp;#x0000;"/&gt;
  &lt;key code="40" output="&amp;#x0000;"/&gt;
  &lt;key code="41" output="&amp;#x0000;"/&gt;
  &lt;key code="42" output="&amp;#x0000;"/&gt;
  &lt;key code="43" output="&amp;#x0000;"/&gt;
  &lt;key code="44" output="&amp;#x0000;"/&gt;
  &lt;key code="45" output="&amp;#x0000;"/&gt;
  &lt;key code="46" output="&amp;#x0000;"/&gt;
  &lt;key code="47" output="&amp;#x0000;"/&gt;
  &lt;key code="48" output="&amp;#x0000;"/&gt;
  &lt;key code="49" output="&amp;#x0000;"/&gt;
  &lt;key code="50" output="&amp;#x0000;"/&gt;
  &lt;key code="51" output="&amp;#x0000;"/&gt;
  &lt;key code="52" output="&amp;#x0000;"/&gt;
  &lt;key code="53" output="&amp;#x0000;"/&gt;
  &lt;key code="64" output="&amp;#x0000;"/&gt;
  &lt;key code="65" output="&amp;#x0000;"/&gt;
  &lt;key code="66" output="&amp;#x0000;"/&gt;
  &lt;key code="67" output="&amp;#x0000;"/&gt;
  &lt;key code="69" output="&amp;#x0000;"/&gt;
  &lt;key code="70" output="&amp;#x0000;"/&gt;
  &lt;key code="71" output="&amp;#x0000;"/&gt;
  &lt;key code="72" output="&amp;#x0000;"/&gt;
  &lt;key code="75" output="&amp;#x0000;"/&gt;
  &lt;key code="76" output="&amp;#x0000;"/&gt;
  &lt;key code="77" output="&amp;#x0000;"/&gt;
  &lt;key code="78" output="&amp;#x0000;"/&gt;
  &lt;key code="79" output="&amp;#x0000;"/&gt;
  &lt;key code="80" output="&amp;#x0000;"/&gt;
  &lt;key code="81" output="&amp;#x0000;"/&gt;
  &lt;key code="82" output="&amp;#x0000;"/&gt;
  &lt;key code="83" output="&amp;#x0000;"/&gt;
  &lt;key code="84" output="&amp;#x0000;"/&gt;
  &lt;key code="85" output="&amp;#x0000;"/&gt;
  &lt;key code="86" output="&amp;#x0000;"/&gt;
  &lt;key code="87" output="&amp;#x0000;"/&gt;
  &lt;key code="88" output="&amp;#x0000;"/&gt;
  &lt;key code="89" output="&amp;#x0000;"/&gt;
  &lt;key code="91" output="&amp;#x0000;"/&gt;
  &lt;key code="92" output="&amp;#x0000;"/&gt;
  &lt;key code="96" output="&amp;#x0000;"/&gt;
  &lt;key code="97" output="&amp;#x0000;"/&gt;
  &lt;key code="98" output="&amp;#x0000;"/&gt;
  &lt;key code="99" output="&amp;#x0000;"/&gt;
  &lt;key code="100" output="&amp;#x0000;"/&gt;
  &lt;key code="101" output="&amp;#x0000;"/&gt;
  &lt;key code="102" output="&amp;#x0000;"/&gt;
  &lt;key code="103" output="&amp;#x0000;"/&gt;
  &lt;key code="104" output="&amp;#x0000;"/&gt;
  &lt;key code="105" output="&amp;#x0000;"/&gt;
  &lt;key code="106" output="&amp;#x0000;"/&gt;
  &lt;key code="107" output="&amp;#x0000;"/&gt;
  &lt;key code="108" output="&amp;#x0000;"/&gt;
  &lt;key code="109" output="&amp;#x0000;"/&gt;
  &lt;key code="110" output="&amp;#x0000;"/&gt;
  &lt;key code="111" output="&amp;#x0000;"/&gt;
  &lt;key code="112" output="&amp;#x0000;"/&gt;
  &lt;key code="113" output="&amp;#x0000;"/&gt;
  &lt;key code="114" output="&amp;#x0000;"/&gt;
  &lt;key code="115" output="&amp;#x0000;"/&gt;
  &lt;key code="116" output="&amp;#x0000;"/&gt;
  &lt;key code="117" output="&amp;#x0000;"/&gt;
  &lt;key code="118" output="&amp;#x0000;"/&gt;
  &lt;key code="119" output="&amp;#x0000;"/&gt;
  &lt;key code="120" output="&amp;#x0000;"/&gt;
  &lt;key code="121" output="&amp;#x0000;"/&gt;
  &lt;key code="122" output="&amp;#x0000;"/&gt;
  &lt;key code="123" output="&amp;#x0000;"/&gt;
  &lt;key code="124" output="&amp;#x0000;"/&gt;
  &lt;key code="125" output="&amp;#x0000;"/&gt;
  &lt;key code="126" output="&amp;#x0000;"/&gt;
&lt;/keyMap&gt;

Run sudo touch /Library/Keyboard\ Layouts/ and log out and back in