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.
| 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.
Escape in one of the inspector’s number fields puts the design back the way it was before you started typing in that field. However many keystrokes the edit took, it is one undo step.
Delete, Backspace and Escape also leave the canvas alone while focus is on a button or in a menu, or while a dialog is open. Backspace in a dialog doesn’t delete the selection behind it, and the Escape that closes a dialog doesn’t also clear your selection.
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.