Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Harkest Dungeon is a screen reader and keyboard/controller accessibility mod for Darkest Dungeon II. It adds spoken output, focus navigation, contextual information buffers, gameplay event announcements, an audio layer for the road, and rebindable mod keybindings.

Features

  • Speech output through Prism, with support for common screen readers and speech backends.
  • Keyboard and controller navigation for menus, the Crossroads, the road, inns, combat, loot and stories, the hero sheet, Kingdoms, and the Altar of Hope.
  • Contextual buffers for the focused element, skill upgrades, hero vitals, both sides of a battle, the combat log, and subtitles.
  • Combat and party event announcements: damage, tokens, dots, deaths, quirks, stress, affinity - the game's own pop text, spoken.
  • An audio cue engine for the road: turning cues, edge bumps, and positional pings for roadside pickups.
  • Glance keys that answer questions ("how is the flame doing?") from anywhere without moving your focus.
  • Rebindable mod keybindings for keyboard and controller.
  • The mod speaks whatever language the game is set to, covering all fifteen the game ships.

Installation

The mod requires the Steam version of the game on Windows. It has been verified to work with Gog, but you will need to point the installer to your game folder

Installer

The recommended install path is the installer. Download HarkestDungeonInstaller.exe from the latest releases page and run it. It finds your Steam install on its own (registry plus Steam's library folders), downloads the newest release, verifies it, and installs it over the game folder while backing up anything it replaces. It can later update, repair, or uninstall the mod, restoring the folder exactly as it found it.

The default Steam path on Windows is:

C:\Program Files (x86)\Steam\steamapps\common\Darkest Dungeon® II

Yes, the folder name genuinely contains a registered-trademark sign. You do not need to type it; the installer deals with the lawyers' handiwork for you.

After installation, launch Darkest Dungeon II through Steam. If installation worked, the mod initializes during boot and begins speaking once the menu is up.

Manual Installation

  1. Download the latest HarkestDungeon-vX.Y.Z.zip release.
  2. Extract the zip into your Darkest Dungeon II game folder (the folder containing Darkest Dungeon II.exe), replacing files when prompted.
  3. After extraction, the game folder should contain winhttp.dll, doorstop_config.ini, and a BepInEx folder with the mod under BepInEx\plugins\HarkestDungeon.
  4. Launch the game through Steam.

Updating

At launch the mod checks the releases page and announces when a newer version exists ("update 0.4.0 available"). Up to date, or offline, it says nothing. To update, run the installer again and choose update, or extract the latest zip over the game folder.

Uninstalling

The installer has an uninstall option that restores the game folder from its install records. To remove the mod manually, delete the following from the game folder:

  • winhttp.dll
  • doorstop_config.ini
  • the BepInEx folder (or just BepInEx\plugins\HarkestDungeon, if you use BepInEx for other mods)

Getting Started

After installing the mod, launch Darkest Dungeon II through Steam. The boot takes a little while; once the main menu is up, the mod announces it and starts reading focus.

Basic Navigation

Use the arrow keys or the D-pad to move through screens the mod reads. Enter or the controller's A button activates the focused item. Escape or B backs out. Tab and Shift+Tab (the shoulders on a pad) jump between panels on screens that have several, and Home/End jump to the ends of a list.

On a slider, stepper, or tab bar, Left and Right change the value in place rather than moving focus.

The game's own keys are unchanged. Everything the mod adds sits on top; shortcuts the game itself supports (WASD driving, C for the hero sheet, M, I, and so on) still work, and on screens the mod captures it forwards those advertised hotkeys to the game's own buttons for you.

Buffers

Focus announcements are deliberately terse - a name, a role, a value. Everything longer that a control carries (tooltips, stat blocks, skill text) goes into review buffers you read on demand with Ctrl plus the arrow keys, or the right stick on a pad. See Buffers.

Mod Settings

The mod adds four tabs to the game's own Settings screen, right after the game's tabs:

  • Mod settings - the announcement separator, the road pickup sensing range, and auto collect.
  • Mod announcements - toggles for optional announcements (currently, corpse deaths in combat).
  • Mod sounds - master volume for the mod's own audio cues plus a per-cue offset, and a glossary that plays each cue so you can learn what they mean before the road teaches you the hard way.
  • Mod keys - every mod keybinding, keyboard and controller alike. See Controls.

Languages

The mod speaks the language the game is set to. Switching the language in the game's settings switches the mod's speech immediately, and the choice carries across relaunches. Game text is read from the game itself, already localized; the mod's own words come from lang/<code>.txt files in the plugin folder - edit one to adjust a translation, and missing entries fall back to English.

Controls

This page lists the mod's own controls and the Darkest Dungeon II game controls worth knowing.

Every mod key can be rebound from the game's Settings screen, Mod keys tab, keyboard and controller alike. A binding can hold several chords at once, and pad chords capture on release, so holding a trigger makes it the chord's modifier. Controller names below are what the mod itself speaks in the rebind rows (Xbox-style; A is the south button, Select is the small left-center button some pads label View or Back).

ActionDefault keyboardDefault controllerFunction
Navigate upUp ArrowDpadUpMove focus up
Navigate downDown ArrowDpadDownMove focus down
Navigate leftLeft ArrowDpadLeftMove focus left; adjust a slider or tab
Navigate rightRight ArrowDpadRightMove focus right; adjust a slider or tab
Next panelTabRightShoulderJump to the next panel
Previous panelShift+TabLeftShoulderJump to the previous panel
ActivateEnter, Numpad EnterAActivate the focused item
BackEscapeBBack out, close, or open the pause menu
Jump to firstHomeLeftTrigger+LeftShoulderFirst item of the list
Jump to lastEndRightTrigger+RightShoulderLast item of the list

Buffers

ActionDefault keyboardDefault controllerFunction
Next bufferCtrl+RightRightStickRightSwitch to the next available buffer
Previous bufferCtrl+LeftRightStickLeftSwitch to the previous available buffer
Next lineCtrl+UpRightStickUpNext line in the current buffer
Previous lineCtrl+DownRightStickDownPrevious line in the current buffer

Items And Heroes

ActionDefault keyboardDefault controllerFunction
Grab / placeSpaceLeftTrigger+AGrab the focused hero or item stack; press again on a destination to place it
Place oneShift+SpaceUnboundPlace a single item off a grabbed stack
DiscardShift+EnterRightTrigger+ADiscard the focused item, or sell it with a seller open (the game's shift-click)
Hero sheetCUnboundThe focused element's inspect action, or the screen's hero sheet
Map hotkeyMUnboundPress the screen's advertised Map button; the minimap on road item screens
Inventory hotkeyIUnboundPress the screen's advertised Inventory button; the bag toggle on road item screens

Crossroads And Roster

ActionDefault keyboardDefault controllerFunction
RenameRUnboundRename the focused hero (type, Enter to accept)
Reroll nameShift+RUnboundRoll the focused hero a random name
VitrineZUnboundToggle the Infernal Flame Vitrine at the crossroads
First new tutorialNUnboundJump to the first entry still marked New in the tutorial archive

Combat

Glances speak in place; your focus does not move. Enemy slots count from the front line, 1 through 4, and so do yours.

ActionDefault keyboardDefault controllerFunction
Enemy 1-41, 2, 3, 4LeftTrigger + RightStickLeft / Down / Up / RightThat enemy's name and health
Enemy effects 1-4Shift+1 to Shift+4LeftTrigger + X / A / Y / BThat enemy's tokens, buffs, and debuffs
Enemy resists 1-4Ctrl+1 to Ctrl+4RightTrigger + X / A / Y / BThat enemy's resistances
Hero 1-4Q, W, E, RLeftTrigger + LeftStickLeft / Up / Down / RightThat hero's name and health
Hero effects 1-4Shift+Q to Shift+RLeftTrigger + DpadLeft / Up / Down / RightThat hero's tokens, buffs, and debuffs
Hero resists 1-4Ctrl+Q to Ctrl+RRightTrigger + DpadLeft / Up / Down / RightThat hero's resistances
Acting combatantSLeftStickClickWho is acting and how they are doing
Skill targetsTUnboundEveryone the focused skill could hit right now, with previews; on a grey skill, why it is grey
Turn orderShift+TLeftTrigger+LeftStickClickThe turn order
InspectorISelectOpen or close the inspector on the focused combatant
Inspector previous / nextA / DLeftStickLeft / LeftStickRightCycle combatants while the inspector is open
Affinity glanceALeftTrigger+RightStickClickThe focused skill's or target's relationship consequences

Stories

ActionDefault keyboardDefault controllerFunction
Hero vitalsSUnboundThe vitals of the hero the focused story choice concerns

Run Glances

These answer from any screen during a run, and stay silent when there is no run to ask about.

ActionDefault keyboardDefault controllerFunction
FlameFRightTrigger+RightStickClickThe Infernal Flame level
CoachHRightTrigger+LeftStickClickThe stagecoach's armor and wheels
WalletBRightTrigger+SelectRelics, Mastery, Baubles, faction currencies, a kingdom's Materials

Game Controls

These are the game's own defaults, unchanged by the mod, rebindable in the game's settings. On screens the mod captures, the game's keys are swallowed - the mod forwards the ones a screen advertises (C, M, I, Z and friends) through its own bindings above. On shared-keyboard screens (the road), the game's keys stay live alongside the mod's.

Game actionDefault keyboardFunction
PauseEscapePause menu
Skip / interactSpaceSkip cinematics, advance, interact on the road
DriveW / S or Up / DownSpeed up, slow down
SteerA / D or Left / RightSteer the coach
MinimapM or TabThe road map
Goals panelGThe biome goals panel on the road
Show torchAlt (hold)The flame readout on the road
InventoryI or EThe bag
Hero sheetC or QThe character sheet
RelationshipsRThe relationships panel on the road
StagecoachZThe stagecoach sheet (crossroads: the Vitrine, via the mod's Z)
Token glossaryCtrl (hold)The token reference view
More infoXExpanded tooltips where offered
Split stackVSplit an item stack
Take all lootSpace or TGrab everything on a loot screen
Combat skills1 through 0Use that skill slot
Combat actor cycleA / DPrevious or next combatant
InspectorAlt (hold)The game's combatant dossier (the mod's I toggles it instead)

One exception worth knowing: while the road map is open, the arrow keys browse the map and Ctrl belongs to buffer review, so the game's hold-Ctrl token glossary is unavailable there. WASD keeps driving the coach the whole time.

On A Controller

A few recommendations if you are playing with a controller: on the road, the game's own pad layout already covers what the letter keys above reach, so none of it needs rebinding.

FunctionDefault controller
MapD-pad up
Goals panelD-pad left
Token glossaryD-pad down
StagecoachD-pad right
InventoryY (Triangle on PlayStation pads)
Hero sheetSelect (also the touchpad press on PlayStation pads)

The D-pad shortcuts answer while your focus is on the driving area; Tab into a HUD panel and the D-pad browses that panel until you Tab back to the road. Y and Select stay live the whole drive.

Buffers

Buffers are review lists for extra information. Moving focus chooses what information is available; buffer commands let you inspect it without moving focus away. The focus announcement stays short ("Continue, button"), and everything longer the element carries - tooltips, stat blocks, skill text - lands in a buffer, one line per tooltip.

Default Buffer Controls

  • Ctrl+Right: next buffer. Ctrl+Left: previous buffer.
  • Ctrl+Up: next line. Ctrl+Down: previous line.
  • The right stick performs the same actions on controller.

Switching buffers speaks the buffer's name and its current line. Buffers repopulate from the live element on every press, so they never go stale.

The Roster

  • UI: the focused element's own details - its line, then one line per tooltip, then a glossary line for each token glyph the text mentions (the same "name: description" a sighted player gets on mouse-over).
  • Upgrade: the focused skill's mastery preview, under the game's own upgrade header. A skill with nothing left to learn says so once instead of listing nothing.
  • Hero: the vitals of the hero the focused element concerns - whoever's trinket, skill, or chair you are on.
  • Enemies and Party: one overview line per combatant, filled only in combat.
  • Combat: the battle-event log. It follows the latest entry, so Ctrl+Down walks backwards through what just happened.
  • Subtitles: the on-screen subtitle history, kept only while the game's own Subtitles setting is on. Cinematics narrate themselves; this is how you read them.

Only buffers with something to say are available; the review keys skip empty ones, so each screen cycles only the buffers that answer there.

The Crossroads

The Crossroads is the pre-run hub: assemble four questionably stable adventurers, dress them for the apocalypse, and embark.

The Party And The Roster

The screen offers the party slots and the wider roster. Space (or Enter) grabs the focused hero; press it again on a slot to seat them there, or on another hero to swap the two. R renames the focused hero, Shift+R rolls them a random name.

The Hero Sheet

C on a hero opens their sheet: skills to equip and unequip, trinkets, the conditions tab with quirks, hero goals, and memories, and the cosmetics tab with palettes, weapon kits, and skins - locked ones refuse politely and put their unlock hint in the buffer.

The path seals - Wanderer plus the hero's unlocked paths - each read their own path's card in the buffer, so you can compare what you are giving up without previewing the seals one by one and memorizing the differences like some kind of sighted person.

The Stagecoach

The stagecoach button opens the coach configuration: stagecoach items and the livery cycler, which reads as "Stagecoach Livery" with the applied skin's name and speaks the new one after cycling.

The Vitrine

Z (or its button in the actions strip) opens the Infernal Flame Vitrine. It is a trophy case: flame cards and per-boss "N of M flames" tallies. Nothing in it activates; it exists to be admired, which the mod communicates by reading it as the completion tracker it is rather than a wall of dead buttons.

Embarking

Embark walks you through the run setup - the confession, the region, and the offered routes with their mutators, goals, and rewards. Values the game has not revealed yet read as unrevealed rather than pretending to be zero. Once you confirm, you are on the road; see The Road.

The Road

A run is a chain of road legs between stops, and you personally drive the stagecoach down every one of them. Let us be honest about what driving amounts to: the route is chosen from a menu at every fork, fights and stories trigger themselves when you reach them, and the only thing the steering actually accomplishes is running over loot - or letting an obstacle run over you. One could ask whether this needed to be a driving game at all, or whether a Slay-the-Spire-style node map with a tasteful woodcut of a coach would have served. One could ask. The game wants you behind the reins, though, so the mod makes the reins audible.

Driving

The game's own keys drive: W and S (or Up/Down) for speed, A and D (or Left/Right) to steer. The mod adds an audio layer on top:

  • A turning cue while the road bends, ending with a distinct tick when it straightens out.
  • An edge bump when you drift against the road's edge.
  • A positional ping for each roadside pickup within sensing range - the ping sits in the stereo field where the loot sits on the road. Steer into it, or don't; it's mostly baubles and the occasional relic.

If chasing pings is not your idea of a good time, the auto collect setting in mod settings picks up everything you pass regardless of your steering, and the pings stay quiet. This turns driving into what it arguably always was: a loading screen you can steer.

Cue volumes (and a master volume for the lot) live in the mod sounds tab, which also has a glossary that plays each cue by name.

The HUD

While driving, Tab cycles the mod's HUD panels - the party ribbon, the status readouts, and friends - and the arrows browse within one. The road area itself is pass-through: browsing never touches the wheel. Space grabs a ribbon hero to reorder the marching order. If you have a pet on the coach, it appears in the status panel as a button; pressing it pets them. The mod considers this essential functionality.

The game's road keys stay live throughout: G for the goals panel, R for relationships, C for the hero sheet, I for the bag, M or Tab for the map, and the mod's F, H, and B glances answer for the flame, the coach, and the wallet from anywhere. On a controller the game covers the same ground by default: D-pad up for the map, D-pad left for goals, D-pad down for the token glossary, D-pad right for the stagecoach sheet, Y for the bag, and Select for the hero sheet (the D-pad ones answer while your focus is on the road itself; in a HUD panel the D-pad browses the panel).

Forks

At a junction the game raises route banners over the road; the mod reads them as a transient popup inside the driving surface. Arrow keys move between the offered routes - each reads its destination and rewards, and a hero with a preference has their say on the route they favor. Confirm to commit. Since it is a popup and not a separate screen, you can still check the map or your bag while stopped at one, which the game itself always allowed and the mod used to prevent. We got better.

The Map

M (or Tab) opens the road map. The arrows browse it - regions, nodes, and connections - and the usual buffers carry the details of whatever the cursor is on. Two things to know: WASD keeps driving the coach while the map is open (the game is like that; park first if you value your wheels), and Ctrl belongs to buffer review there, so the game's hold-Ctrl token glossary is unavailable until you close the map.

Stories And Loot

Nodes fire their content as you drive through them - no node in the game actually requires stopping, whatever the tension implies. Road stories read the narration, then each choice on its own line with the hero it concerns, what they think of it ("Dismas: agrees"), and the outcome previews; S speaks that hero's vitals before you commit to ruining their day. Loot screens read one element per item with the full tooltip in the buffer.

Inns

The inn is the rest stop between regions: patch the party up, spend what you looted, and set off again. The screen reads top to bottom: the regions-to-Mountain readout, the hero rest strip, the station buttons, and the inventory.

The Rest Strip

One entry per hero: name, HP, and stress, with their status tooltip in the buffer and their fuller vitals in the hero buffer. Enter on a hero runs the game's own interaction - with a rest item selected it applies the item, otherwise it opens the hero's own options.

Rest items produce the game's floating reactions, and the mod speaks them: the grateful bark, the refusal ("someone's quirk objects"), the relationship consequences. A plain successful use has no game text at all - the bars just move - so check the hero's line again if you want numbers.

Replacing The Fallen

If someone died on the road - it happens; the sequel is not gentler than the original - their chair at the inn sits empty, and when replacement candidates are waiting it reads as the game's own "Add hero to party" button. Enter opens the Select Replacement Hero screen: one row per candidate with name and class, plus a Random Hero row for those who prefer fate to make the decision. Enter on a row seats them; the inn re-reads itself with your new colleague in place.

Stations

The station buttons are icon-only in the game; the mod reads their captions from their tooltips. Which stations an inn offers varies - shops, the Mastery trainer, the wainwright, the field hospital, the pit fighter - plus the Travelogue and End Expedition. Each opens its own screen, read by its own reader.

The Inventory

The inventory panel lists the filter tabs (Left/Right switch them), the slot count and wallet readouts, the sort button, one element per carried item with the full tooltip in the buffer, and the free capacity collapsed to one line.

  • Space grabs the focused stack; press it again on the destination - another stack to swap or combine with, or the capacity line for a free slot.
  • Shift+Space places a single item off the grabbed stack, repeatable until it runs out.
  • Shift+Enter discards the focused item, or sells it when a seller is open - the game's shift-click, minus the mouse.

Escape drops an armed grab first; pressed again, it opens the pause menu.

Combat

Combat is the most overhauled surface in the mod. It is worth reading this section in full before your first fight; the Darkest Dungeon franchise does not grade on a curve.

How It All Normally Works

Both sides field up to four combatants in a line of ranks, 1 at the front, 4 at the back. Position is everything: each skill can only be used from certain ranks and can only reach certain ranks, so a hero shoved out of position may find their whole kit greyed out until they move back. Combatants act one at a time in an initiative order that interleaves the two sides.

Instead of quietly stacking numbers, most effects in this game are tokens: block, dodge, strength, blind, and their many friends, each a discrete thing a combatant holds and spends. Damage over time - bleed, blight, burn - ticks on the victim's turns. Heroes additionally accumulate stress; enough of it causes a meltdown, which hurts them and sours their relationships. At zero HP a hero lands on Death's Door, where any further hit kills them unless their deathblow resistance says otherwise. Enemies skip the drama and simply die.

The Layout

When a battle starts, focus lands on the round title. Below it, the battlefield is one row laid out like the screen: your party right-to-left - rank 4 leftmost, rank 1 at the front - then the enemies rank 1 through 4. The two front lines meet in the middle, so the combatant most likely to be hit next is standing next to the first enemy in the list. Below the battlefield sits the acting hero's skill bar.

Duplicate enemies are numbered 1 to N in the order you first meet them, and the numbers stay put through shuffles and compact when someone dies. No guessing which of three Lost Souls just gained a taste for your Vestal.

The round header's buffer carries the flame state and its current effects for both sides.

Skills

Left and Right browse the acting hero's skills. The focus line is terse - name and what makes it immediately relevant - and the full card lives in the UI buffer: rank requirements, targets, effects, token glyphs each explained by a trailing glossary line. The upgrade buffer holds the skill's mastery preview, so you can check what mastering it would change without leaving the fight.

A skill that would move party relationships plays a soft cue when you land on it; press A to hear the affinity consequences spelled out. The base game only telegraphs the negative ones - positive swings arrive as pleasant surprises, which is the most optimistic design decision in the entire product.

Targeting

Enter on a skill drops the cursor straight onto its first valid target. Arrows browse the rest of the field - a high beep marks a valid target, a low beep an invalid one - and each landing reads the target with the skill's preview against them: hit chance, crit, damage, and what the tokens will do about it. Enter executes; Escape backs out to the skill bar with nothing spent.

Glances

The glance keys speak in place and never move your cursor. Slots count from the front line on both sides.

  • 1-4: that enemy's name and health. Q/W/E/R: the same for your party.
  • Shift+slot: their tokens, buffs, debuffs, and dots.
  • Ctrl+slot: their resistances.
  • S: the acting combatant. T: the focused skill's targets. Shift+T: the turn order.
  • F, H, B: the flame, coach, and wallet, as everywhere.

Controller equivalents live in Controls; the short version is that LeftTrigger chords glance and RightTrigger chords read resistances.

The Inspector

I toggles the game's combatant dossier - the thing sighted players hold Alt for - on the focused combatant, and A and D cycle combatants while it is open. Inside you get the full academic view: stats, skills, tokens, quirks, the works, all buffered.

Events

The mod speaks the fight as it happens, using the game's own pop text: damage and crits, token gains and losses, dots, resists, wounds, heals, stress, meltdowns, deaths, and kills. Everything spoken also lands in the combat buffer, a running log that follows the latest line; walk backwards through it when three things happened at once and you would like them one at a time.

Corpses crumbling on their timer speak a died line too; if hearing the same enemy die twice offends you, the corpse deaths toggle in mod announcements is yours.

Kingdoms

Kingdoms is the game's other campaign: instead of one doomed pilgrimage to the Mountain, you defend a region's inns against an escalating invasion, on a timeline that does not care about your feelings.

Setup

The Kingdoms menu and its creation wizard read like any other screen - options, text entry for the save's name included - and existing saves list with their details for loading.

The Overworld Map

The overworld is a map of inns and the roads between them, and the mod gives it a grid cursor: arrows walk the map cell by cell, each landing reading what is there - an inn and its state, a threat, your coach. The cell's panels (the inn's details, the timeline, an approaching siege) read through the usual panel navigation, and passing the day is a button like any other.

Travel itself is still the road; see The Road. Everything said there about steering applies, including the part where the interesting decisions happen in menus.

Kingdom Inns

Kingdom inns are the campaign's real surface: garrison heroes to defend them, stock their storage, buy their upgrades, and manage who is stationed where.

  • The rest strip works as at any inn, with one addition: Enter on an occupied slot opens the hero swap screen, where you can pull the party member out, station them here, or trade them for a hero already at this inn. The stationed-effects readout up top says what a hero gains by staying behind.
  • The stationed-heroes row by the inn title lists who already lives here; Enter opens their sheet.
  • Storage moves items between your bag and the inn's chest with the same grab-and-place keys as everywhere else.
  • The relationships matrix reads as a grid: pick two heroes, hear how they feel about each other, regret learning it.

The Timeline

Days pass, threats grow, and sieges arrive on schedule. The timeline and siege panels on the map read their entries in order, so you can plan exactly which inn you will fail to save first.

The Altar of Hope

The Altar of Hope is the meta-progression shrine: between runs you spend Candles of Hope on permanent unlocks. All of its regions read - the Living City, the hero shrines and their memory tracks, the trinket and item collections, the general upgrades, and the cosmetics.

A few notes:

  • Purchases that the game gates behind a hold-to-confirm work with a plain Enter through the mod; no key-holding dexterity checks.
  • Hero tracks read each step with its reward and cost, and locked steps say what unlocking them takes.
  • Memory slots and their choices read like any other list, and a hero's collected memories show up on their sheet's conditions tab afterwards.
  • The collection screens read each item with its full text in the buffer, including the ones you have not earned yet, so you can decide what to want.

Candles are earned by suffering (a run), and spent here. The exchange rate on hope is about what the franchise's tone would lead you to expect.

Troubleshooting And Known Issues

No Speech

If the mod does not speak:

  1. Confirm the release was installed into the Darkest Dungeon II game folder (the one containing Darkest Dungeon II.exe).

  2. Confirm winhttp.dll, doorstop_config.ini, and BepInEx sit next to the exe, and the mod is at BepInEx\plugins\HarkestDungeon.

  3. Launch through Steam - the game insists on it, and so must we.

  4. Check the BepInEx log:

    C:\Program Files (x86)\Steam\steamapps\common\Darkest Dungeon® II\BepInEx\LogOutput.log
    
  5. Look for Harkest Dungeon <version> loaded.

The log is truncated on every launch, so whatever is in it is from the current session.

Controller Notes

The mod author lacks a controller, so the default scheme was kindly suggested by a community member and is still being rebound.

Other Mods

Mod management screens are fully accessible, but the mod cannot vouch for what other mods do to the game's UI. If a screen stops reading after enabling something from the workshop, suspect the something first.

Change Log

V0.3.9

  • An icon standing right beside its own word no longer doubles that word.
  • In the tutorial archive, N jumps to the first entry still marked New.

V0.3.8

  • When investing candles one-at-a-time into a hero track, you will now be told progress to unlocking the next item on that track.
  • The Strangle debuff inflicted by the Tangle's lair boss now reads by the game's own localized name in every language instead of the raw English "strangle".
  • The daze icon in resist lines like "Gain On Stun/Daze/Move Resist" was misread as "Aggressive Stance Immunity", a Duelist token that shares the same icon. It now reads as the game's Daze.
  • The Crusader's harvested wheat glyph now reads as a translated "Wheat"; the game only ever draws it.
  • New mod setting "crossroads rank sounds" to turn the crossroads and path-seal rank tones off.

V0.3.7

  • Icon words now follow the game language. Currencies (Relics, Mastery, Baubles, Candle of Hope), stat and resist icons (Stun, Move, Disease, Loathing, regen), and the coach's Armor and Wheels used to read as raw English icon ids in every language; they now speak the game's own localized names.
  • Resist announcements name the resisted effect in the game language; stress and move resists used to read as raw English ids.
  • Item affinity chances now speak the game's own localized "Affinity +" and "Affinity -" words instead of raw English icon ids.
  • Store prices paid in quest items (the Crusader quest's Rumour of Riches at the Hoarder) now read the item's localized name instead of its raw English id.
  • The rare-quirk star after a quirk's name now reads as a translated "rare" instead of the raw English icon id.
  • Inn bonus lines (trophy deliveries, inn tooltips) no longer read a meaningless "animal part" before each bonus; that was the game's decorative bullet glyph.
  • Combat item tooltips now read their targeting as the same Rank and Target lines skills use, instead of a string of raw pip glyph names.
  • Killing blows now speak their damage before the death line.
  • The crossroads now sounds the hero panel's rank circles, which were silent before. A hero in your party plays a tone for the rank they stand in, pitched by how many of their equipped skills work from it (lower for fewer skills), then a four-tone phrase for their reach: how many skills can hit each enemy rank, 1 to 4. A hero in the roster pool, and a path seal. The info for the roster is also available in the buffers.

V0.3.6

  • The mod hotkeys settings page now translates like the other mod pages; its command names were stuck in English no matter the game language.
  • Stagecoach liveries earned from Kingdoms campaigns now read by those campaigns' own localized titles instead of raw English ids.

V0.3.5

  • We have some semblance of documentation now!
  • At an inn, equipping items directly through hero sheet is now possible. You can now click an empty item slot as opposed to finding the item you want in an inventory first.

V0.3.4

  • You can now hire heroes should one of them die during a run.
  • Added a default controller scheme as provided by Ninetales16.

V0.3.3

  • Tinkered with keybinds. They should now work as expected and respect your wish to bind them to multiple actions.
  • Hero goals should read slightly cleaner now. We speak their rewards and show them as complete everywhere consistently.
  • Skill changes like lost combo speak. The game had no words for this, just tokens disappearing from the visual token strip.

V0.3.2

  • Fixed single trinkets not being able to be removed. Your heroes loved them so much they refused to lose them!
  • You can now press c while inventory is open to pull up your character sheet. You should have always been able to do this, my bad. Other keys like m and i also work.
  • Equipping a trinket from the inventory now walks you onto the hero's trinket slot to place it, instead of stranding you in a locked inventory where everything reads unavailable.

V0.3.1

  • Added affinity sound as you scroll over a skill that impacts party relations.
  • Toasts now speak in every mode, not just combat and the road.
  • Token conversions, quirk removals, and dot cleanses now speak, matching the game's own pop text.
  • The Loathing reset screen now reads its full text instead of one bare button.
  • Skill loadouts can now be accessed from the hero sheet.
  • Pets now show up as an item within the coach overview.

V0.3.0

  • Biome choices now include all their information like flavor text (Whoops?).
  • Tokens that only define a plain name (the Violinist's song-part markers, for instance) no longer leak their raw id into combat speech; they now read by the game's own name.
  • Buffs the game names only through a tooltip override no longer read as a raw stat key.
  • The deathblow resist icon now speaks as "deathblow" instead of "death"
  • Path-modified tokens now read their own descriptions on skill cards.
  • Duplicate enemies now number 1 to N in the order you meet them, instead of by rank. I thought the latter would be more intuitive; I was wrong.
  • The hero sheet's cosmetics tab now reads properly: palettes, weapon kits, and hero skins by the game's own names with "selected" on the applied one, locked skins refusing with their unlock hint in the buffer.
  • The stagecoach's livery cycler now reads as "Stagecoach Livery" with the applied skin's name, and speaks the new skin after cycling. It used to be a bare unlabeled button.
  • The hero sheet's conditions tab is no longer a hot mess of one line.
  • Opening the hero sheet from the road no longer lands on a bare "hero".
  • The crossroads path seals now read their own path's card in the buffer.
  • The Infernal Flame Vitrine is now a regular button in the crossroads actions, next to Embark. The game only ever opened it on the Z hotkey, which nothing announced.
  • Three run-status glance keys answering from any screen during a run: F speaks the flame level, H the coach's armor and wheels, B the wallet - Relics, Mastery, the Baubles total plus each faction currency you hold by name, and a kingdom's Materials.
  • Affinity and party changes outside combat now speak.
  • Story choices now tell you who would agree before you commit.
  • The road fork is no longer a screen of its own that takes the whole keyboard; it is now a transient popup inside the driving surface, matching the rest of the game. Incidentally, this re-enables looking at things like the map while you're stopped.

V0.2.9

  • Added a key to preview skill affinities while you're on one that would cause a change. They should also be present in targetting previews now where applicable. Note that the base game only broadcasts negative changes; positive come as a surprise.
  • Remove the announcement of subscreens when they're used as a component of something, e.g., inventory as a part of an inn.
  • The subtitle toggle in game now actually does something for us, mainly speak them.

V0.2.8

  • Reviewing the turn order in combat now steps one combatant per line instead of reading the whole order back as a single entry.
  • Fixed the battlefield going out of sync as a result of trinkets like faceless visage.
  • Duplicate enemies now carry their turn-order number everywhere.
  • The Shift glance no longer accidentally melds different dots into one entry.
  • The inn's floating text now speaks. This includes hero reactions to rest items, refusals and relationship changes.
  • Mod management is now fully accessible. I feel like this goes without saying, but I cannot guarantee the game will work as expected when other mods are enabled.
  • Arrowing after a Home or End jump now walks from where you landed: in settings, End then Home then Down used to teleport back to the bottom row, because the list remembered the jumped-from position.

V0.2.7

  • Inn screen path changes now read.

V0.2.6

  • Skills should properly read their upgrades again. Splitting them into separate buffers seemed to have temporarily bricked them.
  • When purchasing skills at a Mastery trainer, we no longer say selected and use consistent "Mastered" verbage throughout.
  • In combat, your focus shall now land consistently on the round number at the start. It was landing on the combatant strip, and that bothered me.
  • We no longer double-announce who you've switched to on the Mastery screen. I know you love Paracelsus, you'll just have to switch back and forth to get her name twice now.
  • The weird bug where you'd jump from enemy first rank to the back of your party has been fixed. That's what we get for doing this at 1 in the morning!

V0.2.5

  • The battlefield is now one row laid out like the screen: your party right-to-left (rank 4 leftmost, rank 1 at the front line), then the enemies rank 1 to 4. Party slots at the crossroads and the driving strip have been fixed accordingly.

V0.2.4

  • Ordained (blessed) enemies now say so
  • A new "auto collect pickups" toggle in mod settings (off by default): roadside pickups collect themselves as the coach passes them, no steering needed, and the pickup pings stay quiet while it is on.
  • Road banter finally speaks: hero chatter, relationship exchanges, node-approach barks, and the stagecoach pet all read as their bubbles appear. Only scattered reaction quips got through before.
  • Battle lines no longer leak the game's internal logic markers.

V0.2.3

  • Detail now spreads across purpose-built buffers instead of piling into one. Ctrl+Left/Right cycles only the buffers with something to say where you stand: control (the focused element, as before), mastery, hero, enemies, party, and combat.
  • A skill's upgrade preview is its own mastery buffer instead of trailing the skill card: on the hero sheet and the Mastery Trainer, the control buffer reads the card you have, Ctrl+Right reads what mastering changes. The buffer takes its name from the game's own upgrade header, and an already-mastered skill answers "no upgrade available" rather than hiding, so the same keystroke always answers.
  • In combat, enemies and party buffers read the whole battlefield from wherever you are: one line per combatant in rank order - name, rank, HP, a hero's stress, the pending target preview, and the effects summary.
  • The inspector's conditions row now disappears while the hero has no conditions, like the token and buff rows already did, instead of reading as an empty stop.
  • A story choice with nothing beside the hero's line - no relationship banner, no previews - now keeps that line in the control buffer. The buffer's repeat-folding compared details against the choice's spoken value, and on such a choice the value was exactly the hero's line, so review lost it.
  • Home and End now jump to the first and last element of the whole screen - on a road story, Home is the first hero and End the inventory button - instead of stopping at the edge of the list the cursor is in. Panels stay hard boundaries: where Tab separates panels, Home and End keep to the panel you are in.
  • Road story choices now speak the choice, not the chooser: "Bigby: Life's luxuries are wasted here, party, Relics -12, Flame 30" - the hero's line and every consequence in one pass, instead of hero vitals with the actual option buried in the buffer. S reads the focused hero's vitals (name, HP, stress) on demand, rebindable like the combat glances; the buffer still carries it all line by line.

V0.2.2

  • Combat glance hotkeys: 1-4 read the enemy strip, Q/W/E/R the party, in rank order, without moving your cursor. Bare key is name and health ("Bigby, HP 40/40, Stress 0/10"), Shift is the token summary, buffs before debuffs ("Death Armor x2", "Block (3 Turns)"), Ctrl is the resistance line ("STUN 20%, BLIGHT 40%..."). Empty slots keep quiet. All rebindable.
  • R and Shift+R (rename, reroll) now exist only at the crossroads, where they do something. They no longer squat on the keyboard everywhere else announcing "unavailable" - which is what freed R to be a hero glance in combat.
  • Picking a skill now drops your cursor straight onto the first valid target, preview and all, instead of announcing "select target" and leaving you on the skill bar to commute from. Arrows browse targets as before; Escape returns you to the skill.
  • Three more combat glances: S reads the acting combatant, T on a skill reads everyone it could hit right now with hit/crit/damage previews - before you commit to the pick - and Shift+T reads the turn order from anywhere. T off the skill bar does nothing, as advertised.
  • The coach's turning is now audible: a loop while it turns, panned toward the turn and louder the harder it leans, and an end cue when it straightens out. Both sit in the mod sounds tab with their own volumes.
  • The mod sounds tab is no longer one long scroll: after the master volume slider, a tab groups the sounds by family (road, nodes, combat), Left/Right to switch.
  • The mod now checks for updates after loading and says "update X available" when a newer release exists. Up to date, it keeps the news to itself.
  • The audio settings tab now reads the active audio device row ("Audio Device, Speakers..."), which only OCR could see before: it is plain text with no control, so the sweep skipped it.
  • A master volume slider now heads the mod sounds tab, setting the baseline volume of every sound the mod plays. The per-sound volumes ride on it.
  • Mod volumes now go up to 200 percent, master and per-sound alike, so a quiet sound can be boosted past its natural level.

V0.2.1

  • Target picking now says everything the game's attack panel computes: beside hit and crit chance, the damage the pick would actually deal with every live modifier folded in (flat crit damage once crit is guaranteed), and the target's tested resistances after your piercing ("Blight RES 40%") so you know whether the dot will stick.
  • Mastery is no longer bought blind: an unmastered skill's buffer now ends with the upgrade preview.
  • Token descriptions ride at the end of every buffer that mentions a token.
  • Thanks to Chaosbringer's report, the very first dialogue when the game pops up reads. I really, really should remember to completely nuke saves before handing the mods to him. This happened 2 times in a row now.
  • Buffer review no longer repeats chrome: a control's first buffer line is its label and state without the role word ("Confessions" instead of "Confessions, button"), and detail lines that only restate the name or value (an item tooltip's title, an icon button's caption) fold away.
  • The mod now speaks in the game's language: translations for all fourteen of the game's non-English languages ship with the mod, reusing the game's own terminology.

V0.2.0

  • A mod sounds glossary tab in settings, after the mod settings tab: one row per sound the mod plays, named for what it is used for. Enter plays the sound once and Space loops it (moving away or closing stops the loop) - both silently, the sound speaking for itself - and Left/Right set that sound's volume as a percent of its natural level, saved per sound and applied to every future playback of it.
  • Roadside pickup pings each play at a slightly different pitch, so several pickups in range no longer blend into one sound.
  • The mod's own keys are now rebindable from a mod keys tab in settings. Each command holds a list of keys: Enter opens its menu to add, replace, or delete one (modifier chords like Ctrl+arrows work), a key another command holds is refused by name rather than silently stolen, and Shift+Enter restores a command's defaults.
  • Controller support on the mod's screens: the dpad navigates, A activates, B backs out, the shoulders cross panels, and the right stick reviews buffers. Controller buttons are rebindable alongside keys ("add button" in a command's menu while a pad is connected; hold a trigger while releasing a button to make a trigger combo), and any controller press silences speech in progress.
  • Crossroads party slots now say which rank they are ("rank 1, empty slot"), rank 1 being the front line as in combat - the four slots used to be indistinguishable.
  • The crossroads' hero-path and party-loadout panels now read, so their buttons are finally offered: paths list with the full path card in the buffer and a confirm that commits, and loadouts list with apply, rename, delete, and save.
  • At the crossroads, Enter and Space now do exactly the same thing: pick a hero up, then put them down on the slot you press next. Enter used to run the game's own two-step, which left invisible state behind and could stop the scene from following you.
  • Crossroads heroes can now be renamed where they stand: R renames the hero you are focused on and Shift+R rolls them a random name, whether they are in your party or the roster. Moving onto a hero also makes the scene show them, so the path panel and the rest of the hero controls always mean the hero you are on - they used to act on whichever hero the game happened to be showing, which no keyboard move could change.
  • The road's sensing range is now a mod setting (mod settings tab, next to the separator): type any value from 20 to 200 road units, 80 being the mod's original reach. It governs everything the road senses - pickup pings, and node identity ticks at their usual half- again reach - and applies immediately.
  • The pause menu's Feedback form is now fully usable: the summary and description fields edit with keystroke echo and a read-back when the edit ends, the category opens as a menu, and Submit reads its unavailable-until-valid state. Escape cancels the report.
  • The main menu's mods side is now reachable by keyboard: its Confessions and Kingdoms entries read (they lived outside the menu's own selectable list), and Escape backs out of an open submenu - the Confessions submenu included, which previously trapped keyboard users - before opening settings from the top level.
  • The main menu's profile button (the bottom-right journal) now says what it is: it used to read as just your profile's name; it now adds the game's own "Change Profile" caption.
  • The profile panel behind the main menu's profile button is now fully readable: the profile list with rename and delete, creating a profile (name, language, analytics consent), and name edits echoing keystrokes and reading back the accepted name.
  • Key rebinding now works: the settings controls tab's Bindings button opens the binding list (Up/Down pick a command, Left/Right its two key slots), Enter listens for the new key and reads back the result, Shift+Enter clears a slot.
  • The kingdom map's cell panels (inns, camps, biomes like The Tundra) now read their Close button.
  • The goals screen, accessible by pressing g while driving, has been fixed.
  • The driving UI has been mostly if not fully covered. We now support cycling through different UI panels with tab, hero reordering, party flame readouts and its effects, and the stage coach screen. That one actually read fine, but it wasn't quite as pretty.
  • The field hospital is now fully supported. No more driving by while having your heroes bleed out to death.
  • The Altar of Hope's Intrepid Coast now reads as upgrade-track rows, same layout as the Living City: Up/Down pick a stat track, Left/Right walk its milestones, Enter invests or buys.
  • The Altar of Hope's Timeless Wood now reads fully: the Memory track, then one row per hero with a memory slot per confession ("I. Denial, empty" or the held memory with its tooltip in the buffer). Enter on an empty slot lists the memory choices with costs; Enter buys and assigns, Escape backs out. Rerolling a filled memory is Enter on it once the reroll milestone is bought.
  • The Altar of Hope's Recollection (the collection gallery of every item you have unlocked) is now reachable: it sits after the six regions on the altar list, since the game gives it no map marker of its own. Left/Right on its filter tab switch categories; each item reads its name, "New" on first viewing, and its full tooltip in the buffer.
  • The Altar of Hope's Mountain (cosmetics, once unlocked) now reads: one button per hero with unlock progress and cost, Enter pulls a random weapon kit or palette, and the reveal reads like the Working Fields one.
  • The Dam no longer risks opening empty when its option rows arrive late.
  • A locked Altar of Hope region ("The Mountain") now carries its unlock requirement in the buffer instead of a bare "unavailable".
  • Up from the top hero row of an altar track panel now reaches the candle balance; it used to be stuck (the balance was only heard on entry).
  • The Altar of Hope's Living City now reads as hero rows: Up/Down pick a hero, Left/Right walk that hero's milestone track (each reward named with its candle cost, "unlocked" once bought, details in the buffer). Enter on a milestone buys everything up to it in one press; Enter on the hero invests one candle at a time.
  • Tooltip layout spacer lines no longer land in the buffer as silent presses.
  • Dropdowns now open a menu on Enter: Up/Down move through the choices, Enter picks one, Escape closes without changing anything. Left/Right no longer change a dropdown in place.
  • The main menu's Watch Cinematics panel now reads properly (it used to be unlabeled unavailable buttons): the cinematic list and its Back button, with Escape closing the panel. While a cinematic plays the keyboard belongs to the game, so any key shows the game's skip prompt and holding Space skips.
  • Patch notes are now supported, whoops?
  • We now have an installer and a release system.

V0.1.0

Initial release.

Credits

Thank you to Chaosbringer216 and his wonderful work on Say the Spire 2. The buffer model, the glance philosophy, and the controller layout were either copied or blatantly lifted (with his permission), and the mod would be a much clunkier product without that head start.

Speech goes through Prism, which has alleviated much of the screen reader headaches.

The mod loads through BepInEx, and the installer is adapted from the Non-Visual Calculus installer.

Finally, thank you for playing and the bug reports; the mod would be worse off without your feedback.