blog · 20 August 2026
Building circuits by keyboard: the editor without a pointer
A tour of the accessible canvas: reading a circuit through a screen reader, wiring with two Enter presses, nudging parts hole by hole, and the announcements that narrate your build.
Since June the circuit canvas has a second interface: a structured, spoken one. It exists for screen-reader users first, and like most accessibility work it turns out to be useful far beyond its first audience, because "the circuit, as a readable list" is also a debugging view, a teaching aid, and the fastest way to audit what is actually connected. Today's post is a tour, and it works the same whether or not a screen reader is running.
Reading a circuit you cannot see
Tab into the editor and the canvas presents itself as a region that opens with a summary: the circuit's name, how many components, wires, and nets it has, and whether the simulation is running. From there, arrow keys walk the component list. Each part announces its name or label; step onto its pins and each one announces the net it belongs to, and, if it sits in a breadboard, its hole address: "anode on Node 1, at column 12, row A".
That address line deserves a pause. The entire pedagogy of a breadboard is spatial ("put the resistor's leg in the same column as the LED's anode"), and hole addresses make that spatial fact audible. A student who cannot see the board can answer the same question the lesson asks everyone else: are these two legs in the same column or not.
Focusing any entry selects it on the visible canvas and pans it into view, so a sighted teacher and a screen-reader student are always literally looking at the same part. Escape leaves the list; there is no trap.
Building
Placement: add a part from the palette, then hold Shift and tap arrow keys to nudge it one breadboard hole per press, with each new address announced. Precise placement, no pointer.
Wiring: navigate to the source pin and press Enter to start a wire, then to the target pin and Enter again to complete it. Escape cancels a draft. If a connection is refused (already connected, hole occupied), the refusal is spoken with a reason, and an occupied-hole message suggests the nearest free hole. Enter on a switch toggles it and announces the new state; on other parts it reads voltages aloud on request.
The editor also narrates events you did not ask about but need to know: parts added or deleted, and simulation failures in the engine's own words ("LED current exceeded 20 mA"), announced with appropriate urgency. Loading a whole starter circuit stays quiet rather than reading you a parts inventory.
A keyboard-only build, start to finish
The LED circuit one more time, handsfree: place the breadboard, PSU, resistor, and LED from the palette. Shift-arrow the resistor until its legs land where you want them; do the same for the LED, listening for the column numbers to match. Enter on the PSU's positive pin, arrows to the resistor's free leg, Enter. Repeat for the ground return. Run the simulation with the toolbar (reachable by Tab), then arrow through the nets and hear the LED's node voltage. Every step of the first post in this series, no mouse involved.
The honest boundary list
Not everything is covered yet, and pretending otherwise would help nobody. Mouse-only for now: dragging the potentiometer's knob (its paired slider is the keyboard path), bending component leads, and editing wire waypoints. The Module Creator's canvas is excluded. Voltage narration is on-request rather than continuous. And a policy note we hold ourselves to: this post describes features, not a conformance level; formal accessibility verification is its own work, done with real assistive-technology users, and claims about it belong to that process, not to a changelog.
If you use a screen reader with de:volt, your experience report is worth more than most feature requests, truly. Help → feedback reaches us. The keyboard reference lives with the rest at docs.devoltapp.com/user/getting-started, and tomorrow this series closes its third week with logic gates: a 74LS00, four switches, and a truth table you can poke.