tspivey
I have plugins to browse a lot of file types; an epub will open as an HTML file and let me read it in the same way I would anything else. Browsing directories is fast, and I can jump between edbrowse and the shell easily.
The hardware cursor is where it will start reading when I press read current line, word, etc.
Some curses programs work reasonably well with screen readers (e.g. Mutt and WeeChat). One useful way to make them more accessible is to put the hardware cursor somewhere useful, even if hidden. Mutt puts it on the same line as the currently-selected message, and if braille_friendly is set, onto the first line of message content when opening one.
WeeChat puts it on the input line. Where this goes wrong is when trying to use fset, where I have no way to move it to the list of options.