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.
Solution 1:
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
:<keyMapSelect mapIndex="3"> <modifier keys="control anyOption? anyShift?"/> </keyMapSelect>
-
Add this to
keyMapSet
:<keyMap index="3"> <key code="0" output="�"/> <key code="1" output="�"/> <key code="2" output="�"/> <key code="3" output="�"/> <key code="4" output="�"/> <key code="5" output="�"/> <key code="6" output="�"/> <key code="7" output="�"/> <key code="8" output="�"/> <key code="9" output="�"/> <key code="10" output="�"/> <key code="11" output="�"/> <key code="12" output="�"/> <key code="13" output="�"/> <key code="14" output="�"/> <key code="15" output="�"/> <key code="16" output="�"/> <key code="17" output="�"/> <key code="18" output="�"/> <key code="19" output="�"/> <key code="20" output="�"/> <key code="21" output="�"/> <key code="22" output="�"/> <key code="23" output="�"/> <key code="24" output="�"/> <key code="25" output="�"/> <key code="26" output="�"/> <key code="27" output="�"/> <key code="28" output="�"/> <key code="29" output="�"/> <key code="30" output="�"/> <key code="31" output="�"/> <key code="32" output="�"/> <key code="33" output="�"/> <key code="34" output="�"/> <key code="35" output="�"/> <key code="36" output="�"/> <key code="37" output="�"/> <key code="38" output="�"/> <key code="39" output="�"/> <key code="40" output="�"/> <key code="41" output="�"/> <key code="42" output="�"/> <key code="43" output="�"/> <key code="44" output="�"/> <key code="45" output="�"/> <key code="46" output="�"/> <key code="47" output="�"/> <key code="48" output="�"/> <key code="49" output="�"/> <key code="50" output="�"/> <key code="51" output="�"/> <key code="52" output="�"/> <key code="53" output="�"/> <key code="64" output="�"/> <key code="65" output="�"/> <key code="66" output="�"/> <key code="67" output="�"/> <key code="69" output="�"/> <key code="70" output="�"/> <key code="71" output="�"/> <key code="72" output="�"/> <key code="75" output="�"/> <key code="76" output="�"/> <key code="77" output="�"/> <key code="78" output="�"/> <key code="79" output="�"/> <key code="80" output="�"/> <key code="81" output="�"/> <key code="82" output="�"/> <key code="83" output="�"/> <key code="84" output="�"/> <key code="85" output="�"/> <key code="86" output="�"/> <key code="87" output="�"/> <key code="88" output="�"/> <key code="89" output="�"/> <key code="91" output="�"/> <key code="92" output="�"/> <key code="96" output="�"/> <key code="97" output="�"/> <key code="98" output="�"/> <key code="99" output="�"/> <key code="100" output="�"/> <key code="101" output="�"/> <key code="102" output="�"/> <key code="103" output="�"/> <key code="104" output="�"/> <key code="105" output="�"/> <key code="106" output="�"/> <key code="107" output="�"/> <key code="108" output="�"/> <key code="109" output="�"/> <key code="110" output="�"/> <key code="111" output="�"/> <key code="112" output="�"/> <key code="113" output="�"/> <key code="114" output="�"/> <key code="115" output="�"/> <key code="116" output="�"/> <key code="117" output="�"/> <key code="118" output="�"/> <key code="119" output="�"/> <key code="120" output="�"/> <key code="121" output="�"/> <key code="122" output="�"/> <key code="123" output="�"/> <key code="124" output="�"/> <key code="125" output="�"/> <key code="126" output="�"/> </keyMap>
Run
sudo touch /Library/Keyboard\ Layouts/
and log out and back in