Keyboard Shortcuts
Kitty uses a powerful map directive to bind key combinations to actions. Every action kitty can perform is bindable, giving you complete control over your terminal shortcuts.
Core Idea
Every kitty shortcut is a map statement in kitty.conf: map <modifiers>+<key> <action>. The default prefix is ctrl+shift, but you can remap anything.
The Map Directive
~/.config/kitty/kitty.conf
# Syntax: map <key_combo> <action>
# Example defaults
map ctrl+shift+enter new_window
map ctrl+shift+t new_tab
map ctrl+shift+q close_window
map ctrl+shift+left previous_tab
map ctrl+shift+right next_tab
Modifier Keys
Kitty supports these modifiers:
| Modifier | Config Name | Notes |
|---|---|---|
| Control | ctrl | |
| Shift | shift | |
| Alt | alt | May conflict with Alt+letter combos in some apps |
| Super/Windows | super | Map to cmd on macOS |
Combine modifiers with +:
map ctrl+shift+enter new_window
map ctrl+alt+left neighboring_window left
map ctrl+shift+alt+up resize_window taller
Key Names
Kitty uses standard key names:
| Key type | Names |
|---|---|
| Letters | a through z |
| Numbers | 0 through 9 |
| Function | f1 through f24 |
| Navigation | left, right, up, down, home, end, page_up, page_down |
| Editing | backspace, delete, insert, tab, escape, enter |
| Special | space, comma, period, semicolon, grave, minus, equal, bracket_left, bracket_right, backslash |
Important Default Shortcuts
Window Management
| Shortcut | Action |
|---|---|
Ctrl+Shift+Enter | New window (vertical split) |
Ctrl+Shift+Alt+Enter | New window (horizontal split) |
Ctrl+Shift+arrows | Focus neighboring window |
Ctrl+Shift+Alt+arrows | Resize window |
Ctrl+Shift+z | Maximize/unmaximize window |
Ctrl+Shift+q | Close window |
Ctrl+Shift+w | Close window (alternative) |
Tab Management
| Shortcut | Action |
|---|---|
Ctrl+Shift+t | New tab |
Ctrl+Shift+Alt+t | Set tab title |
Ctrl+Shift+left | Previous tab |
Ctrl+Shift+right | Next tab |
Ctrl+Shift+1-9 | Switch to tab by number |
Ctrl+Shift+, | Move tab left |
Ctrl+Shift+. | Move tab right |
Scrolling and Selection
| Shortcut | Action |
|---|---|
Ctrl+Shift+up | Scroll line up |
Ctrl+Shift+down | Scroll line down |
Ctrl+Shift+page_up | Scroll page up |
Ctrl+Shift+page_down | Scroll page down |
Ctrl+Shift+h | Scroll to top |
Ctrl+Shift+end | Scroll to bottom |
Ctrl+Shift+s | Open scrollback browser |
Ctrl+Shift+c | Copy to clipboard |
Ctrl+Shift+v | Paste from clipboard |
Miscellaneous
| Shortcut | Action |
|---|---|
Ctrl+Shift+F5 | Reload config |
Ctrl+Shift+p | Open command palette |
Ctrl+Shift+u | Unicode input |
Ctrl+Shift+l | Next layout |
Ctrl+Shift+r | Start/stop recording (terminal output) |
Ctrl+Shift+o | Open URL under cursor |
Discovering Available Actions
# list all available actions from the command line
kitty @ --help | grep -A1 "^ [a-z]"
# or inside kitty: open command palette
Ctrl+Shift+p
# type any action name to see available options
Custom Mappings
~/.config/kitty/kitty.conf
# Remap close to Ctrl+Shift+x instead of q
unmap ctrl+shift+q
map ctrl+shift+x close_window
# Vim-style window navigation (no prefix needed)
map ctrl+alt+h neighboring_window left
map ctrl+alt+j neighboring_window down
map ctrl+alt+k neighboring_window up
map ctrl+alt+l neighboring_window right
# Launch specific commands
map ctrl+shift+m new_window less /var/log/syslog
map ctrl+shift+h new_window htop
# Send text to terminal
map ctrl+shift+d send_text all "date\n"
Unmapping Defaults
To disable a default shortcut before remapping:
unmap ctrl+shift+enter
Using kitty @ to Discover Actions
# show all remote control commands
kitty @ --help
# show help for a specific action
kitty @ resize-window --help
Quick Reference: Most Common Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Shift+Enter | New vertical window |
Ctrl+Shift+Alt+Enter | New horizontal window |
Ctrl+Shift+t | New tab |
Ctrl+Shift+arrows | Focus window |
Ctrl+Shift+Alt+arrows | Resize window |
Ctrl+Shift+z | Maximize window |
Ctrl+Shift+q | Close window |
Ctrl+Shift+l | Next layout |
Ctrl+Shift+p | Command palette |
Ctrl+Shift+F5 | Reload config |
Common Pitfalls
| Pitfall | Symptom | Fix |
|---|---|---|
| Binding conflicts with shell/app | Shortcut doesn't reach app | Use kitty @ from shell, or remap the conflicting key |
Modifier super not working | Nothing happens | On Linux, super is usually windows key — test with xev |
| Custom map not taking effect | Old behavior persists | Check for unmap before map, and reload config |
| Case sensitivity confusion | Ctrl+Shift+A vs a | Key names are lowercase; a means the lowercase a key |
| Repeated keys not working | map -r not set | Add --repeat flag for keys meant to be held down |
Hands-On Practice
# Add custom shortcuts to your config
cat >> ~/.config/kitty/kitty.conf << 'EOF'
# Vim-style window nav
map ctrl+alt+h neighboring_window left
map ctrl+alt+j neighboring_window down
map ctrl+alt+k neighboring_window up
map ctrl+alt+l neighboring_window right
# Quick launch htop
map ctrl+shift+m new_window htop
EOF
kitty @ load-config
# Test your new bindings inside kitty:
# Ctrl+Alt+h/j/k/l → navigate windows
# Ctrl+Shift+m → open htop in new window