Keyboard Operation

The default editor ships a complete scheme for working without a mouse, built on the @ftyyy/mouseless library. This page covers its model (why it is "hold a combination, then use the arrow keys" rather than one shortcut per function), every combination, and the hint mechanism. All of it comes with DefaultEditorComponent and needs no configuration.

Why this model

A structured editor faces an unavoidable tension: there are too many things to operate. Every node carries eight buttons, the sidebar has four, the concept panel holds dozens of concepts, the parameter panel however many parameters. Assigning a shortcut to each function exhausts the keyboard quickly, and nobody would remember the result.

The approach here is to cut the interface into several "spaces", each being a group of interface elements plus the combination that enters it. Hold that combination and you are in the space: the arrow keys stop acting on text and move a selection box within the space instead, Enter activates whatever is selected, and releasing the combination returns you to ordinary typing.

What has to be remembered, then, is only which combination belongs to which part of the interface, six in all; movement within a part is always the arrow keys. This matters for customization too: a button you append to the sidebar or to a node needs no shortcut assigned to it, since it joins the sequence of its space and the same arrow keys reach it.

Every combination

The table below is the complete list. The first five rows are spaces, entered by holding the combination and then using the arrow keys and Enter; the last three take effect directly.

KeysScopeWhat the arrows do
Alt+QThe buttons on the current nodeLeft and right move between buttons of one node, up and down move between nesting levels (up to the parent node, down into a child)
Alt+EThe sidebarUp and down traverse the sidebar buttons, including any you added
Alt+XThe Insert Concept panelLeft and right move between concepts, up and down move to the visually nearest concept in the adjacent row; period and slash jump to the previous or next concept kind
Alt+ZThe Edit Parameters panelMove between parameters; Enter puts the focus into that parameter's input
Alt+SThe abstract node chips on a nodeMove between chips; Enter opens the corresponding abstract editor
Alt+WThe small input beside a nodePuts the focus straight into a UniversalExtra input
Ctrl+SGlobalFires onSave, that is, your own saving logic
Ctrl+DThe abstract editorCloses the open abstract editing window

The browser default is suppressed for all of these, so Ctrl+S does not open a "save page" dialog.

The selection box on the concept panel while Alt+X is held
The Insert Concept panel while Alt+X is held: the currently selected Definition carries a filled background, the arrow keys move it between concepts, and Enter inserts that concept at the cursor. No mouse is involved at any point, not even to open the panel.

Key hints

Not remembering the combinations is normal, so the interface hints at them, and does so by default. Hold Alt by itself for a moment, pressing nothing else, and small labels appear across the interface giving the combination for each part along with the arrow keys it accepts. Release and they go away.

Key hints appearing while Alt is held
What holding Alt looks like. Beside the node's button group is alt + q + ( โ† โ†’ โŽ ), meaning that after Alt+Q the left and right arrows move and Enter activates; the abstract node row reads alt + s and the small input on the right alt + w. Each hint gives both the combination and the keys it accepts.

The fourth sidebar button is the master switch for all of this. Turn it off once the keys are familiar and holding Alt produces no hints. The switch is itself an ordinary component (ShowHintControlButton), so if you are building your own interface you can put it elsewhere.

How this relates to typing

Spatial navigation only takes over the arrow keys while the combination is held. Release it and the arrows, Enter and Backspace all return to ordinary text editing with the cursor still where it was. It is a temporary state layered over text editing, not a mode you have to leave.

Try this sequence without touching the mouse: put the cursor in the text, hold Alt+X, select Theorem and press Enter to insert it; release and type the content; hold Alt+Z, move to the category parameter, press Enter and change it to Lemma; release and carry on writing.