Skip to content

Key bindings

Keys register through the mayflyKeymap service; duplicate bindings are rejected. The /help overlay lists every registered binding live — it is the authoritative source for this table (if anything differs, trust /help).

Global actions

In effect regardless of focus:

KeyActionDescription
Ctrl-OToggle tool output expansionSwitch the most recent 3 turns of tool cards and thinking blocks between one-line summary and full output
Ctrl-TToggle todo pane foldingFive-row folded view ↔ full list
F6 / Shift+F6Move surface focusTraverse the Editor and pane lanes in layout order; crossing an end returns to the Editor, while an open capturing overlay owns focus

Shared interaction keys

A focused surface uses a hierarchy: outer tabs → nested tabs → content groups → editing. The contextual hint at the bottom appears only while that surface owns focus and changes with the active layer, editing, adjustment, and confirmation state:

KeyActionDescription
/ Navigate a horizontal layerMove inside tabs, actions, and select adjustment without wrapping
EnterDescend / submit / confirmDescend from a tab strip or activate a list, action, or input confirmation
Tab / Shift-TabSwitch content groupsCycle list/form/action semantic groups and remember in-group focus; inert on tab strips
EscapeReturn / cancel / dismissEditing → content → nested tabs → outer tabs → close, one layer per press; once back in the Editor, the completion/retract/interrupt chain applies
/ Navigate a vertical layerMove inside lists and forms without wrapping; disabled rows are skipped
SpaceToggle selectionToggle the focused multi-select entry; Enter confirms the set

Editor context

Text-editing keys (cursor movement, multi-line, undo, kill-ring) belong to the underlying editor; in addition:

KeyActionDescription
Ctrl-CClear → interrupt → exitClears the draft, then interrupts a running agent; a second press within 1 second exits Mayfly
Ctrl-SSteerInject the non-empty draft as a steering instruction into the current turn, clearing the buffer
Ctrl-VPaste imageStore the clipboard image in the attachment library, inserting an [image #N] marker at the cursor
Ctrl-GExternal editorHand the draft to an external editor for full-screen editing (mayfly.editorCommand setting → $VISUAL$EDITOR; Mayfly suspends and yields the terminal); quitting with :cq leaves the draft untouched
Alt+MCycle session modelStep through the current provider's models (session-only, no persisted default; the press is consumed, the draft stays intact)
BackspaceDelete / exit modeBackspace on an empty ! bash prompt exits back to prompt mode
Shift+TabCycle session modenormal → plan → yolo (see Session modes). Effective only under editor focus — panels and questionnaires keep their own Tab navigation

Panel contexts

SurfaceKeys
/help overlay↑↓ / PageUp / PageDown scroll; Escape / Enter / q close
/sessions picker↑↓ navigates without wrapping and Enter resumes; after typing a filter, Esc only ends filtering and preserves the query, while the focused Clear filter action clears it before layered exit
Approval panelnon-wrapping ↑↓ + Enter, or number keys 14 directly; Escape rejects
Questionnairequestion tabs use non-wrapping / , then Enter enters content; Tab is inert on the question tabs; single-choice uses ↑↓ + Enter, multi-choice uses Space + Enter, and Esc inside Other returns to the list
Form panelnon-wrapping Up / Down changes fields in navigation; first Enter enters text editing, then Enter or a valid Tab confirms, while invalid input stays on the field; Alt+Enter inserts a textarea newline; a select uses Enter to enter, / to adjust, and Enter/valid Tab to confirm; content-level Tab switches semantic groups and Escape climbs layers
Plan review / or 13 choose a decision; / / PageUp / PageDown scroll the plan; Enter confirms
/model panelproviders are the only tab layer: non-wrapping / switches provider and Enter enters the model list; in the list, / selects a model, / adjusts that model's thinking level, and Tab reaches the equal action choices
/effort panelnon-wrapping / moves between thinking levels and Enter descends; Set as default persists while Use for this session changes only the live session
/btw paneEsc close; mouse wheel / PageUp / PageDown scroll; Enter follow-up

Custom bindings

Deferred to a later phase. There is no user-facing key configuration today; conflicts are prevented by rejecting duplicate registrations at keymap registration time.

Preview · v0.1.0-alpha.1