Sunless Sea Accessibility Mod
A BepInEx 5 plugin that makes Sunless Sea playable for blind and visually impaired users via screen reader support and keyboard-driven navigation.
Features
- Screen reader output via SRAL — works with NVDA, JAWS, and other screen readers
- Virtual cursor navigation for all UI panels (menus, storylets, shops, inventory, dialogs, etc.)
- Full keyboard control — letter-key hotkeys (I, O, N, ?) for quick access to game info
- Autopilot with obstacle avoidance, stuck recovery, and auto-docking
- Object scanner with compass bearings and distance readouts
- Combat accessibility — target cycling, combat readouts, kill/prize announcements
- Sailing HUD — fuel, supplies, hull, terror, crew, heading, and speed
Supported screens
Main menu, settings, save/load, storylets, gazetteer (story/hold/journal/officers/shops/shipyard), dialogs, log messages, avatar creation, tutorial popups, legacy/death, credits, and sailing.
Requirements
- Sunless Sea (Steam, Windows)
- BepInEx 5.x (x86) installed into the game directory
- SRAL —
SRAL.dll (x86, built without UIA) placed beside the game executable
- A screen reader (NVDA, JAWS, etc.)
Installation
- Install BepInEx 5 into your Sunless Sea game folder.
- Place
SRAL.dll next to Sunless Sea.exe.
- Copy
SunlessSeaAccessibility.dll into BepInEx\plugins\.
- Launch the game.
Building from source
Requires .NET SDK with .NET Framework 3.5 targeting pack.
- Clone this repository.
- Create
GamePath.props.user in the project root:
<Project>
<PropertyGroup>
<GameDir>C:\path\to\SunlessSea</GameDir>
</PropertyGroup>
</Project>
- Build:
dotnet build
The plugin DLL is automatically copied to $(GameDir)\BepInEx\plugins\.
Keybindings
General
| Key |
Action |
| I |
Read current screen / context info |
| O |
Read stats (hull, fuel, terror, hunger, crew, echoes) |
| N |
Navigation info (heading, speed, location, autopilot) |
| J |
Browse log messages (then Up/Down to scroll, Escape to exit) |
| ? |
List hotkey bar bindings and state |
UI Navigation
| Key |
Action |
| Arrow keys |
Navigate virtual cursor in panels |
| Enter |
Activate selected item |
| Escape |
Close current panel / cancel autopilot |
| Tab |
Toggle pages (hold, shop, shipyard, journal, legacy, officer) |
| Ctrl+Tab |
Next gazetteer tab |
| Ctrl+Shift+Tab |
Previous gazetteer tab |
| Delete |
Delete selected save slot (on save/load screen) |
| Backspace |
Go back in menus |
Story Buffer Navigation
| Key |
Action |
| Ctrl+Down |
Next part of current item |
| Ctrl+Up |
Previous part of current item |
Sailing & Scanner
| Key |
Action |
| Page Down |
Next object in scanner |
| Page Up |
Previous object in scanner |
| Home |
Read bearing to selected scanner object |
| End |
Engage autopilot to selected scanner object |
Map
| Key |
Action |
| Tab |
Toggle between grid and list mode |
| Arrow keys |
Navigate map grid / list |
| Enter |
Set autopilot to selected location |
Combat
| Key |
Action |
| Tab |
Cycle / announce current target |
| Ctrl+1 |
Deck weapon status |
| Ctrl+2 |
Forward weapon status |
| Ctrl+3 |
Aft weapon status |
| Ctrl+4 |
Combat items status |
Project status
The mod covers menus, port gameplay, sailing, and basic combat. See the project milestones for detailed progress.
License
MIT