Hi all. I’m a totally blind person that’s interested in using Obsidian in my job, and maybe personally as well. My boss told me about Obsidian–that’s what he uses–so I decided to try it out. I found that some of it was usable with a screen reader (I tried NVDA on Windows. I found that when I navigated text that I’d written, using the arrow keys, all I heard was “blank” signifying that the screen reader could not read the text.
Steps to reproduce
Assuming NVDA is installed(get from link above):
Close all open files, then create a new one. You can use arrow keys and Enter for this.
A file name box opens, and gains keyboard focus. The name of the field isn’t spoken with NVDA (much more minor bug). Enter any name, and press Enter.
Now, type some text. A heading, and then a paragraph, will do.
press the Up arrow a few times to get back to the heading.
After pressing the arrow keys, NVDA should be speaking text behind the cursor, or the line that the cursor is on.
NVDA speaks “blank” instead, meaning that NVDA sees no text at all. Interestingly, if I select all with Control + A, NVDA reads the text then. However, this is hardly a good editing experience.
I just tried both Narrator on Windows and VoiceOver on the Mac. Narrator works even more poorly than NVDA, and while I can review the lines I’ve written with VoiceOver, I cannot hear what my cursor passes over. I’ll try JAWS next. I’m an accessibility tester as part of my job, so I have access to just about any screen reader you’d like me to test with.
Okay, tried with JAWS and Orca (for Linux). JAWS did the same thing as VoiceOver, allowing me to review the text outside of the edit field, but I still cannot move my cursor there. The program didn’t work at all with Orca.
Thank you very much for your testing. Your efforts prompted me to do some research. The issues you are highlighting are due to our editor library Codemirror 5.
Codemirror 5 doesn’t play well with screen reader due to some architectural decisions and technical limitations and it won’t get “fixed”.
Codemirror 6 is a complete rewrite of the editor and it does work with screenreaders. We already use Codemirror 6 in the mobile app and will eventually upgrade to Codemirror 6 in the desktop app as well.
This is great, I’m very much looking forward to the transition to CodeMirror 6 on desktop. Is there any rough timeline on when that transition might happen? I know of a few visually impaired users that are anxious to try out Obsidian (and I’ve told them all how great it is), so I’m excited about this update!
I am on obsidian 0.12 as a blind user of the nvda screenreader.
I would love to get in to obsidian, but am still not able to read text back while editing. Will this be fixed? How can we adres such a thing on the roadmap I mean accessibility should be a priority hthese days of all kinds of organisations. HOw can we get this properly adresed on the backlog? And fixed within one of the upcoming sprints?
In source view, the current editor works quite well
In preview view, the editor has serious issues in NVDA when links/embedded elements are in the text. NVDA reads the text before the link and stops. The only way to read further is moving through the text until the cursor is on the link
The rest of the interface is not really accessible. For example, I can use ctrl+p to open the command palette, but while typing and arrowing through the list I can’t read which command is selected. Because many functions are available from this palette and I don’t think it would be so hard to make this accessible, this might be a good first step. Another app based on web technologies which implements such a command palette really well is Visual Studio Code, you might get some inspiration there.
Other parts of the UI such as the explorer are not accessible from the keyboard. Ensure everything that should be focusable (such as buttons/links/input controls) are reachable by tab or shift+tab. Of course, tab has another function in the editor, so you need a way to get out of the editor first. A few possible approaches:
Introduce a hotkey to switch tab between inserting a tab in the editor or moving focus. Visual Studio Code does this and assigns ctrl+m by default
Introduce a hotkey to move between UI panes, f6 is a common choice in Windows applications. This could move between the most important parts of the UI and get you out of the editor without using tab.