Viewing and Modifying Kitty Keyboard Shortcuts
Kitty’s keyboard shortcuts are explicit and configurable, but AFAIK they are not exposed via a traditional in-terminal “help panel” like tmux. Instead, kitty relies on configuration files and generated documentation.
This article explains the actual, correct ways to:
- View existing kitty keyboard shortcuts
- Modify or add your own shortcuts
- Debug key behavior when needed
1. Viewing Kitty Keyboard Shortcuts
1.1 The shipped example config — and why grepping it disappoints
Kitty ships an example config with the package:
/usr/share/doc/kitty/examples/kitty.conf
The advice you'll find everywhere is to grep it for bindings:
grep '^map ' /usr/share/doc/kitty/examples/kitty.conf
This returns nothing. Not on a misconfigured system — on any system. The file is entirely commented out. On kitty 0.41.1 it has 2714 lines and zero uncommented directives:
$ grep -vcE '^\s*(#|$)' /usr/share/doc/kitty/examples/kitty.conf
0
Every binding in that file is documentation, prefixed with #:. To see them you
have to grep the comments, not the config:
grep -E '^#: +map ' /usr/share/doc/kitty/examples/kitty.conf
#: map alt+1 disable_ligatures_in active always
#: map alt+2 disable_ligatures_in all never
#: map ctrl+shift+f2 edit_config_file
Be aware of what that gets you: 19 illustrative examples, not the default keymap. These are the bindings the docs chose to demonstrate syntax with. The real defaults are compiled into kitty and are not in this file at all.
So the example config is useful for discovering what actions exist and how the syntax works. It is not a list of your shortcuts, and treating it as one is the most common mistake here.
1.2 Browser-based help (generated from your active config)
Inside a kitty window, press:
Ctrl + Shift + F1
This generates an HTML help page and opens it in your default web browser.
What it shows:
- Active keybindings
- Defaults plus your overrides
- Generated from your running configuration
Notes:
- This opens outside the terminal
- It is accurate, but involves a context switch
- Useful for browsing, not ideal as a primary reference
1.3 What does not exist (important clarification)
There is no built-in kitten that lists all keybindings in-terminal.
Specifically, commands like:
kitty +kitten show_keybindings
do not exist and will fail.
Kitty does not provide a TUI or CLI command that prints the full active keymap.
2. Debugging Key Input (Advanced)
Kitty does provide a diagnostic tool for inspecting raw key events:
kitty +kitten show_key
This does not show shortcuts.
Instead, it displays:
- The raw key events kitty receives
- Escape sequences
- Modifier states
Use this only when:
- Writing custom keybindings
- Debugging unexpected behavior
- Investigating how a key combo is interpreted
Exit with:
Ctrl + D
3. Modifying Kitty Keyboard Shortcuts
All keyboard customization happens in one file:
~/.config/kitty/kitty.conf
Create it if needed:
mkdir -p ~/.config/kitty
nano ~/.config/kitty/kitty.conf
3.1 Basic keybinding syntax
map <key-combo> <action>
Example:
map ctrl+shift+o copy_last_cmd_output
This binds:
Ctrl + Shift + O
to copying the previous command’s output.
3.2 Overriding default shortcuts
Redefining a key automatically overrides the default.
Example:
map ctrl+shift+h show_scrollback
No explicit “disable” step is required.
3.3 Unbinding a shortcut
To disable a default binding:
map ctrl+shift+t noop
This is useful for removing features you don’t use (tabs, layouts, etc.).
3.4 Discovering available actions
Actions you can bind are listed in the example config file:
/usr/share/doc/kitty/examples/kitty.conf
Search for:
# Actions
Common examples include:
copy_to_clipboardpaste_from_clipboardshow_scrollbackcopy_last_cmd_outputnew_windowclose_window
If an action exists, it’s documented there.
4. Applying changes
After editing kitty.conf:
- Close all kitty windows
- Relaunch kitty
Kitty reads its configuration at startup.
5. Recommended mindset
To keep things sane:
- Treat the example config as the source of truth
- Use browser help for occasional browsing
- Use
show_keyonly for debugging - Keep your custom bindings minimal and intentional
Kitty favors explicit configuration over runtime introspection.
TL;DR
- There is no in-terminal keybinding viewer
grep '^map ' /usr/share/doc/kitty/examples/kitty.confreturns nothing — that file is 100% comments. Grep'^#: +map 'if you want the 19 documented examples, but they aren't your defaultsCtrl + Shift + F1is the only thing that shows your actual active keymap, defaults plus overrides — and it opens a browserkitty +kitten show_keyis for debugging key events, not listing shortcuts- Modify bindings via
~/.config/kitty/kitty.conf
Comments
No comments yet. Be the first!