| V | Cursor mode — leave any tool mode (brush, line, text) |
| B | Brush mode: drag to paint freehand strokes · 1–9 pre-set the next stroke's colour (the pencil cursor tints to match) |
| L | Line mode: click (or drag) from start to end — stays armed so you can chain more lines · L or Escape to exit |
| T | Text mode: a single click places a text label (auto-edits) and exits the mode · T or Escape to exit without placing |
| ⌥/Alt or Shift + 1–4 with nothing selected | Set this file's default shape — what double-click creates: 1 rectangle · 2 circle · 3 triangle · 4 hexagon (saved with the map as defaultshape; hexagons snap edge-to-edge and never overlap · ogof --hexagon seeds it from the CLI) |
| Double-click empty canvas | Add a new node of the file's default shape at the cursor (auto-edits the label) |
| T then click | Place a free-floating text label |
| L then click, click | Draw a line |
| B then drag | Paint a freehand stroke |
| ⌘/Ctrl + V an image · drop an image file | Place the image on the canvas (scaled down on insert; unavailable in shared snapshot views) |
| Drag a blue handle dot into empty space | Spawn a new node at the cursor, already connected |
| P | With nodes selected: turn them into piles, or back into ordinary nodes · with nothing selected: put a new pile in the middle of the view. A pile is a stack you take copies from |
| Drag a pile | Take a copy — same shape, colour, size and label — and drop it; its label is ready to type into · drag the pile's grip to move the pile itself |
| Double-click a node / text | Edit its label inline · Enter commits · Escape cancels |
| 1–9 with anything selected | Recolor nodes, texts, lines, strokes, and the selected edge: 1 default · 2–8 blue, purple, green, yellow, red, orange, gray · 9 black (nodes invert to white-on-black; text: bold black) |
| + / - with anything selected | Step palette colour by ±1 (wraps 1↔9) |
| ⌥/Alt + 1–4 with nodes selected | Set the shape of every selected node: 1 rectangle · 2 circle · 3 triangle · 4 hexagon — non-rectangles are fixed-size (E-resize refuses them; becoming one drops a pinned size) |
| Shift + 1–9 with nodes or texts selected | Font size: 1 default (14px) → 9 largest (56px) · Shift + +/- steps it |
| Shift + 1–3 with lines selected | Line render style: 1 straight (default) · 2 smooth bezier · 3 orthogonal (right-angle elbows) |
| E with one node selected | Toggle resize mode — drag the orange corner grips · Shift + E resets to auto-size · E or Escape to finish (circles, triangles and hexagons are fixed-size) |
| Drag a selected image's corner grip | Resize the image |
| A with one node selected | Toggle anchor — the map centers on this node on load (one anchor per map) |
| 2+ nodes / texts selected | Floating toolbar above the selection: align items on a horizontal or vertical centre line — if the result would overlap, items are spread along the line with a 20px gap |
| Drag an item's body | Move it (and any other selected items together) |
| ⌥-drag (Alt-drag) | Duplicate the selection (nodes, texts, lines, edges) and drag the copies · press ⌥ partway through a drag instead and a copy stays where the drag began |
| Hold Shift while dragging | Snap to the 20px background grid (nodes, texts, line bodies, line endpoints) |
| Shift-drag a hexagon | Grab and move its whole snapped-together cluster as one (drop settles everything back onto the lattice) |
| Drag a line endpoint dot (when selected) | Resize / re-aim the line |
| Double-click a line | Add a control point — the line runs through every added point · drag the green dots to reshape · double-click a green dot to remove it (works inside L-mode too) |
| Delete / Backspace | Remove the selection (nodes take their submap subtrees along) |
| Drag a blue dot to another node | Create a connection — release anywhere near the node once its handles show; the green handle is the one that will receive the edge (nearest to the cursor) |
| Drag a blue dot onto an existing connected handle | Re-route the existing connection |
| Drag a blue dot into empty space | Spawn a new node at the cursor and connect to it |
| Click an edge | Select it (turns blue + thicker) · Delete removes it |
| Double-click an edge (or its label) | Label the connection — "depends on", "triggers". Enter commits, Esc reverts, an empty label removes it |
| (creating a new edge) | Replaces any prior edge between the same pair (undirected) |
| Mouse wheel | Pan — each notch moves exactly one background grid block |
| Two-finger trackpad swipe · right-click + drag | Pan freely |
| Trackpad pinch / ⌘+scroll / Ctrl+scroll | Zoom in / out (anchored to the cursor; clamps 50% – 800%) |
| − / + buttons (bottom left) | Zoom out / in around the window centre |
| ⚙ button (bottom left, beside the zoom) | Map settings: default shape, theme, background grid on/off and default font, saved with the map |
| ⌨ button (bottom left) | Opens this page |
| ⌘/Ctrl + 0 · double-click the zoom percentage | Reset zoom to 100% and recenter on the anchor node |
| Resize the window | Auto-recenters the current map |