{"id":28695981,"url":"https://github.com/creasty/keyboard","last_synced_at":"2025-06-14T09:09:10.182Z","repository":{"id":43288055,"uuid":"92572731","full_name":"creasty/Keyboard","owner":"creasty","description":"Master of keyboard is master of automation (Key remapper implementation in Swift)","archived":false,"fork":false,"pushed_at":"2022-10-14T03:30:52.000Z","size":172,"stargazers_count":56,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-11T07:53:58.113Z","etag":null,"topics":["cask","hammerspoon","karabiner","keyboard","macos"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creasty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-27T05:15:40.000Z","updated_at":"2025-04-17T18:16:24.000Z","dependencies_parsed_at":"2023-01-19T23:01:05.687Z","dependency_job_id":null,"html_url":"https://github.com/creasty/Keyboard","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/creasty/Keyboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creasty%2FKeyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creasty%2FKeyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creasty%2FKeyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creasty%2FKeyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creasty","download_url":"https://codeload.github.com/creasty/Keyboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creasty%2FKeyboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259790462,"owners_count":22911549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cask","hammerspoon","karabiner","keyboard","macos"],"created_at":"2025-06-14T09:09:09.595Z","updated_at":"2025-06-14T09:09:10.170Z","avatar_url":"https://github.com/creasty.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"Keyboard\n========\n\n[![Build Status](https://github.com/creasty/Keyboard/actions/workflows/build.yml/badge.svg)](https://github.com/creasty/Keyboard/actions/workflows/build.yml)\n[![GitHub release](https://img.shields.io/github/release/creasty/Keyboard.svg)](https://github.com/creasty/Keyboard/releases)\n[![License](https://img.shields.io/github/license/creasty/Keyboard.svg)](./LICENSE)\n\nMaster of keyboard is master of automation.\n\n\nInstallation\n------------\n\n```\n$ brew cask install creasty/tools/keyboard\n```\n\n\nList of actions\n---------------\n\n`+` denotes a key sequence in the 'super key' mode which is activated by pressing and holding the first letter with no modifier keys.\n\n### Window/space navigation\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eS+H\u003c/kbd\u003e | Move to left space |\n| \u003ckbd\u003eS+L\u003c/kbd\u003e | Move to right space |\n| \u003ckbd\u003eS+J\u003c/kbd\u003e | Switch to next application |\n| \u003ckbd\u003eS+K\u003c/kbd\u003e | Switch to previous application |\n| \u003ckbd\u003eS+N\u003c/kbd\u003e | Switch to next window |\n| \u003ckbd\u003eS+B\u003c/kbd\u003e | Switch to previous window |\n| \u003ckbd\u003eS+M\u003c/kbd\u003e | Mission control |\n\n\u003cdetails\u003e\u003csummary\u003eRequirements\u003c/summary\u003e\n\nOpen \"System Preferences\" and set the following shortcuts.\n\n- `Mission Control` \u003e `Move left a space` \u003ckbd\u003eCtrl-LeftArrow\u003c/kbd\u003e\n- `Mission Control` \u003e `Move right a space` \u003ckbd\u003eCtrl-RightArrow\u003c/kbd\u003e\n- `Keyboard` \u003e `Move focus to next window` \u003ckbd\u003eCmd-F1\u003c/kbd\u003e\n\n| 1 | 2 |\n|---|---|\n| ![](https://user-images.githubusercontent.com/1695538/50548207-12b02800-0c8c-11e9-8dd9-527d4aed2b69.png) | ![](https://user-images.githubusercontent.com/1695538/50548209-1643af00-0c8c-11e9-9bf8-1e86ca13f4fb.png) |\n\n\u003c/details\u003e\n\n### Window resizing/positioning\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eS+D+F\u003c/kbd\u003e | Full screen |\n| \u003ckbd\u003eS+D+H\u003c/kbd\u003e | Left half |\n| \u003ckbd\u003eS+D+J\u003c/kbd\u003e | Bottom half |\n| \u003ckbd\u003eS+D+K\u003c/kbd\u003e | Top half |\n| \u003ckbd\u003eS+D+L\u003c/kbd\u003e | Right half |\n\n### Emacs mode\n\n| Key | Description | Shift allowed |\n|:---|:---|:---|\n| \u003ckbd\u003eCtrl-C\u003c/kbd\u003e | Escape | NO |\n| \u003ckbd\u003eCtrl-D\u003c/kbd\u003e | Forward delete | NO |\n| \u003ckbd\u003eCtrl-H\u003c/kbd\u003e | Backspace | NO |\n| \u003ckbd\u003eCtrl-J\u003c/kbd\u003e | Enter | NO |\n| \u003ckbd\u003eCtrl-P\u003c/kbd\u003e | :arrow_up: | YES |\n| \u003ckbd\u003eCtrl-N\u003c/kbd\u003e | :arrow_down: | YES |\n| \u003ckbd\u003eCtrl-B\u003c/kbd\u003e | :arrow_left: | YES |\n| \u003ckbd\u003eCtrl-F\u003c/kbd\u003e | :arrow_right: | YES |\n| \u003ckbd\u003eCtrl-A\u003c/kbd\u003e | Beginning of line | YES |\n| \u003ckbd\u003eCtrl-E\u003c/kbd\u003e | End of line | YES |\n\n### Word motions\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eA+D\u003c/kbd\u003e | Delete word after cursor |\n| \u003ckbd\u003eA+H\u003c/kbd\u003e | Delete word before cursor |\n| \u003ckbd\u003eA+B\u003c/kbd\u003e | Move cursor backward by word |\n| \u003ckbd\u003eA+F\u003c/kbd\u003e | Move cursor forward by word |\n\n### Mouse keys\n\nMouse button:\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eC+M\u003c/kbd\u003e | Left click |\n| \u003ckbd\u003eC+,\u003c/kbd\u003e | Right click |\n\nCursor pointer:\n\n| Key | Description |\n|:---|:---|\n| | **Parallel movements (10px)** |\n| \u003ckbd\u003eC+H\u003c/kbd\u003e | :arrow_left: |\n| \u003ckbd\u003eC+J\u003c/kbd\u003e | :arrow_down: |\n| \u003ckbd\u003eC+K\u003c/kbd\u003e | :arrow_up: |\n| \u003ckbd\u003eC+L\u003c/kbd\u003e | :arrow_right: |\n| | **Parallel movements (10%)** |\n| \u003ckbd\u003eC+S+H\u003c/kbd\u003e | :arrow_left: |\n| \u003ckbd\u003eC+S+J\u003c/kbd\u003e | :arrow_down: |\n| \u003ckbd\u003eC+S+K\u003c/kbd\u003e | :arrow_up: |\n| \u003ckbd\u003eC+S+L\u003c/kbd\u003e | :arrow_right: |\n| | **Diagonal movements (10px)** |\n| \u003ckbd\u003eC+H+J\u003c/kbd\u003e | ↙ |\n| \u003ckbd\u003eC+J+L\u003c/kbd\u003e | ↘ |\n| \u003ckbd\u003eC+K+L\u003c/kbd\u003e | ↗ |\n| \u003ckbd\u003eC+H+K\u003c/kbd\u003e | ↖️ |\n| | **Diagonal movements (10%)** |\n| \u003ckbd\u003eC+S+H+J\u003c/kbd\u003e | ↙ |\n| \u003ckbd\u003eC+S+J+L\u003c/kbd\u003e | ↘ |\n| \u003ckbd\u003eC+S+K+L\u003c/kbd\u003e | ↗ |\n| \u003ckbd\u003eC+S+H+K\u003c/kbd\u003e | ↖️ |\n| | **Quick jump actions** (Highlight enabled) |\n| \u003ckbd\u003eC+Y\u003c/kbd\u003e | Top-left corner |\n| \u003ckbd\u003eC+U\u003c/kbd\u003e | Bottom-left corner |\n| \u003ckbd\u003eC+I\u003c/kbd\u003e | Top-right corner |\n| \u003ckbd\u003eC+O\u003c/kbd\u003e | Bottom-right corner |\n| \u003ckbd\u003eC+U+I\u003c/kbd\u003e | Center of screen |\n\nScroll:\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eC+X+H\u003c/kbd\u003e | :arrow_left: |\n| \u003ckbd\u003eC+X+J\u003c/kbd\u003e | :arrow_down: |\n| \u003ckbd\u003eC+X+K\u003c/kbd\u003e | :arrow_up: |\n| \u003ckbd\u003eC+X+L\u003c/kbd\u003e | :arrow_right: |\n\nHighlight:\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eC+Space\u003c/kbd\u003e | Highlight the location of the mouse pointer |\n\n### Switch input source\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eCtrl-;\u003c/kbd\u003e | Selects next source in the input menu |\n\n### Switch input source with Escape key\n\nChange the input source to English as you leave 'insert mode' in Vim with \u003ckbd\u003eEscape\u003c/kbd\u003e key so it can prevent IME from capturing key strokes in 'normal mode'.\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eCtrl-C\u003c/kbd\u003e | Invokes \u003ckbd\u003eEISUU, Ctrl-C\u003c/kbd\u003e |\n| \u003ckbd\u003eEscape\u003c/kbd\u003e | Invokes \u003ckbd\u003eEISUU, Escape\u003c/kbd\u003e |\n\n### Switch between apps\n\n| Key | App | Bundle ID | URL |\n|:---|:---|:---|:---|\n| \u003ckbd\u003e;+F\u003c/kbd\u003e | Finder | `com.apple.finder` | N/A |\n| \u003ckbd\u003e;+M\u003c/kbd\u003e | Alacritty | `io.alacritty` | https://github.com/jwilm/alacritty |\n| \u003ckbd\u003e;+T\u003c/kbd\u003e | Things | `com.culturedcode.ThingsMac` | https://culturedcode.com/things |\n| \u003ckbd\u003e;+N\u003c/kbd\u003e | Bear | `net.shinyfrog.bear` | https://bear.app |\n\n### Fool-safe \"Quit Application\"\n\nPrevents \u003ckbd\u003eCmd-Q\u003c/kbd\u003e from quiting applications.\n\n| Key | Description |\n|:---|:---|\n| \u003ckbd\u003eCmd-Q\u003c/kbd\u003e | No-op |\n| \u003ckbd\u003eCmd-Q, Cmd-Q\u003c/kbd\u003e | Invokes \u003c/kbd\u003eCmd-Q\u003c/kbd\u003e. Quits application |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreasty%2Fkeyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreasty%2Fkeyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreasty%2Fkeyboard/lists"}