Skip to content

Canvas and Selection

Claxon edited this page Sep 29, 2026 · 1 revision

Canvas and selection

Design modes

The tabs at the top pick which layer of the keyboard is being worked on. They are a view of one board, not four: the layout is the same in every mode, and switching is not an undoable edit.

Keycaps The full editor — everything else on this page
Switches Named, not built yet
Circuits Circuit boards
Firmware Named, not built yet

Every mode but Keycaps freezes the caps: they dim, and keep only the ability to be selected, which is what drawing a board around them needs. The properties panel narrows to what that mode owns. Picking a mode that isn't built yet doesn't stick — a toast says so and the app lands back on the previous mode. The pick is remembered between visits, like the theme and the trackpad/mouse switch.

The canvas

An infinite grid in 0.25‑unit steps; one unit is one standard keycap. Everything snaps, and keys never overlap at rest — a drag follows the cursor over an occupied spot but flashes red and snaps back on release. The grid lines aren't drawn, since a rotated group sits on its own grid.

Alt‑dragging leaves the original in place and trails a ghost of where the copy would land. K centres the new key on the cursor, stepping to the nearest free cell if it's occupied, or on the view's centre for keyboard‑only use.

D drops in the demo keyboard — a UK ISO 100% board, complete: 105 caps, one circuit board carrying them, and its matrix already wired as 6 rows × 22 columns. It's the app's worked example, so it arrives with every layer filled in rather than as bare caps; M's function row is a fragment to bolt onto a board and stays unwired. D works in Keycaps and Circuits alike, and the whole thing is a single undo step.

Selecting

Selection is additive by default: a click adds a key, and a click on one already selected takes it back out. ⇧‑click replaces the selection with that key alone, and a marquee drag works the same way — it grows the selection unless ⇧ is held, which starts it over. Clicking bare canvas clears everything, as does a tap of Space (pressed and released without panning) and Esc.

Dragging follows from what the press did: a key that was already selected drags the whole selection with it, while one the press just added drags alone, taking the selection with it so what's highlighted is what moved.

Hovering a key reveals resize handles in its top‑left and bottom‑right corners; dragging one resizes against the opposite corner. Knobs stay circular.

Selecting a key opens the properties panel: four legends, a Home key checkbox, shape, width and height. Sizes step with arrow buttons rather than being typed, so a key can never land off the grid. With several keys selected, edits apply to all of them and disagreeing fields read “Mixed”.

The toolbar's Reset button clears the board in one undoable step.

Trackpad or mouse

The switch at the bottom right swaps what scroll and middle‑drag do, since a wheel event looks identical whichever device sent it:

Trackpad (default) Mouse
Scroll / two‑finger drag Pan Zoom
⌘ + scroll / two‑finger drag — Pan
Middle‑drag Zoom Pan

Pinch always zooms and right‑drag always pans. On a touchscreen the switch makes no difference: one finger selects or drags, two fingers pan and zoom.

Keyboard and screen readers

Every key carries a button role and a label, so a screen reader announces it by its legends, shape and size. Keys are deliberately not tab stops: focus had to land on exactly one of them, which turned Space into a toggle for that key instead of the clear‑everything it is everywhere else — and a hundred‑odd tab stops between the toolbar and the sidebar is its own problem. Selecting is pointer‑driven; the arrow keys, ⌫ and the properties panel then act on whatever is selected.

Clone this wiki locally