Open source · MIT · two libraries, one interface

Driving a reading surface without a mouse

A person using a switch, a gaze tracker, or an EMG channel cannot click a word. Below, the access layer turns their signal into dwell targets on the reading surface — rest on a word and the reading starts from there. Neither library knows about the other's internals.

How the two layers compose

signal (switch / gaze / EMG / keys)
    ↓ FOCUS · SELECT · CANCEL
access-input — dwell engine, scan timing, debounce
    ↓ activation(tokenIndex)
read-along — karaoke highlight, speech, word-level seek
    ↓ activeToken
feedback — the reading position itself

Input

activations 0 · dwell 600ms read-along: idle

Rest the pointer on a word until the amber fill completes — the reading starts from that word.

Reading surface — the actual component

Reading, for people who need the words to keep up

Reading while listening helps because the eye and the ear reinforce each other. The words stay visible while the voice moves through them. For a reader who needs support, that pairing is not a convenience — it is the difference between finishing the page and giving up on it. The technique is well studied and the finding is consistent: comprehension improves most when the highlighting follows the voice word by word.

What has been missing is a way to reach it without a mouse. Rest on a word and the reading begins there.

Event log