Skip to content

Instantly share code, notes, and snippets.

@ranmocy
Created July 14, 2014 21:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ranmocy/5d80f55eef0748d9d55f to your computer and use it in GitHub Desktop.
Save ranmocy/5d80f55eef0748d9d55f to your computer and use it in GitHub Desktop.
Karabiner(aka. KEYRemap4Macbook) private configuration.
<?xml version="1.0"?>
<root>
<item>
<name>Ranmocy Private</name>
<!-- Remap Left Control to Hyper -->
<item>
<name>Remap Left Control to Hyper</name>
<appendix>OS X doesn't have a Hyper. This maps Left Control to Control + Shift + Option + Command.</appendix>
<identifier>ranmocy.left_control_to_hyper</identifier>
<autogen>
--KeyToKey--
KeyCode::F19,
KeyCode::COMMAND_L, ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L
<!-- ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L -->
</autogen>
<autogen>
--KeyToKey--
KeyCode::DANISH_DOLLAR,
KeyCode::COMMAND_L, ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L
<!-- ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L -->
</autogen>
</item>
<!-- Control_L to Control_L -->
<item>
<name>Control_L to Control_L</name>
<appendix>(+ When you type Control_L only, send Escape)</appendix>
<identifier>ranmocy.controlL2controlL_escape</identifier>
<autogen>__KeyOverlaidModifier__ KeyCode::CONTROL_L, KeyCode::CONTROL_L, KeyCode::ESCAPE</autogen>
</item>
<!-- Fn + Capslock(Left Control) to Toggle Capslock -->
<item>
<name>Fn + Capslock(Left Control) to Toggle Capslock</name>
<identifier>ranmocy.fn_left_control_to_capslock</identifier>
<autogen>
--KeyToKey--
KeyCode::CONTROL_L, ModifierFlag::FN,
KeyCode::CAPSLOCK
</autogen>
</item>
<!-- Use the correct shift keys. -->
<item>
<name>Use the correct shift keys.</name>
<identifier>ranmocy.correct_shift_keys</identifier>
<autogen>--KeyToKey-- KeyCode::Q, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::W, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::E, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::R, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::T, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::A, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::S, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::D, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::F, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::G, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::Z, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::X, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::C, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::V, ModifierFlag::SHIFT_L, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::Y, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::U, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::I, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::O, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::P, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::H, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::J, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::K, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::L, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::SEMICOLON, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::N, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::M, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::COMMA, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::DOT, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
<autogen>--KeyToKey-- KeyCode::QUOTE, ModifierFlag::SHIFT_R, KeyCode::VK_NONE</autogen>
</item>
<!-- Shifts to Parentheses -->
<item>
<name>Shifts to Parentheses</name>
<appendix>Shifts, when pressed alone, type parentheses. When used with other keys they're normal shifts.</appendix>
<identifier>ranmocy.shifts_to_parens</identifier>
<!-- This is the basic mapping. -->
<autogen>--KeyOverlaidModifier-- KeyCode::SHIFT_R, ModifierFlag::SHIFT_R | ModifierFlag::NONE, KeyCode::SHIFT_R, KeyCode::KEY_0, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyOverlaidModifier-- KeyCode::SHIFT_L, ModifierFlag::SHIFT_L | ModifierFlag::NONE, KeyCode::SHIFT_L, KeyCode::KEY_9, ModifierFlag::SHIFT_R</autogen>
<!-- Remap the "rolls" of () and )( because it's too easy to hit one before finishing the other, and there's no other reason to be pressing both shift keys at once anyway -->
<autogen>--KeyToKey-- KeyCode::SHIFT_L, ModifierFlag::SHIFT_R, KeyCode::KEY_0, ModifierFlag::SHIFT_L, KeyCode::KEY_9, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::SHIFT_R, ModifierFlag::SHIFT_L, KeyCode::KEY_9, ModifierFlag::SHIFT_L, KeyCode::KEY_0, ModifierFlag::SHIFT_L</autogen>
<!-- Remap Rshift+Space to ') ', because when typing an end paren and then a space I tend to hit space before I let go of rshift. -->
<autogen>--KeyToKey-- KeyCode::SPACE, ModifierFlag::SHIFT_R, KeyCode::KEY_0, ModifierFlag::SHIFT_L, KeyCode::SPACE</autogen>
</item>
<!-- Home Row Numbers Overlay -->
<item>
<name>Home Row Numbers Overlay</name>
<item>
<name>Home Row Numbers</name>
<appendix>Overlay 1234567890 onto the home row (ASDFGHJKL;)</appendix>
<identifier vk_config="true">ranmocy.homerow_numbers</identifier>
<autogen>__KeyToKey__ KeyCode::A, KeyCode::KEY_1</autogen>
<autogen>__KeyToKey__ KeyCode::S, KeyCode::KEY_2</autogen>
<autogen>__KeyToKey__ KeyCode::D, KeyCode::KEY_3</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::KEY_4</autogen>
<autogen>__KeyToKey__ KeyCode::G, KeyCode::KEY_5</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::KEY_6</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::KEY_7</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::KEY_8</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::KEY_9</autogen>
<autogen>__KeyToKey__ KeyCode::SEMICOLON, KeyCode::KEY_0</autogen>
</item>
<item>
<name>Hold Space+ASDFGHJKL; to 1234567890</name>
<identifier>ranmocy.space_to_homerow_numbers</identifier>
<autogen>__KeyOverlaidModifier__ KeyCode::SPACE, KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_ranmocy_homerow_numbers, KeyCode::SPACE</autogen>
</item>
<item>
<name>Hold CMD_L+OPTION_L+ASDFGHJKL; to 1234567890</name>
<identifier>ranmocy.cmdopt_to_homerow_numbers</identifier>
<autogen>__KeyToKey__ KeyCode::COMMAND_L, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L, KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_ranmocy_homerow_numbers</autogen>
<autogen>__KeyToKey__ KeyCode::OPTION_L, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L, KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_ranmocy_homerow_numbers</autogen>
</item>
</item>
<!-- Swap backtick ` and underscore _ -->
<item>
<name>Swap backtick ` and underscore _</name>
<appendix>Backtick is Shift+Hyphen, Underscore is unshifted tilde ~</appendix>
<identifier>ranmocy.backtick_underscore</identifier>
<!-- Move _ to ` -->
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, ModifierFlag::NONE, KeyCode::MINUS, ModifierFlag::SHIFT_L</autogen>
<autogen>__KeyToKey__ KeyCode::BACKQUOTE, ModifierFlag::CAPSLOCK, KeyCode::MINUS, ModifierFlag::SHIFT_L</autogen>
<!-- Move ` to SHIFT+- -->
<autogen>__KeyToKey__ KeyCode::MINUS, ModifierFlag::SHIFT_L, KeyCode::BACKQUOTE, ModifierFlag::NONE</autogen>
<autogen>__KeyToKey__ KeyCode::MINUS, ModifierFlag::SHIFT_R, KeyCode::BACKQUOTE, ModifierFlag::NONE</autogen>
</item>
<!-- Applications Switcher -->
<!-- ('A'..'Z').each { |e| puts "
<autogen>
__HoldingKeyToKey__
KeyCode::PLACEHOLDER, ModifierFlag::NONE,
KeyCode::PLACEHOLDER,
KeyCode::VK_NONE,
KeyCode::PLACEHOLDER, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
".gsub("PLACEHOLDER", e) } -->
<item>
<name>Applications Swicher</name>
<identifier>ranmocy.switcher</identifier>
<autogen>
__HoldingKeyToKey__
KeyCode::A, ModifierFlag::NONE,
KeyCode::A,
KeyCode::VK_NONE,
KeyCode::A, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::B, ModifierFlag::NONE,
KeyCode::B,
KeyCode::VK_NONE,
KeyCode::B, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::C, ModifierFlag::NONE,
KeyCode::C,
KeyCode::VK_NONE,
KeyCode::C, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::D, ModifierFlag::NONE,
KeyCode::D,
KeyCode::VK_NONE,
KeyCode::D, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::E, ModifierFlag::NONE,
KeyCode::E,
KeyCode::VK_NONE,
KeyCode::E, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::F, ModifierFlag::NONE,
KeyCode::F,
KeyCode::VK_NONE,
KeyCode::F, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::G, ModifierFlag::NONE,
KeyCode::G,
KeyCode::VK_NONE,
KeyCode::G, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::H, ModifierFlag::NONE,
KeyCode::H,
KeyCode::VK_NONE,
KeyCode::H, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::I, ModifierFlag::NONE,
KeyCode::I,
KeyCode::VK_NONE,
KeyCode::I, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::J, ModifierFlag::NONE,
KeyCode::J,
KeyCode::VK_NONE,
KeyCode::J, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::K, ModifierFlag::NONE,
KeyCode::K,
KeyCode::VK_NONE,
KeyCode::K, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::L, ModifierFlag::NONE,
KeyCode::L,
KeyCode::VK_NONE,
KeyCode::L, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::M, ModifierFlag::NONE,
KeyCode::M,
KeyCode::VK_NONE,
KeyCode::M, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::N, ModifierFlag::NONE,
KeyCode::N,
KeyCode::VK_NONE,
KeyCode::N, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::O, ModifierFlag::NONE,
KeyCode::O,
KeyCode::VK_NONE,
KeyCode::O, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::P, ModifierFlag::NONE,
KeyCode::P,
KeyCode::VK_NONE,
KeyCode::P, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::Q, ModifierFlag::NONE,
KeyCode::Q,
KeyCode::VK_NONE,
KeyCode::Q, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::R, ModifierFlag::NONE,
KeyCode::R,
KeyCode::VK_NONE,
KeyCode::R, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::S, ModifierFlag::NONE,
KeyCode::S,
KeyCode::VK_NONE,
KeyCode::S, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::T, ModifierFlag::NONE,
KeyCode::T,
KeyCode::VK_NONE,
KeyCode::T, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::U, ModifierFlag::NONE,
KeyCode::U,
KeyCode::VK_NONE,
KeyCode::U, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::V, ModifierFlag::NONE,
KeyCode::V,
KeyCode::VK_NONE,
KeyCode::V, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::W, ModifierFlag::NONE,
KeyCode::W,
KeyCode::VK_NONE,
KeyCode::W, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::X, ModifierFlag::NONE,
KeyCode::X,
KeyCode::VK_NONE,
KeyCode::X, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::Y, ModifierFlag::NONE,
KeyCode::Y,
KeyCode::VK_NONE,
KeyCode::Y, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
<autogen>
__HoldingKeyToKey__
KeyCode::Z, ModifierFlag::NONE,
KeyCode::Z,
KeyCode::VK_NONE,
KeyCode::Z, ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L,
</autogen>
</item>
</item>
</root>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment