Skip to content
Cataclysm: Bright Nights
GitHubDiscord

Compatibility with screen readers

This content is not available in your language yet.

There are people who uses screen readers to play Cataclysm DDA. In order for screen readers to announce the most important information in a UI, the terminal cursor has to be placed at the correct location. This information may be text such as selected item names in a list, etc, and the cursor has to be placed exactly at the beginning of the text for screen readers to announce it.

wmove in output.h|cpp is the function to move the cursor to a specific location. After calling wmove with the target catacurses::window and cursor position, wrefresh needs to be called immediately afterwards for wmove to take effect.

Here is an example of placing the cursor explicitly at the beginning of a piece of text:

catacurses::window win = ...; // target window

...

// display code
point cursor_position = ...; // default cursor position

...

cursor_position = point_zero; // record the start position of the text
fold_and_print( win, cursor_position, getmaxx( win ), c_white, _( "This text is important" ) );

...

// at the end of display code
wmove( win, cursor_position );
wrefresh( win );
// no output code should follow as they might change the cursor position

As shown in the above example, it is preferable to record the intended cursor position in a variable when the text is printed, and move the cursor later using the variable to ensure consisitency.