A Caves of Qud mod that adds screen reader support, making the game playable for blind and low-vision players. Works with NVDA and SAPI (Windows built-in) text-to-speech.
The mod automatically vocalizes screen content as you navigate:
- Menus — Main menu, options, keybinds, help, saves, character sheet tabs, abilities, equipment, inventory
- Character creation — All stages (race, class, attributes, mutations, summary) with choices, descriptions, and attribute values
- Popups and dialogs — Title and message announced immediately, interrupting other speech
- Trade and containers — Screen title, column switching, quantity changes, trade summary
- Books and terminals — Page content and options
- Game summary — Death/ending screen with full summary
| Key | Function |
|---|---|
| F2 | Re-read current screen content |
| F3 / F4 | Navigate forward/backward through content blocks |
| PgUp / PgDn | Cycle through nearby objects in current category |
| Ctrl+PgUp / Ctrl+PgDn | Switch scanner category (Creatures, Items, Corpses, Features) |
| Home | Re-announce current scanned object with updated direction |
On the map screen, F3/F4 cycles through:
- Stats — HP, AV, DV, and other combat stats
- Condition — Food, temperature, active effects
- Location — Current zone and time
- Messages — Last 5 message log entries
- Abilities — Ready/cooldown status of activated abilities
Other screens provide their own context-specific blocks (trade summary, help text, terminal options, etc.).
Moving the cursor automatically announces what's under it — object name, color, and coordinates. Empty tiles are announced as well. F2 on an object reads its full tooltip and description.
From the map screen, scan for objects around you without entering look mode:
- Ctrl+PgUp/PgDn to pick a category and see how many were found
- PgUp/PgDn to cycle through them — announces name, distance, and compass direction (e.g., "fire beetle, 3 northeast")
- Download or clone this repository
- Copy the contents of
src/to your Caves of Qud mods folder:The folder should contain all%USERPROFILE%\AppData\LocalLow\Freehold Games\CavesOfQud\Mods\QudAccessibility\.csfiles andmanifest.json. - Launch the game — new mods are enabled by default
- Verify in the build log (
%USERPROFILE%\AppData\LocalLow\Freehold Games\CavesOfQud\build_log.txt) that you see "Applying Harmony patches... Success"
- Caves of Qud (Steam or GOG)
- Windows (required for NVDA/SAPI TTS)
- NVDA screen reader (recommended) or Windows built-in SAPI voices
The mod uses Harmony patches to hook into the game's UI framework. Postfix patches announce content after the game renders it; prefix patches announce before showing (used for popups). All text is stripped of the game's {{color|markup}} and sanitized of decorative Unicode before being sent to TTS.
dotnet build Mods.csproj
This validates the source against game assemblies but produces a DLL that is not deployed. The game compiles .cs files at runtime via Roslyn.
| File | Purpose |
|---|---|
Speech.cs |
TTS wrapper — Say(), Interrupt(), SayIfNew() with priority and deduplication |
ScreenReader.cs |
F2 re-read, F3/F4 block navigation, look mode, nearby object scanner |
ScrollerPatches.cs |
Menu/list vocalization — extracts labels from any scroller element |
ChargenPatches.cs |
Character creation screen and choice announcements |
TradePatches.cs |
Trade/container screen vocalization and summary blocks |
PopupPatches.cs |
Popup and dialog announcements |
src/— All mod source files (deployed to the game)decompiled/— ~5400 decompiled game files for reference/IntelliSense (gitignored)
This project is provided as-is for the Caves of Qud community.