namespace RemSound.App; /// /// Abstraction over a screen-reader speech backend, so RemSound can speak text straight to whatever /// screen reader is running (NVDA, JAWS, SAPI, ...). Needed for feedback the screen reader can't /// otherwise observe — most importantly a GLOBAL hotkey firing while RemSound isn't focused, where /// NVDA reads nothing on its own. /// /// Kept as an interface purely so the concrete backend can be swapped later without touching callers. /// Today the only implementation is , which works on every /// Windows version RemSound supports (including Windows 7). Prism (evaluated 2026-06-19) is the more /// modern option but hard-requires Windows 10+, so it can't replace Tolk while Win7 is supported — if /// that changes, add a PrismScreenReaderOutput and pick it per-OS in . /// internal interface IScreenReaderOutput { /// Speak through the active screen reader. /// true cuts off whatever it's currently saying. Returns true if the text was handed to a screen /// reader, false if none is available. Best-effort — never throws. bool Speak(string text, bool interrupt = true); /// Release the backend. Safe to call more than once. void Shutdown(); }