DunneNote documentation
DocsDunneNoteWorking in DunneNote

The keyboard model

Shipped

One navigation scheme across six canvas kinds — regions, objects, and edit mode.

Every surface in DunneNote is reachable from the keyboard. More usefully, the same scheme reaches all of them, so learning to move around a spreadsheet teaches you how to move around a sketch.

Three layers

Regions. The window is divided into a small number of regions — the notebook area, the page, the toolbars. Tab moves between regions. There are only a few, so Tab always gets you somewhere quickly.

Objects. Within the page, each canvas is an object. The arrow keys move the selection from one canvas to the next. A selected canvas is visibly selected, and the toolbar updates to show what applies to it.

Edit. Enter enters the selected canvas. Now the keys mean what they mean inside that kind of content: cells in a grid, text in prose, events in a calendar, crop handles in a picture, strokes in a sketch. Escape leaves.

That third layer is the only part that differs between canvas kinds. The first two are identical everywhere.

Why Escape and not Tab

Inside a Rich Text canvas, Tab indents the current list item — the behaviour every outliner has. Inside a grid, Tab would be ambiguous between “next cell” and “leave”. So Tab is not the way out of anything. Escape is the universal exit, at every layer, without exception.

Single tab stops

Controls inside a canvas — the per-row buttons in a grid, for instance — are kept out of the Tab order deliberately. A grid with two hundred rows would otherwise contribute hundreds of tab stops and make Tab useless for getting past the canvas. A canvas is one stop. Movement inside it belongs to the arrow keys.

Toolbars

Toolbars follow the ARIA authoring practices: Left and Right move between controls and wrap around at the ends. This is a one-dimensional ring, not a two-dimensional grid — pressing Right at the end of a row returns you to the beginning of the same row rather than dropping to the next one.

Down descends into the next layer of the toolbar, following the convention desktop office suites established. F10 enters the toolbar from the document. Escape leaves it, consistent with everywhere else.

Focus is visible

Keyboard focus is always drawn. This needed explicit work rather than coming for free: the platform web view omits the :focus-visible state when focus is moved programmatically, so a plain :focus fallback is present to make sure a programmatically focused control still shows a ring.