From 2b54755e914a72d2e1c52100107c4aebd2b08b39 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 10 Feb 2025 01:47:42 +0000 Subject: [PATCH] feat(cursor): add settings, keybindings and karabiner modifications for Cursor --- cursor/keybindings.json | 294 ++++++ cursor/settings.json | 134 +++ .../emacs-control-keys-rev-11-custom.json | 835 ++++++++++++++++++ karabiner/emacs-ctrl-g-to-esc.json | 3 +- karabiner/emacs-option-keys-rev-5-custom.json | 280 ++++++ .../vscode-alt-keybindings-workaround.json | 71 ++ 6 files changed, 1616 insertions(+), 1 deletion(-) create mode 100644 cursor/keybindings.json create mode 100644 cursor/settings.json create mode 100644 karabiner/emacs-control-keys-rev-11-custom.json create mode 100644 karabiner/emacs-option-keys-rev-5-custom.json create mode 100644 karabiner/vscode-alt-keybindings-workaround.json diff --git a/cursor/keybindings.json b/cursor/keybindings.json new file mode 100644 index 0000000..991deff --- /dev/null +++ b/cursor/keybindings.json @@ -0,0 +1,294 @@ +// Place your key bindings in this file to override the defaults +[ + // + // Command Palette + // + { + "key": "ctrl+x m", + "command": "workbench.action.showCommands" + }, + { + "key": "ctrl+x ctrl+m", + "command": "workbench.action.showCommands" + }, + { + "key": "ctrl+x enter", + "command": "workbench.action.showCommands" + }, + { + "key": "alt+x", + "command": "workbench.action.showCommands" + }, + // + // Save + // + { + "key": "ctrl+x ctrl+s", + "command": "workbench.action.files.save" + }, + // + // File Open + // + { + "key": "ctrl+x ctrl+;", + "command": "workbench.action.quickOpen" + }, + { + "key": "ctrl+x ctrl+f", + "command": "file-browser.open", + "when": "editorTextFocus" + }, + // + // Fullscreen + // + { + "key": "ctrl+cmd+enter", + "command": "workbench.action.toggleFullScreen", + "when": "!isIOS" + }, + { + "key": "cmd+enter", + "command": "workbench.action.toggleFullScreen", + "when": "!isIOS" + }, + { + "key": "ctrl+cmd+f", + "command": "-workbench.action.toggleFullScreen", + "when": "!isIOS" + }, + // + // Navigation + // + { + "key": "ctrl+x ctrl+o", + "command": "workbench.action.focusNextGroup", + "when": "!terminalFocus" + }, + { + "key": "ctrl+x ctrl+i", + "command": "workbench.action.focusPreviousGroup", + "when": "!terminalFocus" + }, + // Pane navigation + { + "key": "alt+i", + "command": "workbench.action.navigateUp", + }, + // Workaround for alt+i not working in VSCode. + { + "key": "cmd+alt+up", + "command": "workbench.action.navigateUp", + }, + { + "key": "alt+l", + "command": "workbench.action.navigateRight", + }, + { + "key": "alt+j", + "command": "workbench.action.navigateLeft", + }, + { + "key": "alt+k", + "command": "workbench.action.navigateDown", + }, + // + // Undo/Redo + // + { + "key": "alt+-", + "command": "undo", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "shift+alt+-", + "command": "redo", + "when": "editorTextFocus && !editorReadonly" + }, + // + // Text Navigation + // + { + "key": "alt+f", + "command": "cursorWordPartRight", + "when": "editorTextFocus" + }, + { + "key": "alt+b", + "command": "cursorWordPartLeft", + "when": "editorTextFocus" + }, + { + "key": "ctrl+t", + "command": "workbench.action.gotoSymbol", + "when": "editorTextFocus" + }, + { + "key": "ctrl+c ctrl+j", + "command": "editor.action.revealDefinition" + }, + { + "key": "alt+g b", + "command": "workbench.action.navigateBack" + }, + { + "key": "alt+shift+/", + "command": "editor.action.referenceSearch.trigger", + "when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor" + }, + // + // Text Manipulation + // + { + "key": "alt+d", + "command": "deleteWordPartRight", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "alt+backspace", + "command": "deleteWordPartLeft", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+c ctrl+/", + "command": "editor.action.commentLine", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "alt+p", + "command": "notebook.cell.moveUp", + "when": "notebookEditorFocused && !inputFocus" + }, + { + "key": "alt+n", + "command": "notebook.cell.moveDown", + "when": "notebookEditorFocused && !inputFocus" + }, + { + "key": "ctrl+c ctrl+f", + "command": "editor.action.formatDocument", + "when": "editorTextFocus && !editorReadonly" + }, + // Workaround for alt+n not working in VSCode. + { + "key": "alt+cmd+down", + "command": "notebook.cell.moveDown", + "when": "notebookEditorFocused && !inputFocus" + }, + { + "key": "alt+p", + "command": "editor.action.moveLinesUpAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "alt+n", + "command": "editor.action.moveLinesDownAction", + "when": "editorTextFocus && !editorReadonly" + }, + // Workaround for alt+n not working in VSCode. + { + "key": "alt+cmd+down", + "command": "editor.action.moveLinesDownAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+x ctrl+d", + "command": "editor.action.duplicateSelection", + }, + { + "key": "ctrl+c ctrl+.", + "command": "editor.action.rename", + "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly" + }, + // + // Completion + // + { + "key": "alt+shift+f", + "command": "editor.action.inlineSuggest.acceptNextWord" + }, + // + // edamagit + // + { + "key": "ctrl+x g", + "command": "magit.status" + }, + { + "key": "alt+x g", + "command": "-magit.status" + }, + // + // Project Manager + // + { + "key": "ctrl+z ctrl+s", + "command": "projectManager.listProjects" + }, + { + "key": "alt+cmd+p", + "command": "-projectManager.listProjects" + }, + // + // dired + // + { + "key": "ctrl+x ctrl+j", + "command": "extension.dired.open", + "when": "editorTextFocus && !inDebugRepl" + }, + { + "key": "ctrl+x f", + "command": "-extension.dired.open", + "when": "editorTextFocus && !inDebugRepl" + }, + { + "key": "c", + "command": "extension.dired.createDir", + "when": "dired.open && !findWidgetVisible && !inQuickOpen" + }, + { + "key": "shift+=", + "command": "-extension.dired.createDir", + "when": "dired.open && !findWidgetVisible && !inQuickOpen" + }, + { + "key": "ctrl+l", + "command": "extension.dired.goUpDir", + "when": "dired.open && !findWidgetVisible && !inQuickOpen" + }, + { + "key": "shift+b", + "command": "-extension.dired.goUpDir", + "when": "dired.open && !findWidgetVisible && !inQuickOpen" + }, + // + // swiper + // + { + "key": "alt+r", + "command": "swiper.swiper-word-at-cursor", + }, + // + // Multi-Cusor + // + { + "key": "alt+m", + "command": "editor.action.insertCursorAbove", + "when": "editorTextFocus" + }, + { + "key": "alt+cmd+up", + "command": "-editor.action.insertCursorAbove", + "when": "editorTextFocus" + }, + { + "key": "alt+/", + "command": "editor.action.insertCursorBelow", + "when": "editorTextFocus" + }, + { + "key": "alt+cmd+down", + "command": "-editor.action.insertCursorBelow", + "when": "editorTextFocus" + }, +] diff --git a/cursor/settings.json b/cursor/settings.json new file mode 100644 index 0000000..c3cc524 --- /dev/null +++ b/cursor/settings.json @@ -0,0 +1,134 @@ +{ + // + // Theme + // + "workbench.colorTheme": "One Dark Pro", + // + // Editor + // + "editor.fontFamily": "'Menlo Nerd Font Mono', 'Menlo Nerd Font', Menlo, Monaco, 'Courier New', monospace", + "editor.renderWhitespace": "trailing", + "editor.formatOnSave": true, + "editor.formatOnPaste": false, + "editor.rulers": [ + 80, + 100, + 120 + ], + "editor.semanticHighlighting.enabled": true, + // + // Files + // + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + // + // Cursor + // + "cursor.aipreview.enabled": true, + "cursor.cpp.enablePartialAccepts": true, + "cursor.diffs.useCharacterLevelDiffs": true, + "cursor.terminal.usePreviewBox": true, + "cursor.general.enableShadowWorkspace": true, + // + // Window + // + "window.nativeFullScreen": false, + "window.commandCenter": true, + // + // Terminal + // + "terminal.integrated.persistentSessionScrollback": 1000, + "terminal.integrated.scrollback": 10000, + // + // Awesome Emacs Keybindings + // + "emacs-mcx.emacsLikeTab": true, + "emacs-mcx.killRingMax": 120, + "emacs-mcx.markRingMax": 32, + // + // File Browser + // + "file-browser.hideDotfiles": false, + "file-browser.labelIgnoredFiles": true, + // + // Project Manager + // + "projectManager.git.baseFolders": [ + "~/Projects", + "~/.dotfiles", + "~/.config" + ], + "projectManager.git.ignoredFolders": [ + "node_modules", + "out", + "typings", + "test", + ".haxelib", + "tmp", + "vendor", + "straight", + "elpaca" + ], + "projectManager.any.ignoredFolders": [ + "node_modules", + "out", + "typings", + "test", + "tmp", + "vendor", + "straight", + "elpaca" + ], + "projectManager.hg.ignoredFolders": [ + "node_modules", + "out", + "typings", + "test", + ".haxelib", + "straight", + "elpaca" + ], + "projectManager.svn.ignoredFolders": [ + "node_modules", + "out", + "typings", + "test", + "straight", + "elpaca" + ], + "projectManager.vscode.ignoredFolders": [ + "node_modules", + "out", + "typings", + "test", + "straight", + "elpaca" + ], + // + // Go + // + "go.formatTool": "gofumpt", + "go.inlayHints.constantValues": true, + "go.lintTool": "golangci-lint", + "go-lines.lineLength": 120, + // + // Ruby + // + "[ruby]": { + "editor.defaultFormatter": "Shopify.ruby-lsp", + "editor.formatOnSave": true, + "editor.formatOnType": true, + "editor.insertSpaces": true, + "editor.tabSize": 2, + }, + // + // YAML (by RedHat) + // + "redhat.telemetry.enabled": false, + // + // Settings Sync + // + "sync.gist": "f69653abef0a95b41ab928e868551d87", + "sync.autoUpload": true, +} diff --git a/karabiner/emacs-control-keys-rev-11-custom.json b/karabiner/emacs-control-keys-rev-11-custom.json new file mode 100644 index 0000000..d0943ab --- /dev/null +++ b/karabiner/emacs-control-keys-rev-11-custom.json @@ -0,0 +1,835 @@ +{ + "description": "Emacs key bindings [control+keys] (rev 11) [custom]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "option" + ] + } + }, + "to": [ + { + "key_code": "delete_forward" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "option" + ] + } + }, + "to": [ + { + "key_code": "delete_or_backspace" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "tab" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "keyboard_types": [ + "ansi", + "iso" + ], + "type": "keyboard_type_if" + } + ], + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock" + ] + } + }, + "to": [ + { + "key_code": "escape" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "keyboard_types": [ + "jis" + ], + "type": "keyboard_type_if" + } + ], + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock" + ] + } + }, + "to": [ + { + "key_code": "escape" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift", + "option" + ] + } + }, + "to": [ + { + "key_code": "return_or_enter" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift", + "option" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift", + "option" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift", + "option" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift", + "option" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "page_down" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.microsoft\\.Excel$", + "^com\\.microsoft\\.Powerpoint$", + "^com\\.microsoft\\.Word$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "home" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.microsoft\\.Excel$", + "^com\\.microsoft\\.Powerpoint$", + "^com\\.microsoft\\.Word$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "end" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.microsoft\\.Excel$", + "^com\\.microsoft\\.Powerpoint$", + "^com\\.microsoft\\.Word$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "end", + "modifiers": [ + "left_shift" + ] + }, + { + "key_code": "delete_forward" + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.eclipse\\.platform\\.ide$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "left_command" + ] + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.eclipse\\.platform\\.ide$" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "left_command" + ] + } + ], + "type": "basic" + } + ] +} \ No newline at end of file diff --git a/karabiner/emacs-ctrl-g-to-esc.json b/karabiner/emacs-ctrl-g-to-esc.json index cdcb057..fdd9126 100644 --- a/karabiner/emacs-ctrl-g-to-esc.json +++ b/karabiner/emacs-ctrl-g-to-esc.json @@ -48,7 +48,8 @@ "^org\\.macosforge\\.xquartz\\.X11$", "^org\\.macports\\.X11$", "^com\\.sublimetext\\.", - "^com\\.microsoft\\.VSCode$" + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\." ], "type": "frontmost_application_unless" } diff --git a/karabiner/emacs-option-keys-rev-5-custom.json b/karabiner/emacs-option-keys-rev-5-custom.json new file mode 100644 index 0000000..6520435 --- /dev/null +++ b/karabiner/emacs-option-keys-rev-5-custom.json @@ -0,0 +1,280 @@ +{ + "description": "Emacs key bindings [option+keys] (rev 5) [custom]", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["option"], + "optional": ["caps_lock", "shift"] + } + }, + "to": [{ "key_code": "page_up" }], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["option"], + "optional": ["caps_lock", "shift"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["left_option"] + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["option"], + "optional": ["caps_lock", "shift"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["left_option"] + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^org\\.gnu\\.Emacs$", + "^org\\.gnu\\.AquamacsEmacs$", + "^org\\.gnu\\.Aquamacs$", + "^org\\.pqrs\\.unknownapp\\.conkeror$", + "^com\\.microsoft\\.rdc$", + "^com\\.microsoft\\.rdc\\.", + "^net\\.sf\\.cord$", + "^com\\.thinomenon\\.RemoteDesktopConnection$", + "^com\\.itap-mobile\\.qmote$", + "^com\\.nulana\\.remotixmac$", + "^com\\.p5sys\\.jump\\.mac\\.viewer$", + "^com\\.p5sys\\.jump\\.mac\\.viewer\\.", + "^com\\.teamviewer\\.TeamViewer$", + "^com\\.vmware\\.horizon$", + "^com\\.2X\\.Client\\.Mac$", + "^com\\.OpenText\\.Exceed-TurboX-Client$", + "^com\\.realvnc\\.vncviewer$", + "^com\\.citrix\\.receiver\\.icaviewer", + "^com\\.apple\\.Terminal$", + "^com\\.googlecode\\.iterm2$", + "^co\\.zeit\\.hyperterm$", + "^co\\.zeit\\.hyper$", + "^io\\.alacritty$", + "^org\\.alacritty$", + "^net\\.kovidgoyal\\.kitty$", + "^com\\.mitchellh\\.ghostty$", + "^org\\.vim\\.", + "^com\\.qvacua\\.VimR$", + "^com\\.vmware\\.fusion$", + "^com\\.vmware\\.horizon$", + "^com\\.vmware\\.view$", + "^com\\.parallels\\.desktop$", + "^com\\.parallels\\.vm$", + "^com\\.parallels\\.desktop\\.console$", + "^org\\.virtualbox\\.app\\.VirtualBoxVM$", + "^com\\.citrix\\.XenAppViewer$", + "^com\\.vmware\\.proxyApp\\.", + "^com\\.parallels\\.winapp\\.", + "^com\\.utmapp\\.UTM$", + "^org\\.x\\.X11$", + "^com\\.apple\\.x11$", + "^org\\.macosforge\\.xquartz\\.X11$", + "^org\\.macports\\.X11$", + "^com\\.sublimetext\\.", + "^com\\.microsoft\\.VSCode$", + "^com\\.todesktop\\.", + "^dev\\.warp\\.Warp$" + ], + "type": "frontmost_application_unless" + } + ], + "from": { + "key_code": "d", + "modifiers": { + "mandatory": ["option"], + "optional": ["caps_lock"] + } + }, + "to": [ + { + "key_code": "delete_forward", + "modifiers": ["left_option"] + } + ], + "type": "basic" + } + ] +} \ No newline at end of file diff --git a/karabiner/vscode-alt-keybindings-workaround.json b/karabiner/vscode-alt-keybindings-workaround.json new file mode 100644 index 0000000..ca859a3 --- /dev/null +++ b/karabiner/vscode-alt-keybindings-workaround.json @@ -0,0 +1,71 @@ +{ + "description": "VSCode alt keybindings workaround", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.microsoft\\.VSCode", + "^com\\.todesktop\\." + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": [ + "left_option", + "left_command" + ] + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^com\\.microsoft\\.VSCode", + "^com\\.todesktop\\." + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "option" + ], + "optional": [ + "caps_lock", + "shift" + ] + } + }, + "to": [ + { + "key_code": "down_arrow", + "modifiers": [ + "left_option", + "left_command" + ] + } + ], + "type": "basic" + } + ] +} \ No newline at end of file