Screen reader support overview

Lights Off routes all spoken output through the platform's assistive technology stack. The mechanism is different on each OS:

Platform Library Backends supported
Windows Tolk (LGPLv3, Davy Kager) NVDA, JAWS, SAPI 5
macOS accessible_output2 VoiceOver (via AppKit speech)
Linux Python logging (stub) None yet — see Linux

The speak(text, interrupt=False) function in lights_off/speak.py is the single call site for all speech output. When interrupt=True the current utterance is cut off and the new text begins immediately — used for rapid navigation.

Choosing a screen reader on Windows

Lights Off prefers SAPI over NVDA/JAWS by default (set via Tolk.prefer_sapi(True)). This means you hear speech through whatever SAPI voice is configured in Windows, even if NVDA or JAWS is also running. If you prefer NVDA or JAWS output, see Windows screen reader settings.

Platform-specific pages