Last active
July 25, 2018 17:40
-
-
Save trcook/3196919b905ad38fb2be to your computer and use it in GitHub Desktop.
private.xml for keyremap4macbook (karabiner). This file adds a bunch of app-specific hacks that enable emacs-style navigation. Ex. using option-f to go forward one word
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<root> | |
<appdef> | |
<appname>MACVIM</appname> | |
<equal>org.vim.MacVim</equal> | |
</appdef> | |
<appdef> | |
<appname>CHROME</appname> | |
<equal>com.google.Chrome</equal> | |
</appdef> | |
<appdef> | |
<appname>SAFARI</appname> | |
<equal>com.apple.Safari</equal> | |
</appdef> | |
<appdef> | |
<appname>MATHEMATICA</appname> | |
<equal>com.wolfram.Mathematica</equal> | |
</appdef> | |
<appdef> | |
<appname>RSTUDIO</appname> | |
<equal>org.rstudio.RStudio</equal> | |
</appdef> | |
<appdef> | |
<appname>ATOM</appname> | |
<equal>com.github.atom</equal> | |
</appdef> | |
<appdef> | |
<appname>SUBLIME</appname> | |
<equal>com.sublimetext.3</equal> | |
</appdef> | |
<appdef> | |
<appname>ALFRED</appname> | |
<equal>com.runningwithcrayons.Alfred-2</equal> | |
</appdef> | |
<appdef> | |
<appname>PYCHARM</appname> | |
<equal>com.jetbrains.pycharm</equal> | |
</appdef> | |
<appdef> | |
<appname>ITERM2</appname> | |
<equal>com.googlecode.iterm2</equal> | |
</appdef> | |
<appdef> | |
<appname>JAVA_VNC</appname> | |
<equal>net.java.openjdk.cmd</equal> | |
</appdef> | |
<replacementdef> | |
<replacementname>EMACS_MODE_IGNORE_APPS</replacementname> | |
<replacementvalue> | |
ALFRED, | |
EMACS, | |
SUBLIME, | |
VI, | |
TERMINAL, | |
ITERM2, | |
Atom, | |
JAVA_VNC | |
</replacementvalue> | |
</replacementdef> | |
<replacementdef> | |
<replacementname>EMACS_MODE_IGNORE_ARROW_APPS</replacementname> | |
<replacementvalue> | |
ITERM2, | |
SUBLIME, | |
JAVA_VNC | |
</replacementvalue> | |
</replacementdef> | |
<item> | |
<name>Change Right Command Key to Escape</name> | |
<identifier>private.right_command_to_escape</identifier> | |
<only>MACVIM</only> | |
<autogen>__KeyToKey__ KeyCode::COMMAND_R, KeyCode::ESCAPE</autogen> | |
</item> | |
<item> | |
<name>Change Right Option Key to Left Shift</name> | |
<identifier>private.right_option_to_Left_shift</identifier> | |
<autogen>__KeyToKey__ KeyCode::OPTION_R, KeyCode::SHIFT_L</autogen> | |
</item> | |
<item> | |
<name>Change Command Esc to Command `</name> | |
<identifier>private.command_esc_to_command_backtick</identifier> | |
<autogen>__KeyToKey__ KeyCode::ESCAPE, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, | |
KeyCode::BACKQUOTE, ModifierFlag::COMMAND_R </autogen> | |
</item> | |
<!-- | |
#----writelabelhere------------------------------------------------------------- | |
# | |
# Enable to use control space but | |
# disable through conveintional keys | |
# | |
# | |
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
--> | |
<item> | |
<name>Normal exit from mark_set mode</name> | |
<item> | |
<name> Exit with Command C or Command X</name> | |
<identifier>private.emacsmode_ex_controlSpace_core</identifier> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::X, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::X, ModifierFlag::COMMAND_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::C, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::C, ModifierFlag::COMMAND_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::V, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::V, ModifierFlag::COMMAND_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::G, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::SPACE, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::DELETE | ModifierFlag::SHIFT_L | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::DELETE, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::RETURN | ModifierFlag::SHIFT_L | MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::RETURN | ModifierFlag::CONTROL_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::ENTER | ModifierFlag::SHIFT_L | MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::ENTER | ModifierFlag::CONTROL_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::ENTER | ModifierFlag::SHIFT_L | MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::ENTER | ModifierFlag::COMMAND_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::RETURN | ModifierFlag::SHIFT_L | MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_OFF, | |
KeyCode::RETURN | ModifierFlag::COMMAND_L, | |
KeyCode::VK_CONFIG_FORCE_OFF_notsave_emacsmode_ex_controlSpace_core, | |
Option::NOREPEAT, | |
</autogen> | |
</item> | |
<item> | |
<name>Enable Control+Space</name> | |
<identifier>private.emacsmode_ex_controlSpace</identifier> | |
<not>{{EMACS_MODE_IGNORE_APPS}}</not> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::SPACE, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL | ModifierFlag::NONE, | |
KeyCode::VK_LOCK_SHIFT_L_FORCE_ON, | |
KeyCode::VK_CONFIG_FORCE_ON_notsave_emacsmode_ex_controlSpace_core | |
</autogen> | |
</item> | |
</item> | |
<!-- | |
END of mark-sst | |
--> | |
<item> | |
<name>Minor fix for mark-set mode</name> | |
<identifier>private.mark-unset-mode-copy</identifier> | |
<autogen>__KeyToKey__ KeyCode::C, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, | |
KeyCode::W, ModifierFlag::OPTION_L</autogen> | |
</item> | |
<!-- TAB key changed to act as ESC, for MacVim only --> | |
<item> | |
<name>Change Tab to Esc in MacVim</name> | |
<identifier>private.macvimdef</identifier> | |
<only>MACVIM</only> | |
<autogen>__KeyToKey__ KeyCode::TAB, ModifierFlag::NONE, KeyCode::ESCAPE</autogen> | |
</item> | |
<!-- Emacs for Mathematica keys --> | |
<item> | |
<name>Change option to left right in mathematica</name> | |
<identifier>private.mathematicadef</identifier> | |
<only>MATHEMATICA</only> | |
<autogen>__KeyToKey__ | |
KeyCode::B, ModifierFlag::OPTION_L, | |
KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_L | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::B, ModifierFlag::OPTION_R, | |
KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_L | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::F, ModifierFlag::OPTION_L, | |
KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_L | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::F, ModifierFlag::OPTION_R, | |
KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_L | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::V, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::PAGEDOWN | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::V, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::PAGEUP | |
</autogen> | |
</item> | |
<!-- | |
#----RSTUDIO-------------------------------------------------------------- | |
# | |
# Changes for rstudio, chrome and others to default emacs keys | |
# | |
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
--> | |
<item> | |
<name>Fix Keys for Rstudio, Chrome and Safari</name> | |
<identifier>private.rstudiodef</identifier> | |
<only>RSTUDIO,CHROME,SAFARI</only> | |
<!-- Back character/word --> | |
<autogen>__KeyToKey__ | |
KeyCode::B, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_L | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::B, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::CURSOR_LEFT | |
</autogen> | |
<!-- Forward character/word --> | |
<autogen>__KeyToKey__ | |
KeyCode::F, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::CURSOR_RIGHT | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::F, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_L | |
</autogen> | |
<!-- Line Down --> | |
<autogen>__KeyToKey__ | |
KeyCode::N, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::CURSOR_DOWN | |
</autogen> | |
<!-- Line Up --> | |
<autogen>__KeyToKey__ | |
KeyCode::P, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::CURSOR_UP | |
</autogen> | |
<!-- page up/down --> | |
<autogen>__KeyToKey__ | |
KeyCode::V, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, | |
KeyCode::PAGEDOWN | |
</autogen> | |
<autogen>__KeyToKey__ | |
KeyCode::V, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::PAGEUP | |
</autogen> | |
<!-- Forward delete to control d --> | |
<autogen>__KeyToKey__ | |
KeyCode::D, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::FORWARD_DELETE, ModifierFlag::OPTION_L | |
</autogen> | |
</item> | |
<!-- | |
#----more emacs fixes -------------------------------------------------------------- | |
# | |
# some options for fixing emacs mode in pycharm | |
# | |
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
--> | |
<item> | |
<name>Option+BF to Option+Left/Right -- fix for pycharm</name> | |
<identifier>private.emacsmode_optionBF</identifier> | |
<not>{{EMACS_MODE_IGNORE_ARROW_APPS}}</not> | |
<modifier_not> | |
ModifierFlag::COMMAND_L, ModifierFlag::COMMAND_R, | |
ModifierFlag::CONTROL_L, ModifierFlag::CONTROL_R | |
</modifier_not> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::B, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::CURSOR_LEFT, ModifierFlag::OPTION_L, | |
</autogen> | |
<autogen> | |
__KeyToKey__ | |
KeyCode::F, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION, | |
KeyCode::CURSOR_RIGHT, ModifierFlag::OPTION_L, | |
</autogen> | |
</item> | |
</root> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment