Last time in our accessibility journey we were stuck on a very fundamental problem: with the screenreader focusing on the input line, no text that was coming from the game to the main display was being read out.
Solving this took a lot of research, but finally I’m happy to say – there’s been a breakthrough! Mudlet on macOS can now speak out incoming text from the game right as it happens.
Getting to this stage took a good month and a half and a lot of work. With Qt, the framework we use to make Mudlet available on Windows, macOS, and Linux, unable to help us here, I dived into the platform-specific options. macOS’s VoiceOver has a native APIs that allow us to program it, with events available for everything from a button push to text being edited. But nothing stood out that could really help us – or at least wasn’t described all that well. I resorted to dropping a support question in Apple’s Developer forums and parking the topic for the time being.
After a fair bit of time passed, an actual developer who works on accessibility at Apple responded! They pointed out that the ‘NSAccessibilityAnnouncementRequestedNotification’ could be used to accomplish what is needed. Suffice to say this is not the most intuitively named nor described event, but it would do the job just fine for us.
Well, almost. Mudlet is written in C++, whereas VoiceOver APIs require one to use Objective C – a totally different beast. Learning the basics of Objective C was in order to plug the event in and make use of it. Once that was done, and several issues related to conflicting header files that popped up were wrangled, Mudlet was finally able to announce text from the game as it came in!
Next up on the platform is Linux, with its primary screenreading software, Orca. Challenges on this platform are different: the underlying protocol that software uses to communicate with screenreaders, AT-SPI2, simply does not support any sort of announcements. Orca, Chrome, and Firefox seem to deal with this using various workarounds – so next on the plate is figuring out which one of them fits Mudlet best and implementing it.
Meanwhile, I’m looking for macOS testers who are regular MUD players to help test out the support that has been built so far. Get in touch on Discord!