I have 2 keyboards on my MacBook Pro running OS X 10.8.5. I am trying to configure it so that typing on one keyboard will always use the Qwerty layout while typing on the other will always use the Dvorak layout. What would it take to configure or develop something that accomplished this?
Configure 1 of 2 keyboards for Dvorak
dvorakkeyboard
Related Solutions
No, only a single keyboard layout can be active at one time and it will apply to all keyboards. But switching layouts is very simple: Apple/Command + space. Or you can no doubt make it even simpler if you want.
Update 2016: It's possible now to do this with Karabiner, as described at
Different key-maps/bindings for in-built keyboard and Bluetooth keyboard
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
Best Answer
I type Dvorak myself.
While I am interested in your idea, I do not believe that it is possible.
Matias makes a keyboard that is dedicated to Dvorak in hardware, for US $100. In other words it types in Dvorak when the Mac's software keyboard layout is set to U. S. You could purchase one of those.
From the company's description:
I have not tried this model of keyboard, but I have used other Matias products.
I type in Dvorak using a standard QWERTY keyboard, setting the Mac OS and Windows to use a software Dvorak keyboard layout. The whole point of using Dvorak is to learn to type faster, and that should also include training yourself to type without looking at the keys on the keyboard. Therefore it makes no difference to me what is printed on the keycaps, as I never look at them. So any standard keyboard will work fine for me and I can do Dvorak mapping in software on Mac OS X, Windows, and Linux for that matter.
Should it be necessary to toggle between Dvorak and the standard US QWERTY layout, that can easily be done in Mac OS X by assigning a keyboard shortcut in the Language & Text pane in System Preferences.