-
Notifications
You must be signed in to change notification settings - Fork 30.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Accessibility: Mark document-like outputs with role="document" for easier screen reader navigation. #93087
Comments
Additional info:
I would say that an application role on the body element can help a lot, as long as all documents such as extension information, welcome page and other document like content have the document role. |
According to the NVDA developer info, the application role is set on the div with class="monaco-workbench". However, the status bar and the monaco-alert are outside that application div. Having said that, the document role is set on an element that is the parent of the body element, so may be this is an electron thing. |
@LeonarddeR I do see that However for the status bar I see it is inside the |
according to NVDA, there is a monaco-status in the monaco-aria-container, sibling of the alert container. This is based on what NVDA gets from IA2, though. |
No specific reason as far as I can remember. |
I have pushed two changes:
@MarcoZehe @jvesouza @ajborka please let me know if there are other places in VS Code where the role=
|
@isidorn What about the display of Readme files from installed extensions? These are HTML-ified .md files AFAIK, and the role =„document“ would be appropriate there, too. As for the terminal, the input is a textbox, the output is definitely not a toolbar. A toolbar is a container for buttons. The output is either a read-only textbox or, if links are provided etc., a document role would also be appropriate here, as this would then kind of act like an HTML document. |
@MarcoZehe from installed extensions are markdown preview editors. For those I am in discussion with @mattbierner so we change the role of markdown preview to As for the terminal it is not a Output is currently textbox, is there an aria way to mark a textbox readonly? @MarcoZehe |
@LeonarddeR your concept of turning off browse mode on the entire vscode application might have a flaw in it. When I start NVDA, then start vscode insiders 1.44, the explorer window now automatically turns off browse mode. I would like it to remain in browse mode because navigation is easier. I shouldn't be required to turn forms mode on whenever vscode starts. All you need to do as a user is create a custom profile for vscode, then in browse mode under settings, tell browse mode to remain turned off. @isidorn it might be difficult navigating readonly text boxes with Orca. Right now, an Orca user has to press F7 in order to read readonly edit fields. I think document role would work in Windows, but not sure how it will work in Linux. Also, the markdown previews should have the document role. |
@ajborka the vs code app module will be considered if we have a viable solution. I will test Insiders tomorrow to see how it behaves and will give appropriate feedback. |
That sounds right, since the preview is always going to show the result in HTML, and that is always easier if the screen reader applies the web reading techniques rather than the application interaction model.
Yes, I tested that briefly and found that only the buttons are in a tool bar, which is fine.
The direct container of all these list items should be a list. There is another div that gets focus when you shift-tab twice from the input textbox. The first tabstop is a div with class focus-trap or so directly preceding the input. The second shift-tab, a div container to all the output items, is what I would consider the candidate for role="document".
Yeah, but that's probably not what we want, not if we also linkify stuff in there. And it would mean we'd still need arrow/caret navigation, which a read-only div doesn't give us. So instead of a textbox for the output, as stated above, document is more appropriate. |
Question, how is file explorer easier in browse mode, AKA with the virtual cursor? It is a tree view, and a set of buttons related to the selected file or folder, and a tree view would require focus/forms mode anyway. I'd say the global role="application" as is already the case is exactly what we want, with some selected bits getting the document role as this issue originally discussed. Tomorrow's insider build will have @isidorn's changes, so we can see how they affect things. I'm almost certain this will be positive. |
Question, how is file explorer easier in browse mode, AKA with the virtual cursor? It is a tree view, and a set of buttons related to the selected file or folder, and a tree view would require focus/forms mode anyway. I'd say the global role="application" as is already the case is exactly what we want, with some selected bits getting the document role as this issue originally discussed. Tomorrow's insider build will have @isidorn <https://github.com/isidorn> 's changes, so we can see how they affect things. I'm almost certain this will be positive.
As long as the explorer gets the document role(I would hate to lose the ability to browse it like a website), or each element of the explorer view had a keyboard shortcut that is easy to use and remember. I come from the age of traditional/conservative software design. For example, instead of having a chorded shortcut for each button/element/component in the explorer view, F6 traditionally cycled through components on the screen. The Microsoft Office apps are a good example of using F6 to cycle between the panes/panels in a window. Maybe this requires a different discussion, so I will stop. However, @@joanmarie <https://github.com/joanmarie> Might be able to provide insight since she worked with the Gmail web interface which has similar issues.
|
Not sure how it will impact Orca though. If NVDA made it possible to change settings in reference to your new app module, then it might work. Either way, we will check it out and give feedback tomorrow.
|
I can confirm the document role being present on the welcome page and extension details outputs in the latest insider build. This issue can be marked as verified. We should maybe file separate issues for more items that benefit from role "document" when we come across them. Now we can go and fix the VS Code app modules in NVDA, @LeonarddeR . |
@MarcoZehe Sounds good, thanks for letting us know. Adding verified label here. For using the For all othere element please create separate issues. |
While it is appropriate to treat large parts of VS Code as an application for screen readers, there are areas where it makes sense to suggest to screen readers to use their browse mode (AKA virtual cursor) mode navigation paradigm instead. Places I've found this to be the case are, among possibly more:
All of these are places where structured HTML output is generated for pure consumption and possibly following links or initiating things like installing or uninstalling an extension, etc., but not more complex interactions.
I found this while trying out Code for the first time for real, using current 1.44 Insider builds.
The text was updated successfully, but these errors were encountered: