Reference

Key bindings

TUI input

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.

KeyAction
any printable keyInsert 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+EJump to start / end of the current line.
Backspace / DeleteDelete backward / forward.
Ctrl+U / Ctrl+WDelete to line start / delete previous word.
pasteInsert the pasted bytes literally; pasted newlines do not auto-submit.

Submit & newline

KeyAction
EnterSubmit the current input.
Shift+EnterInsert 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

KeyAction
Ctrl+TOpen the model selector.
Ctrl+ROpen the reasoning selector.
Ctrl+OCollapse / expand all tool output.
Ctrl+GEdit the current draft in $EDITOR (or [tui] editor).
EscInterrupt the running turn, close an open selector, or clear the input when idle.
Ctrl+C / Ctrl+DExit 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 to config.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.

TerminalShift + Enter
Kitty, Ghostty, footSupported via Kitty keyboard protocol.
xterm, tmuxSupported via modifyOtherKeys fallback.
Terminal.app and similarIndistinguishable 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.