Skip to content

Instantly share code, notes, and snippets.

@jgarber
Created August 28, 2012 01:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jgarber/3494247 to your computer and use it in GitHub Desktop.
Save jgarber/3494247 to your computer and use it in GitHub Desktop.
KeyRemap4MacBook setup to pair program with one Dvorak - Qwerty ⌘ typist and one Qwerty typist
<?xml version="1.0"?>
<root>
<deviceproductdef>
<productname>APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x024c</productname>
<productid>0x024c</productid>
</deviceproductdef>
<deviceproductdef>
<productname>APPLE_WIRELESS_KEYBOARD_0x22c</productname>
<productid>0x22c</productid>
</deviceproductdef>
<deviceproductdef>
<productname>APPLE_WIRELESS_KEYBOARD_0x255</productname>
<productid>0x255</productid>
</deviceproductdef>
<!-- Find locations with ioreg -rk "LocationID" -->
<devicelocationdef>
<locationname>DR_NICS_KEYBOARD</locationname>
<locationid>562997884</locationid>
</devicelocationdef>
<devicelocationdef>
<locationname>TENDERLOVES_KEYBOARD</locationname>
<locationid>563861254</locationid>
</devicelocationdef>
<item>
<name>Convert Qwerty -> Dvorak on other people's keyboards</name>
<appendix>(QWERTY to Dvorak)</appendix>
<appendix>(Only when using Dvorak input mode)</appendix>
<identifier>remap.qwerty2dvorak_except_my_keyboards</identifier>
<device_not>
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x024c,
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_WIRELESS_KEYBOARD_0x255, DeviceLocation::TENDERLOVES_KEYBOARD,
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_WIRELESS_KEYBOARD_0x255, DeviceLocation::DR_NICS_KEYBOARD
</device_not>
<inputmodedetail_only>DVORAK</inputmodedetail_only>
<autogen>--KeyToKey-- KeyCode::QUOTE, KeyCode::Q
</autogen>
<autogen>--KeyToKey-- KeyCode::COMMA, KeyCode::W
</autogen>
<autogen>--KeyToKey-- KeyCode::DOT, KeyCode::E
</autogen>
<autogen>--KeyToKey-- KeyCode::P, KeyCode::R
</autogen>
<autogen>--KeyToKey-- KeyCode::Y, KeyCode::T
</autogen>
<autogen>--KeyToKey-- KeyCode::F, KeyCode::Y
</autogen>
<autogen>--KeyToKey-- KeyCode::G, KeyCode::U
</autogen>
<autogen>--KeyToKey-- KeyCode::C, KeyCode::I
</autogen>
<autogen>--KeyToKey-- KeyCode::R, KeyCode::O
</autogen>
<autogen>--KeyToKey-- KeyCode::L, KeyCode::P
</autogen>
<autogen>--KeyToKey-- KeyCode::SLASH, KeyCode::BRACKET_LEFT
</autogen>
<autogen>--KeyToKey-- KeyCode::EQUAL, KeyCode::BRACKET_RIGHT
</autogen>
<autogen>--KeyToKey-- KeyCode::O, KeyCode::S
</autogen>
<autogen>--KeyToKey-- KeyCode::E, KeyCode::D
</autogen>
<autogen>--KeyToKey-- KeyCode::U, KeyCode::F
</autogen>
<autogen>--KeyToKey-- KeyCode::I, KeyCode::G
</autogen>
<autogen>--KeyToKey-- KeyCode::D, KeyCode::H
</autogen>
<autogen>--KeyToKey-- KeyCode::H, KeyCode::J
</autogen>
<autogen>--KeyToKey-- KeyCode::T, KeyCode::K
</autogen>
<autogen>--KeyToKey-- KeyCode::N, KeyCode::L
</autogen>
<autogen>--KeyToKey-- KeyCode::S, KeyCode::SEMICOLON
</autogen>
<autogen>--KeyToKey-- KeyCode::MINUS, KeyCode::QUOTE
</autogen>
<autogen>--KeyToKey-- KeyCode::SEMICOLON, KeyCode::Z
</autogen>
<autogen>--KeyToKey-- KeyCode::Q, KeyCode::X
</autogen>
<autogen>--KeyToKey-- KeyCode::J, KeyCode::C
</autogen>
<autogen>--KeyToKey-- KeyCode::K, KeyCode::V
</autogen>
<autogen>--KeyToKey-- KeyCode::X, KeyCode::B
</autogen>
<autogen>--KeyToKey-- KeyCode::B, KeyCode::N
</autogen>
<autogen>--KeyToKey-- KeyCode::W, KeyCode::COMMA
</autogen>
<autogen>--KeyToKey-- KeyCode::V, KeyCode::DOT
</autogen>
<autogen>--KeyToKey-- KeyCode::Z, KeyCode::SLASH
</autogen>
<autogen>--KeyToKey-- KeyCode::BRACKET_LEFT, KeyCode::MINUS
</autogen>
<autogen>--KeyToKey-- KeyCode::BRACKET_RIGHT, KeyCode::EQUAL
</autogen>
</item>
<item>
<name>Use Dvorak-Qwerty ⌘ under Dvorak layout on my keyboards</name>
<device_only>
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x024c,
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_WIRELESS_KEYBOARD_0x255, DeviceLocation::TENDERLOVES_KEYBOARD,
DeviceVendor::APPLE_COMPUTER, DeviceProduct::APPLE_WIRELESS_KEYBOARD_0x255, DeviceLocation::DR_NICS_KEYBOARD
</device_only>
<appendix>(Command+Keys to Qwerty)</appendix>
<identifier>remap.dvorak2qwerty_qwertycommand_on_my_keyboards</identifier>
<inputmodedetail_only>DVORAK</inputmodedetail_only>
<modifier_only>
ModifierFlag::COMMAND_L,
ModifierFlag::COMMAND_R
</modifier_only>
<autogen>--KeyToKey-- KeyCode::QUOTE, KeyCode::Q
</autogen>
<autogen>--KeyToKey-- KeyCode::COMMA, KeyCode::W
</autogen>
<autogen>--KeyToKey-- KeyCode::DOT, KeyCode::E
</autogen>
<autogen>--KeyToKey-- KeyCode::P, KeyCode::R
</autogen>
<autogen>--KeyToKey-- KeyCode::Y, KeyCode::T
</autogen>
<autogen>--KeyToKey-- KeyCode::F, KeyCode::Y
</autogen>
<autogen>--KeyToKey-- KeyCode::G, KeyCode::U
</autogen>
<autogen>--KeyToKey-- KeyCode::C, KeyCode::I
</autogen>
<autogen>--KeyToKey-- KeyCode::R, KeyCode::O
</autogen>
<autogen>--KeyToKey-- KeyCode::L, KeyCode::P
</autogen>
<autogen>--KeyToKey-- KeyCode::SLASH, KeyCode::BRACKET_LEFT
</autogen>
<autogen>--KeyToKey-- KeyCode::EQUAL, KeyCode::BRACKET_RIGHT
</autogen>
<autogen>--KeyToKey-- KeyCode::O, KeyCode::S
</autogen>
<autogen>--KeyToKey-- KeyCode::E, KeyCode::D
</autogen>
<autogen>--KeyToKey-- KeyCode::U, KeyCode::F
</autogen>
<autogen>--KeyToKey-- KeyCode::I, KeyCode::G
</autogen>
<autogen>--KeyToKey-- KeyCode::D, KeyCode::H
</autogen>
<autogen>--KeyToKey-- KeyCode::H, KeyCode::J
</autogen>
<autogen>--KeyToKey-- KeyCode::T, KeyCode::K
</autogen>
<autogen>--KeyToKey-- KeyCode::N, KeyCode::L
</autogen>
<autogen>--KeyToKey-- KeyCode::S, KeyCode::SEMICOLON
</autogen>
<autogen>--KeyToKey-- KeyCode::MINUS, KeyCode::QUOTE
</autogen>
<autogen>--KeyToKey-- KeyCode::SEMICOLON, KeyCode::Z
</autogen>
<autogen>--KeyToKey-- KeyCode::Q, KeyCode::X
</autogen>
<autogen>--KeyToKey-- KeyCode::J, KeyCode::C
</autogen>
<autogen>--KeyToKey-- KeyCode::K, KeyCode::V
</autogen>
<autogen>--KeyToKey-- KeyCode::X, KeyCode::B
</autogen>
<autogen>--KeyToKey-- KeyCode::B, KeyCode::N
</autogen>
<autogen>--KeyToKey-- KeyCode::W, KeyCode::COMMA
</autogen>
<autogen>--KeyToKey-- KeyCode::V, KeyCode::DOT
</autogen>
<autogen>--KeyToKey-- KeyCode::Z, KeyCode::SLASH
</autogen>
<autogen>--KeyToKey-- KeyCode::BRACKET_LEFT, KeyCode::MINUS
</autogen>
<autogen>--KeyToKey-- KeyCode::BRACKET_RIGHT, KeyCode::EQUAL
</autogen>
</item>
</root>
@michaelaye
Copy link

Just removing your keyboards and leaving the APPLE_INTERNAL_TRACKPAD_KEYBOARD in the xml file I get some funny behavior:

  1. I get 2 new sections in the preferences of KeyRemap4MacBook called "Convert Qwerty -> Dvorak on other's people's keyboards" and "Use Dvorak-Qwerty (Cmd) under Dvorak layout on my keyboards (so far so good, apart from: why do you call it once "Convert ..." and the next "Use ..." or does it not do the same thing and I just don't understand what it does?
  2. When I set both hooks, the Dvorak layout is deactivated, even so I have Dvorak chosen in the Apple Menu for keyboard input. So, to type in Dvorak I need to decativate "Convert Qwerty-> Dvorak...". But then, with that setting the Cmd-Key conversion does not work.

What am I doing wrong? Do I still need to put in details for my MacBook Pro Keyboard somehow? I am currently not having any external keyboard connected, later in the month when I'm back in the office I also might have to deal with my USB Logitech external keyboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment