# Customize GUI keyboard shortcuts

## Record a shortcut

1. Open Settings → Keyboard.
2. Click the shortcut beside an action.
3. Press Cmd, Ctrl, or Alt with a key; add Shift if needed.
4. Wait for Saved. Backspace disables the binding; Escape cancels capture.

The app temporarily pauses menu shortcuts during capture. Duplicate bindings are rejected. Cmd+C/V/X/Z/A/Q remain reserved for editing and quitting; Ctrl+B and Ctrl+C remain available to the shell.

| Action | Default |
| --- | --- |
| New tab | Cmd+T |
| New window | Cmd+N |
| New workspace | Cmd+Shift+N |
| Settings | Cmd+, |
| Commands | Cmd+Shift+P |
| Split right | Cmd+Alt+Right |
| Split down | Cmd+Alt+Down |
| Keyboard shortcuts | Cmd+Shift+/ |

## Edit bindings in JSONC

Open Configuration JSON or run `qh config`. The `shortcuts` object uses action names `new-tab`, `new-window`, `new-workspace`, `settings`, `commands`, `split-right`, `split-down`, and `help`. Values use modifier names Cmd, Ctrl, Alt, Shift and keys such as T, comma, slash, Right, Down, Enter, Space, or F1–F12. Use an empty string to disable a shortcut.

```jsonc
{
  "shortcuts": {
    "new-tab": "Cmd+Shift+T",
    "commands": ""
  }
}
```

Run `qh config validate` after editor changes. Valid edits update the native menu automatically. GUI shortcuts are separate from terminal prefix commands.

## Terminal controls

Press Ctrl+B, release it, then c for a tab, n/p to switch tabs, % or double quote to split, arrows to focus a pane, Shift+arrows to resize, r to rename, x to close a pane, Page Up/Down to scroll, y to copy a selection, or Enter to restart an exited shell. Ctrl+B then ? opens terminal help; double Ctrl+B sends the literal key. Ordinary Ctrl+C reaches the focused shell.

[Configuration reference](/docs/qesh/configuration) · [CLI guide](/docs/qesh/cli)
