Configure and troubleshoot shortcuts¶
Applies to Proqi 0.14.0.
Proqi receives logical key events only after macOS or Linux, a keyboard remapper, the terminal host, and any terminal multiplexer have handled them. The label printed on a key does not prove which event reached Proqi.
Understand Primary and Control¶
Primary means logical Cmd, reported as Super or Meta, on macOS. It means
logical Ctrl on portable platforms. Raw Control is not a second spelling of
Primary on macOS.
The most important effective factory differences are:
| Action | macOS | Portable platforms |
|---|---|---|
| Undo | Ctrl+Z; retained Primary+Z; Board u |
Primary+Z; Board u |
| Redo | Ctrl+Shift+Z or Ctrl+Y; retained Primary aliases |
Primary+Shift+Z or Primary+Y |
| Deliver and remove | Ctrl+Enter; retained Primary+Enter; Board s |
Primary+Enter; Board s |
| Deliver and keep | Ctrl+Shift+Enter; retained Primary+Shift+Enter; Board Shift+S |
Primary+Shift+Enter; Board Shift+S |
| Reorder | Option+Shift plus vertical direction; retained Primary forms |
Primary+Shift plus vertical direction |
| Paste and clean up | Primary+Shift+V; Board Shift+P |
Primary+Shift+V; Board Shift+P |
| Toggle optional footer chrome | Board h |
Board h |
Help and footer labels prefer terminal-safe macOS Control aliases where appropriate. The complete factory map remains in the README controls.
Remap one action¶
Use keymap schema 1 in the platform-native config.toml:
[keymap]
schema_version = 1
[keymap.bindings.board]
"submission.submit_remove" = [
{ key = "Enter", modifiers = ["Primary"] },
{ key = "s" },
{ key = "F5" },
]
"submission.submit_keep" = []
"thought.delete" = [{ key = "Delete" }, { key = "d" }]
"footer.toggle" = [{ key = "F6" }]
[keymap.macos.edit]
"submission.submit_remove" = [{ key = "Enter", modifiers = ["Super", "Alt"] }]
[keymap.portable.edit]
"submission.submit_remove" = [{ key = "F5" }]
A supplied context and action list replaces every factory alias for that pair. It does not append. An empty list disables keyboard access where doing so is safe. Omitted pairs keep their defaults. Platform-specific lists replace the common list for the same pair.
footer.toggle is a Board action. Its Board binding also applies while the
Board insertion boundary is focused. Supply an explicit
[keymap.bindings.insertion_boundary] binding only when that boundary needs a
different key.
Proqi validates both platform graphs before terminal setup. Unknown actions,
collisions, printable bindings that would steal text, loss of invariant
Escape, and removal of required recovery routes are errors. Proqi never
rewrites the configuration automatically.
Use the versioned shortcut contract for the full schema and the keymap action inventory for stable action and context identifiers.
See what Proqi actually receives¶
Run the bounded keypress diagnostic in the same terminal path and context where the shortcut should work:
proqi diagnostics keypress --context board,edit --timeout-ms 5000
proqi --json diagnostics keypress --context board --defaults
The diagnostic reports one logical key, its exact modifiers, the selected
context stack, and the resolved action. Escape cancels. --defaults bypasses
user configuration, which is useful when normal startup rejects an invalid
file.
A timeout means no key event reached the diagnostic. Proqi cannot determine whether the operating system, a remapper, the terminal, Herdr, or another layer consumed it. The diagnostic records no paste payload, thought content, session content, or raw terminal response, and it restores terminal state on every exit path.
Ghostty on macOS¶
Inspect the defaults of the installed Ghostty version:
Ghostty can consume Cmd+Enter for fullscreen and Cmd+Shift+Enter for split
zoom before Proqi sees them. It can also rewrite Command plus horizontal arrows
to raw Control events. Add only the overrides you want Ghostty to forward:
keybind = super+enter=unbind
keybind = super+shift+enter=unbind
keybind = super+arrow_left=unbind
keybind = super+arrow_right=unbind
keybind = super+shift+v=csi:118;10u
The final line emits logical Super plus Shift plus v for Paste and clean
up. It is a verified example for the tested Ghostty and Crossterm path, not a
promise for every layout, remapper, or terminal version. Proqi never edits
Ghostty, keyboard, shell, or operating-system configuration.
Bracketed paste performed by the host always uses exact paste. Spacing cleanup requires the distinct cleanup action after a suitable logical key reaches Proqi.