A comprehensive accessibility mod for Doki Doki Literature Club Plus that provides screen reader support for blind and visually impaired players. This MelonLoader mod intercepts game text and outputs it directly to your screen reader using speech synthesis.
Features
Complete Game Coverage
Character Dialogue: All character speech with localized speaker names
History Screen: Navigate through dialogue history with Up/Down arrows
Menu Navigation: Main menu, preferences, save/load screens
Poetry Minigame: Word selection feedback and character reactions
File Browser: Directory navigation with item counts and file operations
File Content Viewer: Line-by-line navigation of text files with Up/Down arrows
Side Stories: Accessible launcher navigation and story selection
Poems: Formatted poem content including special poems with visual descriptions
Gallery: Full descriptions for all CGs, wallpapers, poems, backgrounds, sketches, promotional art, and secret images
Mail App: Email content and navigation
Jukebox: Music player with track information and position announcements
System Messages: Game notifications, boot sequences, and status updates
Accessibility Features
Direct Speech Output: Text spoken immediately via UnityAccessibilityLib
Speaker Identification: Character names always included in dialogue
Duplicate Prevention: Smart filtering to avoid repeated announcements
Real-time Processing: Text appears immediately as displayed in game
Image Descriptions: Comprehensive descriptions for all gallery content
No Configuration Required: Works out of the box with optimal settings
Keyboard Shortcuts
Key
Function
R
Repeat last dialogue
C
Announce data collection percentage (Settings app only)
P
Announce current position in playlist (Jukebox only)
Accessibility mod for Phoenix Wright: Ace Attorney Trilogy
Read More
Phoenix Wright: Ace Attorney Trilogy Accessibility Mod
A screen reader accessibility mod for Phoenix Wright: Ace Attorney Trilogy. The mod outputs game text (dialogue, menus, UI elements) directly to screen readers via the UniversalSpeech library, with SAPI fallback for users without a screen reader.
Features
Full dialogue output with character name announcements
The build output is automatically copied to the game's Mods folder, along with the contents of the Data folder which are copied to UserData/AccessibilityMod.
Build Requirements
.NET Framework 3.5 targeting pack
MelonLoader installed in the game directory
Contributing
Contributions are welcome! See CONTRIBUTING.md for development setup and guidelines.
Translations
The mod supports multiple languages. Currently included translations:
English
Brazilian Portuguese
Chinese (Simplified)
Korean
Want to help translate? See TRANSLATORS.md for guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Adds keyboard accessibility for the blind to RimWorld by Ludeon Studios
Read More
RimWorld Access
Screen reader accessibility for RimWorld. Uses the Tolk library to communicate with NVDA, JAWS, and other screen readers. Falls back to Windows SAPI if no screen reader is detected.
Note: This mod is an early version. Errors may be present. This documentation is a rough overview—for detailed questions and clarifications, join the Discord server.
Bug Reports: Bug reports involving mods other than RimWorld Access are currently unsupported. Please test with only Harmony and RimWorld Access enabled before reporting issues.
Since RimWorld's mod menu is not accessible until the mod is installed, you must manually edit the mods configuration file.
Close RimWorld if it is running
Open the ModsConfig.xml file in a text editor. The file is located at:
C:\Users\[YourUsername]\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Config\ModsConfig.xml
(You can also type %APPDATA%\..\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Config\ in File Explorer's address bar)
Find the <activeMods> section
Add the following two lines at the beginning of the list, immediately after <activeMods>:
Room statistics (role, owner, quality tiers for all stats)
6
Power information (status, network, generation/consumption)
7
Area information (home area, allowed areas)
Time Controls
Key
Action
Shift+1
Normal speed
Shift+2
Fast speed (3x normal)
Shift+3
Superfast speed (6x normal)
Space
Pause/unpause
Build & Zone Systems
Key
Action
Tab
Open architect menu (select category → tool → material → place with Space)
Type letters
Typeahead search in architect menu (prioritizes name matches)
Tab
Toggle shape mode for zones/orders
Space
Place building or set corners shape mode / toggle tile (single mode)
Shift+Space
Cancel blueprint at cursor position
R
Rotate building
Building Placement Information
When placing buildings, helpful spatial information is announced:
Multi-tile buildings announce which direction they extend from the cursor
Coolers announce hot side and cold side orientation
Wind turbines announce the clear area requirements
Transport pod launchers announce fuel port location relative to the cursor
Enclosures Announce what is contained within the enclosure, I.E stumps, trees, etc, and alert you if gaps are present.
After placing a blueprint, navigating over it announces information as if the building were complete. This allows verification of orientation before construction begins. Use Shift+Space to remove and reposition a blueprint if needed.
Shape support for architect tab
Tab will open a list of pre-defined shapes that you can use to place blueprints, orders or create zones. Space sets the corners, and enter confirms once they have been selected. From their, viewing mode is available, so you can preview the placed shape, and edit it in manual mode.
Manual mode is still an option in the shapes menu, allowing you to place items manually if you wish.
Colonist Actions
Key
Action
, / .
Cycle previous/next colonist
Alt+C
Jump cursor to selected colonist
Enter
Open inspection menu (includes job queue, logs, health, etc.)
]
Open order menu (with descriptions)
R
Toggle draft mode
G
Open gizmos with status values and labels
Alt+M
Display mood and thoughts
Alt+N
Display needs
Alt+H
Display health (detailed condition info)
Alt+B
Quick combat log dump
alt + g
Read equipped gear and apparel.
Alt+F
Unforbid all items on map
F1
Work menu
F2
Schedule menu
F3
Assign menu
Inspection Menu (Enter): Access pawn details including:
Log category: Combat log and social log with timestamps and jump-to-target
Health, equipment, records, and more
Work Menu (F1)
Key
Action
Up/Down
Navigate work types
Tab / Shift+Tab
Next/previous colonist
M
Toggle simple/manual priority mode
Space
Toggle work type (simple) or toggle disabled/priority 3 (manual)
0-4
Set priority directly (manual mode)
Enter
Save and close
Escape
Cancel and close
Schedule Menu (F2)
Key
Action
Up/Down
Navigate pawns
Left/Right
Navigate hours
Tab
Cycle assignment type (Anything/Work/Joy/Sleep/Meditate)
Zones - Growing (with plant type), Stockpile, Fishing, Other
Rooms - Named rooms (e.g., "Ann's Bedroom")
Trees - Tree types
Plants - Wild plants
Items - All items by type
Mineable Tiles - Stone types, chunks
Auto-jump mode: When enabled, the map cursor automatically jumps to each item as you navigate with Page Up/Down. Distance calculations always update based on current cursor position.
World Map (F8)
Press F8 to toggle between the colony map and world map views.
The world map has its own scanner system. Use Ctrl+Page Up/Down to cycle through categories:
Settlements - Subcategories: Player settlements, Neutral, Hostile
Quest Sites - Active quest locations
Caravans - Traveling caravans
Biomes - Biome type and approximate size (e.g., "Temperate forest, approximately 2,260 tiles")
Roads - Road networks on the map
Press Home to jump the cursor to the currently selected scanner item.
Caravan Path Visibility
When a caravan is selected (using comma/period), its planned route becomes visible on the map. When the cursor is on a tile in that path, the destination direction is announced (e.g., "Bob's caravan heading east").
To view paths for multiple caravans simultaneously:
Use Comma/Period to cycle to a caravan
Press Ctrl+Space to select it
Cycle to another caravan and press Ctrl+Space again
Now both caravan paths are visible as the cursor moves across the map
This is helpful when coordinating movement of multiple caravans. Press Ctrl+Space again on selected caravans to deselect them.
Route Planner
Press R on the world map to activate the Route Planner. This allows planning travel routes and estimating journey times before committing to a caravan.
Key
Action
Space
Add waypoint at cursor
Shift+Space
Remove waypoint at cursor
E
Hear estimated travel time
Escape
Exit route planner
How It Works
Navigate to the starting point (usually a colony)
Press Space to add the first waypoint
Navigate to the destination
Press Space to add another waypoint
The estimated travel time is announced using average caravan speed
When the Route Planner is active, the scanner gains a Waypoints category for navigating between waypoints. Press 2 to hear directions and arrival times for each point along the path.
Tip: Starting the Route Planner with the first waypoint on an actual caravan will use that caravan's real travel speed instead of the average.
Caravans
Caravans allow colonists to travel across the world map to trade, attack settlements, complete quests, and more.
Forming a Caravan
Press C while on the world map at a colony to begin forming a caravan.
Route Selection
After pressing C, route selection mode activates:
Navigate to the destination
Press Space to add a waypoint
Optionally add more waypoints for complex routes
Press Enter to confirm and open the formation screen
Tip: For auto-provision to calculate supplies for a round trip, add a waypoint at the destination AND a waypoint back at the colony.
When using the scanner during route selection, destinations are marked as reachable or unreachable based on terrain. Some quest locations spawn in areas that can only be reached by transport pods or shuttles.
Pawns Tab
The first tab shows available colonists. Each entry displays the pawn name and currently equipped weapon with its condition.
Key
Action
Space/Enter
Toggle pawn selection
Alt+H
Quick health overview
Alt+M
Quick mood overview
Alt+N
Quick needs overview
Alt+I
Full inspection screen
Items Tab
Navigate here with Right Arrow from the Pawns tab.
Key
Action
Space/Enter
Open quantity menu
Delete
Remove item from caravan
Alt+I
Inspect item details
Quantity Adjustment
These quantity controls work in caravan formation, transport pod loading, and trading screens:
Key
Action
= or +
Increase by 1
-
Decrease by 1
Shift+Up
Increase by 10
Shift+Down
Decrease by 10
Ctrl+Up
Increase by 100
Ctrl+Down
Decrease by 100
Shift+Home
Set to maximum available
Shift+End
Set to zero
Delete
Set to zero (same as Shift+End)
Shift+Enter
Set to maximum given carrying capacity
Enter
Type a specific number, then press Enter to confirm
The difference between Shift+Home and Shift+Enter: Shift+Home adds the maximum quantity available regardless of weight, while Shift+Enter adds only what the caravan can carry given current mass restrictions.
Travel Supplies Tab
Navigate here with Right Arrow from the Items tab. Same controls as the Items tab.
Auto-Provision:
Press Alt+A to toggle auto-provisioning
When enabled, the game automatically selects food and medicine based on estimated travel time
The supplies tab is locked while auto-provision is active
Summary View
Press Tab to access the summary view showing caravan statistics:
Mass - Current load vs. capacity
Speed - Travel speed in tiles per day
Food - Food supplies and foraging info
Visibility - How visible the caravan is to enemies
Destination - Where the caravan is heading
ETA - Estimated time of arrival
Press Alt+I on any stat to see a detailed breakdown with tooltips explaining each contributing factor.
Sending the Caravan:
Press Alt+S to finalize and send the caravan.
Caravan Management
Cycling Between Caravans
On the world map, use Comma and Period to cycle between caravans. Each caravan announces its current status:
"Sam's Caravan - Traveling to [destination]"
"Northern Expedition - Resting)"
"Trade Group - Stopped, waiting for orders"
Press Alt+C to move the cursor to the currently selected caravan.
Commanding a Caravan to Travel
To send a caravan to a destination:
Select the caravan with Comma/Period
Navigate the cursor to the destination tile (not where the caravan currently is)
Press ] (right bracket) to open the orders menu
Choose an action like "Travel to this tile" or "Enter [settlement name]"
The right bracket key is for giving orders about a target location—where the caravan should go or what it should do when it arrives.
Caravan Gizmos (Actions at Current Location)
When at the location of a caravan, press G to open the gizmo menu for actions at its current tile:
Camp - Create a temporary map to mine, hunt, tame animals, or rest
Split this caravan - Divide into two groups
Settle here - Found a new colony (if enabled)
Other context-specific options
The gizmo menu is for what the caravan does where it currently is, while the orders menu (]) is for where it should go next.
Reforming a Caravan
When ready to leave a temporary camp or quest location:
Press Shift+C to reform the caravan
Use the formation screen to select pawns and items
Press Alt+S to finalize
After reforming, use caravan orders (]) to set the next destination.
Splitting Caravans
To split a caravan into two groups:
Stop the caravan (if moving)
Press G for gizmos
Select Split this caravan
Choose which pawns join the new caravan
Choose which items the new caravan takes
In the summary view, use Left/Right to switch between viewing each caravan's stats
Press Alt+S to finalize the split
Merging Caravans
To merge two caravans:
Move both caravans to the same tile
Use Comma/Period to find each caravan
Press Ctrl+Space on each caravan to select them
Press G for gizmos
Select Merge caravans
Caravan Inspect Screen
Press enter while on the same tile as a caravan to open the inspect screen. This is a navigable tree view.
Key
Action
Up/Down
Navigate items
Right/Enter
Expand section
Left
Collapse section or go to parent
* (asterisk)
Expand all sections
Type letters
Search/filter items
Delete
Drop item (Items section) or banish pawn (Pawns section)
Alt+I
View stat breakdown with tooltips
Escape
Close inspect screen
Sections:
Status - Current activity, speed, location
Stats - Mass, visibility, food situation (with full tooltips and breakdowns via Alt+I)
Pawns - Expand to inspect individual pawns (press Delete to banish a pawn from the caravan)
Items - All carried items (press Delete to drop)
Gear - Each pawn's equipment (press Enter to swap between pawns or return to inventory)
Multi-Map Navigation
When colonists are on multiple maps (e.g., main colony and a caravan camp):
Key
Action
Comma/Period
Cycle between pawns on the current map
Shift+Comma/Shift+Period
Switch between maps
When switching maps, the map name and number of colonists there is announced. The mod remembers which pawn was selected on each map.
Transport Pods
Transport pods are powerful, rapid, one-way vehicles. A fully-fueled launcher can send a pod up to 66 tiles away, arriving in seconds. They become available in the mid-game after researching the prerequisite technologies.
Building Transport Pod Launchers
When placing a transport pod launcher, the fuel port location is announced relative to the cursor. The launcher occupies two tiles, and the fuel port determines where fuel is loaded and where the transport pod itself will sit.
Once a launcher is built:
Press G on the launcher to open gizmos
Select Build Transport Pod to automatically construct a pod at the fuel port location
Optionally enable the Auto-build gizmo to automatically queue new pods after each launch
This approach is more efficient than manually placing transport pod buildings.
Grouping Pods
Each pod has a 150kg capacity limit. For larger payloads, multiple pods can be grouped by placing their launchers adjacent to each other.
To group pods:
Press G on any pod in the group
Select Group all pods to automatically group all adjacent pods, or
Select Group pods manually to enter placement mode, then navigate to each desired pod, press Space to add it, and Enter when finished
Grouped pods share their combined capacity (e.g., three pods = 450kg).
Loading Pods
After grouping (or with a single pod), the loading screen opens. This works similarly to caravan formation:
Key
Action
Left/Right
Switch between Pawns and Items tabs
Up/Down
Navigate items
Space/Enter
Toggle selection or open quantity menu
Alt+I
Inspect item details
Alt+H/M/N
Quick pawn health/mood/needs
Alt+S
Begin loading the pods
The same quantity adjustment shortcuts from caravan formation apply here (=, -, Shift+Up/Down, Ctrl+Up/Down, Shift+Home/End, Shift+Enter).
Once Alt+S is pressed, pawns will load the selected items into the pods. A notification appears when loading is complete.
Note: Occasional alerts about missing items may appear after loading—this is a known game quirk where items are briefly "lost" after being loaded into pods.
Launching Pods
Once pods are loaded:
Press G on the pod
Select Launch pods
The cursor moves to the world map
Navigate to the destination (use the scanner if needed)
Press Enter to select the destination
Destination Options:
Destination Type
Result
Empty tile
Pods land and form a caravan
Tile with your caravan
Pod contents merge with that caravan
Settlement
Choose: Visit (form caravan), Gift (donate contents), or Attack (edge or center landing)
Your colony or map with your pawns
Enters placement mode to choose exact landing location
Placement Mode (friendly tiles):
When launching to a tile with friendly pawns, placement mode allows choosing the exact landing spot:
Navigate to the desired landing location
Press Space to place, then Enter to confirm
Unpause the game—pods launch after a brief delay
Warning: Pods landing on roofed areas (except mountains) will destroy the roof, potentially injuring nearby pawns. Pawns inside the pod are not harmed.
Creative Uses
Transport pods have many strategic applications:
Reinforcing a distant caravan quickly
Sending supplies to colonists on a quest
Dropping combat animals into enemy settlements
Returning captured prisoners to their faction for relationship boosts
Emergency medical evacuations
Colony Inventory (I)
Press I to open the colony inventory, a tree view of all items in the colony.
Key
Action
Up/Down
Navigate categories/items
Left/Right
Collapse/expand
Enter
Activate (expand or execute action)
* (asterisk)
Expand all categories
Type letters
Search/filter items
Escape
Close
Actions per item: Jump to location, View details.
Installing Buildings from Inventory
When a building is uninstalled (via the Uninstall gizmo), it becomes a minified item stored in a stockpile. These appear in the inventory under a Buildings category.
To reinstall a building:
Move the cursor to the desired installation location
Press I to open inventory
Navigate to the Buildings category
Expand the desired building
Select Install
Use R to rotate if needed—orientation information is announced
Press Space to place the blueprint
Once placed, a colonist will carry the building from the stockpile and install it at the designated location.
Note: Not all buildings can be uninstalled. Some structures like coolers can only be deconstructed.
Trading System
RimWorld offers multiple ways to trade: orbital traders, visiting caravans, settlements on the world map, and more. The trading interface works consistently across all methods.
Trade Screen Layout
The trade screen has two tabs initially:
[Trader's Name]'s Items - What the trader is selling
Your Items - What can be sold
When any trades are queued, a third tab appears:
Trade Summary - All pending buy/sell transactions
Use Left/Right to switch between tabs and Up/Down to navigate items.
Item Information
As items are navigated, the following information is announced:
Item name and quantity available
Price (with quality indicators like "great deal" or "very expensive")
Brief description
For items that both parties possess (shared items), additional details appear:
How many the trader has and their buy price
How many you have and your sell price
Quantity Adjustment
Key
Action
= or +
Buy/sell 1 more
-
Buy/sell 1 less
Shift+Up
Buy/sell 10 more
Shift+Down
Buy/sell 10 less
Ctrl+Up
Buy/sell 100 more
Ctrl+Down
Buy/sell 100 less
Shift+Home
Maximum buy/sell
Shift+End
Reset to zero
Enter
Type exact quantity, then Enter (positive = buy, negative = sell)
For shared items (owned by both parties):
Up/Plus directions increase buying quantity
Down/Minus directions increase selling quantity
When typing a quantity: positive numbers buy, negative numbers sell
The Trade Summary tab appears when any items have been queued for trade. It shows:
All items being bought (positive quantities)
All items being sold (negative quantities)
Net balance at the bottom
Quantities can be adjusted directly in this tab using the same controls.
Completing a Trade
Key
Action
Alt+B
Announce current silver balance and trade outcome
Alt+R
Reset current item to zero (can also use delete)
Shift+Alt+R
Reset all trades
Alt+G
Toggle gift mode (donate items for relationship boost)
Alt+A
Accept and complete the trade
Escape
Cancel and close
Note: When trading with orbital traders or visitors at a colony, purchased items drop on the ground near the trader or trade beacon. Colonists will haul them to stockpiles automatically if space is available.
Other Shortcuts
Key
Action
L
View alerts and letters ] key to delete letters)
F6
Research menu (with tree navigation and typeahead)
F7
Quest menu
Delete
Delete save file (in save/load menu)
Mod Manager
Accessible from Main Menu → Mods. Provides full keyboard navigation for enabling, disabling, and reordering mods.
Key
Action
Up/Down
Navigate mods in current list
Left/Right
Switch between inactive/active mod columns
Enter
Toggle mod enable/disable
Ctrl+Up
Move mod up in load order (active list only)
Ctrl+Down
Move mod down in load order (active list only)
alt + M
Open mod settings (if mod has settings)
alt + I
Read full mod description and info
alt + S
Save mod changes
alt + R
Auto-sort mods (resolve load order issues)
alt + O
Open mod folder in file explorer
alt + W
Open Steam Workshop page for mod
alt + U
Upload mod to Steam Workshop (requires Dev Mode)
Escape
Close mod manager
Questions? Join the Discord server for support and discussion.
Usage: AccessModsInstaller [options]
Options:
--game, -g <id> Game to install mod for (pwaat, ddlc)
--game-path, -p <path> Path to the game installation directory
--skip-melonloader, -s Skip MelonLoader installation check
--force, -f Overwrite existing files without prompting
--non-interactive, -n Run without user prompts (for automation)
--prerelease, -r Include prerelease versions when downloading
--list, -l List supported games
--help, -h Show this help
Examples
# Interactive mode - choose game from menu
AccessModsInstaller.exe
# Install PWAAT mod
AccessModsInstaller.exe --game pwaat
# Install DDLC mod with custom path
AccessModsInstaller.exe --game ddlc --game-path "C:\Games\DDLC"# Non-interactive installation (for scripting)
AccessModsInstaller.exe --game pwaat --non-interactive --force
# Install prerelease version
AccessModsInstaller.exe --game ddlc --prerelease
What It Does
Finds the game - Automatically searches Steam library folders
Downloads the mod - Fetches the latest release from GitHub
Installs MelonLoader - If not already installed (required for mods)
A reusable library for adding screen reader accessibility to Unity games via MelonLoader or BepInEx mods. Provides UniversalSpeech integration with SAPI fallback, text cleaning, and speech management.
Read More
UnityAccessibilityLib
A reusable library for adding screen reader accessibility to Unity games. Works with MelonLoader, BepInEx, or any Unity mod framework.
Features
UniversalSpeech integration - P/Invoke wrapper for the UniversalSpeech library with SAPI fallback
Braille display support - Automatic output to braille displays via screen reader
usingMelonLoader;usingUnityAccessibilityLib;publicclassMelonLoggerAdapter:IAccessibilityLogger{privatereadonlyMelonLogger.Instance_logger;publicMelonLoggerAdapter(MelonLogger.Instancelogger){_logger=logger;}publicvoidMsg(stringmessage)=>_logger.Msg(message);publicvoidWarning(stringmessage)=>_logger.Warning(message);publicvoidError(stringmessage)=>_logger.Error(message);}publicclassMyAccessibilityMod:MelonMod{publicoverridevoidOnInitializeMelon(){AccessibilityLog.Logger=newMelonLoggerAdapter(LoggerInstance);if(SpeechManager.Initialize()){LoggerInstance.Msg("Speech system ready");}}}
BepInEx Setup
usingBepInEx;usingBepInEx.Logging;usingUnityAccessibilityLib;publicclassBepInExLoggerAdapter:IAccessibilityLogger{privatereadonlyManualLogSource_logger;publicBepInExLoggerAdapter(ManualLogSourcelogger){_logger=logger;}publicvoidMsg(stringmessage)=>_logger.LogInfo(message);publicvoidWarning(stringmessage)=>_logger.LogWarning(message);publicvoidError(stringmessage)=>_logger.LogError(message);}[BepInPlugin("com.example.mymod","MyAccessibilityMod","1.0.0")]publicclassMyPlugin:BaseUnityPlugin{voidAwake(){AccessibilityLog.Logger=newBepInExLoggerAdapter(Logger);if(SpeechManager.Initialize()){Logger.LogInfo("Speech system ready");}}}
Output Speech
// Dialogue with speaker nameSpeechManager.Output("Phoenix","Hold it!",TextType.Dialogue);// Output: "Phoenix: Hold it!"// Narrator textSpeechManager.Output(null,"The court fell silent.",TextType.Narrator);// Output: "The court fell silent."// Menu/system announcementsSpeechManager.Announce("Save complete",TextType.System);// Repeat last dialogue (bind to a key)SpeechManager.RepeatLast();
API Reference
SpeechManager
Method
Description
Initialize()
Initialize the speech system. Returns true on success.
Output(speaker, text, textType)
Speak text with optional speaker name.
Announce(text, textType)
Speak text without a speaker name.
RepeatLast()
Repeat the last dialogue/narrator text.
Stop()
Stop current speech.
ClearRepeatBuffer()
Clear stored repeat text.
Property
Description
DuplicateWindowSeconds
Time window for duplicate suppression (default: 0.5s)
EnableLogging
Whether to log speech output (default: true)
EnableBraille
Whether to output to braille displays (default: true)
FormatTextOverride
Custom delegate for text formatting (see Extensibility)
ShouldStoreForRepeatPredicate
Custom predicate for repeat storage (see Extensibility)
TextTypeNames
Dictionary mapping text type IDs to names for logging
TextType Constants
Value
Description
Dialogue
Character dialogue (formatted as "Speaker: text")
Narrator
Narrator/descriptive text
Menu
Menu item text
MenuChoice
Menu selection
System
System messages
CustomBase
Base value (100) for defining custom text types
UniversalSpeechWrapper
Low-level access to UniversalSpeech:
UniversalSpeechWrapper.Initialize();// Initialize (called by SpeechManager)UniversalSpeechWrapper.Speak("text",true);// Speak with interruptUniversalSpeechWrapper.DisplayBraille("text");// Output to braille displayUniversalSpeechWrapper.Stop();// Stop speechUniversalSpeechWrapper.IsScreenReaderActive();// Check if screen reader is running
TextCleaner
Basic usage:
stringclean=TextCleaner.Clean("<color=#ff0000>Red text</color>");// Result: "Red text"stringcombined=TextCleaner.CombineLines("Line 1","<b>Line 2</b>","Line 3");// Result: "Line 1 Line 2 Line 3"
Custom text replacements (applied after tag removal):
// Set your logger implementationAccessibilityLog.Logger=newMelonLoggerAdapter(loggerInstance);// orAccessibilityLog.Logger=newBepInExLoggerAdapter(loggerInstance);// Or create a simple console logger for testingAccessibilityLog.Logger=newConsoleLogger();publicclassConsoleLogger:IAccessibilityLogger{publicvoidMsg(stringmessage)=>Console.WriteLine(message);publicvoidWarning(stringmessage)=>Console.WriteLine($"[WARN] {message}");publicvoidError(stringmessage)=>Console.WriteLine($"[ERROR] {message}");}
.NET 3.5 Compatibility
The library includes Net35Extensions with polyfills for methods not available in .NET 3.5:
Net35Extensions.IsNullOrWhiteSpace(string) - Use instead of string.IsNullOrWhiteSpace
Extensibility
Custom Text Types
Define custom text types for game-specific content:
publicstaticclassMyTextTypes{publicconstintTutorial=TextType.CustomBase+1;// 101publicconstintCombat=TextType.CustomBase+2;// 102publicconstintInventory=TextType.CustomBase+3;// 103}// Register names for loggingSpeechManager.TextTypeNames=newDictionary<int,string>{{TextType.Dialogue,"Dialogue"},{TextType.Narrator,"Narrator"},{MyTextTypes.Tutorial,"Tutorial"},{MyTextTypes.Combat,"Combat"},};// Use custom typesSpeechManager.Announce("Press A to jump",MyTextTypes.Tutorial);
Control which text types are stored for repeat functionality:
SpeechManager.ShouldStoreForRepeatPredicate=(textType)=>{// Store dialogue, narrator, and tutorial text for repeatreturntextType==TextType.Dialogue||textType==TextType.Narrator||textType==MyTextTypes.Tutorial;};