Reference
Key bindings
The session UI reads raw keystrokes and negotiates richer terminal keyboard protocols at startup. These are the bindings the current TUI recognizes.
Editing & cursor
The input box is multi-line and accepts full UTF-8 text. Pasted text arrives as one literal block via bracketed paste.
| Key | Action |
|---|---|
| any printable key | Insert text at the cursor. |
| ← / → | Move one character. |
| Alt+B / Alt+F Ctrl+← / Ctrl+→ | Move by word. Terminals vary in which encoding they send; panto accepts the common ones. |
| Ctrl+A / Ctrl+E | Jump to start / end of the current line. |
| Backspace / Delete | Delete backward / forward. |
| Ctrl+U / Ctrl+W | Delete to line start / delete previous word. |
| paste | Insert the pasted bytes literally; pasted newlines do not auto-submit. |
Submit & newline
| Key | Action |
|---|---|
| Enter | Submit the current input. |
| Shift+Enter | Insert a newline when the terminal can report it distinctly. |
Whether Shift+Enter works depends on keyboard-protocol support. panto negotiates Kitty first, then falls back to xterm modifyOtherKeys.
Selectors & control
| Key | Action |
|---|---|
| Ctrl+T | Open the model selector. |
| Ctrl+R | Open the reasoning selector. |
| Ctrl+O | Collapse / expand all tool output. |
| Ctrl+G | Edit the current draft in $EDITOR (or [tui] editor). |
| Esc | Interrupt the running turn, close an open selector, or clear the input when idle. |
| Ctrl+C / Ctrl+D | Exit cleanly. |
Selectors are filterable: type to narrow the list, move with ↑/↓ or Ctrl+N/Ctrl+P, and accept with Enter (or Tab for completion-style pickers).
Selectors are session-local
Choosing a model or reasoning level changes the live session only. Nothing is written back toconfig.toml or models.toml.Terminal protocol
panto enables bracketed paste and probes for keyboard protocol support at startup.
Shift + Enter
With the legacy terminal protocol, Enter and Shift+Enter are the same byte. panto pushes the Kitty keyboard protocol and queries the terminal; if that is unavailable it falls back to xterm modifyOtherKeys.
| Terminal | Shift + Enter |
|---|---|
| Kitty, Ghostty, foot | Supported via Kitty keyboard protocol. |
| xterm, tmux | Supported via modifyOtherKeys fallback. |
| Terminal.app and similar | Indistinguishable from Enter, so it submits. |
Bracketed paste
Bracketed paste means multi-line pastes are inserted literally instead of being reinterpreted as a sequence of keypresses.