Skip to main content

Week 7: One path for every hand

Unifying mouse, touch and keyboard isn't an accessibility add-on — it's what a correctly-built instrument does anyway

5 April 2027

The tempting way to add a second input device is a branch: if (isTouch) { ...touch logic... } else { ...mouse logic... }. It works, briefly, and then every feature added afterwards — the constraint from week 4, the decay from week 5 — has to be built twice and kept in sync twice. The alternative is one internal event, produced identically by every input source, that the rest of the instrument never has to know the origin of. Once that unification exists, a keyboard user and a touchscreen user aren’t a special case you remembered to handle; they’re just two more ways of producing the one thing the instrument actually listens for.

This is also the week accessibility stops being a separate checklist. An instrument built around one shared internal event, rather than one device’s raw API, tends to already work for a keyboard-only user, because the keyboard was never a bolted-on afterthought to begin with.

It also cashes the promise week 3 made and left open: once every device funnels into the same event, some expressive qualities don’t need an event at all. A live voice count, how long a shared map has sat non-empty, what’s actually in it — state every input path already writes to, readable directly, with no per-device reasoning left to do.

Outline

Teaching team