Keyboard shortcuts
Press ? anywhere in the app for the same list, generated from the same catalogue.
⌘ on macOS, Ctrl everywhere else. The app detects this and prints whichever
applies to your machine.
These work in the Draw tab.
| Key | Does |
|---|---|
| V | Select. Click, marquee, drag nodes and bezier handles. |
| P | Draw. Click to lay down channel segments. |
| D | Dimension. Click a channel to pin its width there. Widths interpolate between markers. |
Editing
Section titled “Editing”| Key | Does |
|---|---|
| ⌘Z / Ctrl+Z | Undo. |
| ⇧⌘Z / Ctrl+Shift+Z | Redo. |
| ⌘C / Ctrl+C | Copy the selected sub-path. |
| ⌘V / Ctrl+V | Paste. Successive pastes cascade instead of stacking. |
| ⌘D / Ctrl+D | Duplicate in place. |
| ⌘A / Ctrl+A | Select everything. |
| Delete or Backspace | Remove the selection. |
| B | Straight ↔ curved. Handles are kept, so toggling back restores the curve. |
| ⌘-click a segment | Insert a node. Splits the segment cleanly and keeps its dimension markers. |
| Escape | End the draw run, or clear the selection. |
| Enter | End the draw run without leaving the tool. |
Backspace deletes as well as Delete, which matters on a laptop keyboard with no dedicated Delete key. The in-app help sheet lists only Delete.
| Key | Does |
|---|---|
| G | Show or hide the grid. |
| T | Show or hide the width preview. |
| Alt-drag, or middle-drag | Pan. |
| Scroll | Zoom at the cursor. |
Project
Section titled “Project”These work from any tab.
| Key | Does |
|---|---|
| ⌘S / Ctrl+S | Save. |
| ⇧⌘S / Ctrl+Shift+S | Save as… |
| ⌘O / Ctrl+O | Open a project. |
| ⇧⌘E / Ctrl+Shift+E | Export for presentation. |
| ? | This list, in the app. |
What happens while you are typing
Section titled “What happens while you are typing”Single-letter shortcuts are suppressed while focus is in a text field, a number
field or a select, so typing 0.8 into a width box does not switch you to the
draw tool.
⌘Z is the one exception: it undoes the design even from inside a field. It is the shortcut people expect to work everywhere, and a field’s own undo history is almost never what someone means when they press it mid-edit.
Where these are implemented
Section titled “Where these are implemented”Worth knowing if you are reading the source, because they are deliberately split across three places:
| Keys | Live in |
|---|---|
| Tools, editing, view | src/hooks/useDrawShortcuts.ts |
| Delete, Backspace, Escape, Enter | src/components/draw/DrawCanvas.tsx |
| Save, open, export, ? | src/hooks/useKeyboardShortcuts.ts |
The canvas keys stay in the canvas because they act on the in-progress draw
session, which is the canvas’s own state. The descriptions are centralised in
src/lib/shortcuts.ts so a shortcut cannot be added to a handler and forgotten
in the help sheet.