Files
oh-my-pi/docs/keybindings.md
T
roboomp 8b71ad0982 docs: corrected keybinding config reference
Documented that keybinding remaps live in ~/.omp/agent/keybindings.json and use namespaced action IDs. Added the keybindings reference page to the embedded docs set.

Fixes #1353
2026-05-25 17:21:33 +00:00

2.1 KiB

Keybindings

Run /hotkeys inside an omp session to see the active chords for your current build. The list reflects any remaps loaded from disk and any bindings added by extensions.

Customize keybindings

User remaps live in ~/.omp/agent/keybindings.json. The file is a JSON object whose keys are keybinding action IDs and whose values are either one chord string or an array of chord strings. It is not read from ~/.omp/agent/config.yml, and there is no nested keybindings object.

{
  "app.model.cycleForward": "Ctrl+P",
  "app.model.selectTemporary": "Alt+P",
  "app.plan.toggle": "Alt+Shift+P"
}

Chord names are case-insensitive and use the same notation shown in the UI, such as Ctrl+P, Alt+Shift+P, Shift+Enter, and Ctrl+Backspace.

Set an action to an empty array to disable it:

{
  "app.stt.toggle": []
}

Common action IDs

Action ID Default Meaning
app.model.cycleForward Ctrl+P Cycle role models forward
app.model.cycleBackward Shift+Ctrl+P Cycle role models backward
app.model.selectTemporary Alt+P Pick a model temporarily for this session
app.model.select Ctrl+L Open the model selector and set roles
app.plan.toggle Alt+Shift+P Toggle plan mode
app.history.search Ctrl+R Search prompt history
app.tools.expand Ctrl+O Toggle tool-output expansion
app.thinking.toggle Ctrl+T Toggle thinking-block visibility
app.thinking.cycle Shift+Tab Cycle thinking level
app.editor.external Ctrl+G Edit the draft in $VISUAL / $EDITOR
app.message.followUp Ctrl+Enter Queue a follow-up message
app.message.dequeue Alt+Up Dequeue a queued message back into the editor
app.clipboard.copyLine Alt+Shift+L Copy the current line
app.clipboard.copyPrompt Alt+Shift+C Copy the whole prompt
app.stt.toggle Alt+H Toggle speech-to-text recording

Older unqualified action names are migrated when keybindings.json is loaded, but new docs and new configs should use the namespaced action IDs above.