QuantumGhost
2/3/2012 - 5:46 AM

xcode keybindings for emacs emulation

xcode keybindings for emacs emulation

{
/* Keybindings for emacs emulation.  Compiled by Jacob Rus.
 *
 * To use: copy this file to ~/Library/KeyBindings/
 * after that any Cocoa applications you launch will inherit these bindings
 *
 * This is a pretty good set, especially considering that many emacs bindings
 * such as C-o, C-a, C-e, C-k, C-y, C-v, C-f, C-b, C-p, C-n, C-t, and
 * perhaps a few more, are already built into the system.
 *
 * BEWARE:
 * This file uses the Option key as a meta key.  This has the side-effect
 * of overriding Mac OS keybindings for the option key, which generally
 * make common symbols and non-english letters.
 */
        
    /* Ctrl shortcuts */
    "^l"        = "centerSelectionInVisibleArea:";  /* C-l          Recenter */
    "^/"        = "undo:";                          /* C-/          Undo */
    "^_"        = "undo:";                          /* C-_          Undo */
    "^ "        = "setMark:";                       /* C-Spc        Set mark */
    "^\@"       = "setMark:";                       /* C-@          Set mark */
    "^w"        = "deleteToMark:";                  /* C-w          Delete to mark */
    "^y"	= "yankAndSelect:";                 /* C-y          Cycle through kill ring */

    /* Meta shortcuts */
    "~f"        = "moveWordForward:";               /* M-f          Move forward word */
    "~b"        = "moveWordBackward:";              /* M-b          Move backward word */
    "~<"        = "moveToBeginningOfDocument:";     /* M-<          Move to beginning of document */
    "~>"        = "moveToEndOfDocument:";           /* M->          Move to end of document */
    "~v"        = "pageUp:";                        /* M-v          Page Up */
    "~/"        = "complete:";                      /* M-/          Complete */
    "~c"        = ( "capitalizeWord:",              /* M-c          Capitalize */
                    "moveForward:",
                    "moveForward:");                                
    "~u"        = ( "uppercaseWord:",               /* M-u          Uppercase */
                    "moveForward:",
                    "moveForward:");
    "~l"        = ( "lowercaseWord:",               /* M-l          Lowercase */
                    "moveForward:",
                    "moveForward:");
    "~d"        = "deleteWordForward:";             /* M-d          Delete word forward */
    "^~h"       = "deleteWordBackward:";            /* M-C-h        Delete word backward */
    "~\U007F"   = "deleteWordBackward:";            /* M-Bksp       Delete word backward */
    "~t"        = "transposeWords:";                /* M-t          Transpose words */
    "~\@"       = ( "setMark:",                     /* M-@          Mark word */
                    "moveWordForward:",
                    "swapWithMark");
    "~h"        = ( "setMark:",                     /* M-h          Mark paragraph */
                    "moveToEndOfParagraph:",
                    "swapWithMark");

    /* C-x shortcuts */
    "^x" = {
        "u"     = "undo:";                          /* C-x u        Undo */
        "k"     = "performClose:";                  /* C-x k        Close */
        "^f"    = "openDocument:";                  /* C-x C-f      Open (find file) */
        "^x"    = "swapWithMark:";                  /* C-x C-x      Swap with mark */
        "^m"    = "selectToMark:";                  /* C-x C-m      Select to mark*/
        "^s"    = "saveDocument:";                  /* C-x C-s      Save */
        "^w"    = "saveDocumentAs:";                /* C-x C-w      Save as */
    };
	/* Modifier keys: start with C-m - from mgrimes AT stateful.net */
	"^m" = {
		"^ "    = ("insertText:", "\U2423");  /* C-space space */

		"^e"    = ("insertText:", "\U21A9");  /* C-e     return */
		"e"     = ("insertText:", "\U2305");  /* e       enter */

		"^t"    = ("insertText:", "\U21E5");  /* C-t     tab */
		"t"     = ("insertText:", "\U21E4");  /* t       backtab */

		"^d"    = ("insertText:", "\U232B");  /* C-d     delete */
		"d"     = ("insertText:", "\U2326");  /* d       forward delete */

		"^a"    = ("insertText:", "\U2318");  /* C-a     command (apple) */
		"^o"    = ("insertText:", "\U2325");  /* C-o     option */
		"^c"    = ("insertText:", "\U2303");  /* C-c     control */
		"^s"    = ("insertText:", "\U21E7");  /* C-s     shift */
		"s"     = ("insertText:", "\U21EA");  /* s       caps lock */

		"^b"    = ("insertText:", "\U2190");  /* C-b     solid left */
		"^f"    = ("insertText:", "\U2192");  /* C-f     solid right */
		"^p"    = ("insertText:", "\U2191");  /* C-p     solid up */
		"^n"    = ("insertText:", "\U2193");  /* C-n     solid down */
		"b"     = ("insertText:", "\U21E0");  /* f       dotted left */
		"f"     = ("insertText:", "\U21E2");  /* b       dotted right */
		"p"     = ("insertText:", "\U21E1");  /* p       dotted up */
		"n"     = ("insertText:", "\U21E3");  /* n       dotted down */

		"^h"    = ("insertText:", "\U2196");  /* C-h     home */
		"h"     = ("insertText:", "\U2198");  /* h       end */
		"^u"    = ("insertText:", "\U21DE");  /* C-u     page up */
		"u"     = ("insertText:", "\U21DF");  /* u       page down */

		"^x"    = ("insertText:", "\U238B");  /* C-x     escape */ 
		"x"     = ("insertText:", "\U23CF");  /* x       eject */ 
	};

}