{"id":37212676,"url":"https://github.com/kencx/keyb","last_synced_at":"2026-01-15T00:29:45.791Z","repository":{"id":41607634,"uuid":"448188117","full_name":"kencx/keyb","owner":"kencx","description":"Create and view custom hotkey cheatsheets in the terminal","archived":false,"fork":false,"pushed_at":"2025-06-28T15:52:49.000Z","size":51170,"stargazers_count":218,"open_issues_count":9,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-28T16:48:28.150Z","etag":null,"topics":["bubbletea","cheatsheet","command-line","hotkeys","keybindings","keyboard-shortcuts","keymappings","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","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/kencx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-15T05:17:44.000Z","updated_at":"2025-06-28T15:52:52.000Z","dependencies_parsed_at":"2024-05-08T17:04:56.445Z","dependency_job_id":"c2083d7f-3eeb-440e-be71-65203ffae438","html_url":"https://github.com/kencx/keyb","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/kencx/keyb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kencx%2Fkeyb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kencx%2Fkeyb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kencx%2Fkeyb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kencx%2Fkeyb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kencx","download_url":"https://codeload.github.com/kencx/keyb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kencx%2Fkeyb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28439704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bubbletea","cheatsheet","command-line","hotkeys","keybindings","keyboard-shortcuts","keymappings","terminal","tui"],"created_at":"2026-01-15T00:29:45.211Z","updated_at":"2026-01-15T00:29:45.780Z","avatar_url":"https://github.com/kencx.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# keyb\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg width=\"660\" src=\"https://github.com/kencx/keyb/blob/master/assets/compressed.gif?raw=true\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eCreate and view your own custom hotkey cheatsheet in the terminal\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://goreportcard.com/badge/github.com/kencx/keyb\"\u003e\n\t\u003cimg src=\"https://github.com/kencx/keyb/actions/workflows/test.yml/badge.svg?branch=master\"\u003e\n\u003c/p\u003e\n\n### Features\n- Lightweight and quick\n- Fully customizable\n- Fuzzy filtering\n- Vim key bindings\n- Export to stdout for fzf, rofi support\n\n### Non-Features\nkeyb does **not** support:\n\n- Auto detection of hotkeys\n- Command selection\n\n## Motivation\n\nI had trouble remembering the various hotkeys that I sometimes use. It got\nannoying to look them up so I resorted to writing them down on a paper\ncheatsheet. Then, I thought: maybe there's a tool that does this better. I\ndidn't find one I liked so I built keyb.\n\nI also wrote a blog [post](https://blog.cheo.dev/posts/keyb) about building keyb.\n\nWith keyb, I can list:\n\n- Hotkeys that I occasionally forget or am new to\n- Custom key combinations that I defined for my own workflow\n- Short commands that I sometimes use\n\nIt is best used as a popup cheatsheet.\n\n## Install\nkeyb supports Linux, MacOS and Windows.\n\n### Compiled Binary\nDownload a compiled binary from the [releases](https://github.com/kencx/keyb/releases) page.\n\n### Install with Go\n\n```bash\n$ go install github.com/kencx/keyb@latest\n```\n\n### Build from source\n\n```bash\n$ git clone https://github.com/kencx/keyb\n$ cd keyb\n$ make build\n```\n\n## Usage\n\n```text\nusage: keyb [options] \u003ccommand\u003e\n\nOptions:\n  -p, --print     Print to stdout\n  -e, --export    Export to file\n  -k, --key       Key bindings at custom path\n  -c, --config    Config file at custom path\n  -v, --version   Version info\n  -h, --help      help for keyb\n\nCommands:\n  a, add          Add keybind to keyb file\n```\n\n### Search\n\n- Enter search mode with `/` to perform fuzzy filtering on all rows\n- Exit search mode again with `Esc`\n- `Alt + d` clears the current filter\n\nTo perform filtering on section headings only, prefix the\nsearch with `h:`. This will return all matching section headings with their\nrespective rows.\n\n### Printing\n\nkeyb supports printing to stdout for use with other tools:\n\n```bash\n$ keyb -p | fzf\n$ keyb -p | rofi -dmenu\n```\n\n### keyb File\n\nkeyb requires a `yaml` file with a list of hotkeys to work. A default file is\ngenerated in your system's config directory if no other file is specified.\n\nHotkeys are classified into sections with a name and (optional) prefix field.\nWhen displayed, sections are sorted by alphabetical order while the keys\nthemselves are arranged in their defined order.\n\n```yaml\n- name: bspwm\n  keybinds:\n    - name: terminal\n      key: Super + Return\n```\n\nThe prefix is a key combination that will be prepended to every hotkey in the\nsection. A key can choose to opt out by including a `ignore_prefix: true` field.\nPrefixes are useful for applications with a common leading hotkey like tmux.\n\n```yaml\n- name: tmux\n  prefix: ctrl + b\n  keybinds:\n    - name: Create new window\n      key: c\n    - name: Prev, next window\n      key: Shift + {←, →}\n      ignore_prefix: true\n```\n\nRefer to the `examples` for more examples.\n\n\u003eMultiline fields are not supported!\n\n### Quick Add\n\n```text\nusage: keyb [-k file] add [app; name; key]\n\nOptions:\n  -b, --binding  Key binding\n  -p, --prefix   Ignore prefix\n```\n\nYou can quick add bindings from the command line to a specified file. If `-k\nfile` is given and exists, the new keybind will be appended to the file.\nOtherwise, `keyb_path` defined in `config.yml` will be used.\n\n```bash\n$ keyb add -b \"kitty; open terminal; super + enter\"\n```\n\nWhen adding a new keybind, the app name, keybind name and keybind must be\nspecified. It is separated by `;` and wrapped in quotes (to prevent parsing errors).\n\n## Configuration\n\nkeyb can be customized with a config file at the default OS config\ndirectory (i.e. `$XDG_CONFIG_HOME/keyb/config.yml`). If no such file exists, the\ndefault configuration will be used.\n\nSee [config](examples/config/README.md) for all configuration options.\n\n### Missing Colors\n\nIf you're missing colors, a workaround is to add the environment variable `CLICOLOR_FORCE=1` to\n[force ANSI color support](https://pkg.go.dev/github.com/muesli/termenv#Output.EnvColorProfile).\n\n## Roadmap\n\n- [x] Ability to customize keyb hotkeys\n- [x] `a, add` subcommand to quickly add a single hotkey entry from the CLI\n- [ ] Export to additional file formats (`json, toml, conf/ini` etc.)\n- [ ] Support multiple keyb files or directories\n\n## Contributing\n\nkeyb requires Go 1.22. Bug reports, feature requests and PRs are very welcome.\n\n## Similar Tools\n\n- [showkeys](https://github.com/adamharmansky/showkeys) offers a keybinding popup similar to awesomewm\n- [cheat](https://github.com/cheat/cheat) is a CLI alternative to view cheatsheets for\n  commands and hotkeys for just about any topic\n- Refer to [shortcut-pages](https://github.com/mt-empty/shortcut-pages), [cheat/cheatsheets](https://github.com/cheat/cheatsheets) for more cheatsheets\n\n## License\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkencx%2Fkeyb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkencx%2Fkeyb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkencx%2Fkeyb/lists"}