-
Notifications
You must be signed in to change notification settings - Fork 29.7k
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
Screen reader: Access the status bar using the keyboard. #94677
Comments
(Experimental duplicate detection) |
@jvesouza thanks for the feedback. Atm we on purose do not make the status bar focusable. However having an explicit command to pass focus to the status bar makes perfect sense. @bpasero what do you think? Once we have that command idealy users should navigate focus via key left / right or just tab to go through all the status bar items. If you do not have time to look into this I can also contribute if you provide some code pointers. Thanks |
Yes, a command to move focus into the status bar seems fine. The reason status bar is not in the list of things to "Tab" into is to reduce tab stops throughout the UI. The control to render the status bar is |
Ok, assigning to April so I look into this. |
Hello, First of all thank you so much for the great work you are doing on vscode accessibility. I am sorry for the delay on this comment, but let me show another point of view. Usually, the status bar shows information contextual to a given operation. It can show the line / column the cursor is currently at, it can show the length or other information relative to a selection or it can show status on asynchronous information. Usually, the status bar provides contextuual information that does not require the main focus to move from the task at hand. For example, one can look at selection information without touching the focus, otherwize the selection will be destroied. Historically, screen readers have provided commands that allow blind users to check the status bar content also without moving their focus from the current task at hand. JAWS uses the insert (or other key configured as modifier) plus pagedown key, while NVDA uses the insert (or other key configured as modifier) plus end to achieve this goal. I personally think that vscode should follow the standard behavior, to voice its status bar contents. Sure, having a focus status bar command would be nice, but when I have test selected and just want to hear the selection length or otherwise want to know my line / column position I definitely would like to type a command and hear that information without leaving the text focus. Thanks, |
@marlon-sousa thanks for providing more details. And yes that makes perfect sense, I was unaware of a general way to make screen readers read out the status bar. Thanks for enlightening me. I believe this is done by using the Due to that I have just pushed a commit that our statusbar starts using the fyi @joanmarie @LeonarddeR for my use of |
@marlon-sousa I agree that reading the contents of the status bar is essential. However, I believe that being able to access the actions from the status bar would also be very useful. By the way, I didn't find information about the current line and column in the status bar. I don't know if the information is really missing or if the orca was unable to identify it. |
@isidorn I just built VSCode. I have good news and bad news.
The latter means Orca has nothing to present. |
Update: I quit Orca and relaunched VSCode and see status bar children. But Orca is still not finding them. So I'll investigate more tomorrow on that front and get back to you with an answer and possibly a change to Orca. In the meantime, there is a potential issue with using this role: The ARIA At least in the case of Orca, one can disable live region notifications on a per-object basis. Not sure about other screen readers. |
@jvesouza good catch, there was an issue with line and columns missing when screen reader is attached. I just pushed a fix for that. I believe this was originaly added by @alexdima to not make screen readers too chatty. @joanmarie you are right, the So idealy we would need a role like the |
|
@MarcoZehe great suggestion. This actually seems to work just fine. I just pushed it. @joanmarie let me know how the investigation on the Orca side goes, looking at the HTML content the structures seem just fine. The only missing thing is that all the elements have the |
Let me share some thoughts here:
|
Indeed, adding F6 and Shift+F6 to move to various important anchor points within VS Code would be awesome. We use this in Firefox to go to the address bar, the main content, the developer tools if they're open, and any doorhangers (alert popovers) that might be open. Chrome and Edge also use F6 for this purpose to navigate various areas of the screen. Teams and Slack do the same. So, there are plenty of examples, this is a known and useful keyboard navigation pattern. |
@LeonarddeR thanks for providing feedback.
Luckily this keyboard shortucts does not seem to be taken in VS Code, so we might use both |
There are shortcuts for the main menu on all platforms: Alt or F10 on Windows and Linux, and CTRL+F2 (CTRL+FN+F2 maybe) on Mac, and with VoiceOver there's an additional CTRL+Option+M. So the main menu bar may not need to be included. What would the "panel" contain? Also note that Insert+End will read the status bar normally, not focus it, unless, IIRC, pressed twice, which may or may not work depending on the application, and not all screen readers have this or a similar shortcut. |
Ok, makes sense. Agree that we can leave out the Main Menu. |
Hello, Some thoughts here: 1- The status bar can not, for the life of mine, be a live region. It can't because it keeps changing all the time (as supposed) and one while writing or debugging or doing whatever operation can not be interrupted and warned about all changes all the time. So please follow @MarcoZehe suggestion and make aria-live = off. Thanks! |
On another note ... I have been trying to build vscode on Windows now for a good number of hours without success. I know that this is not the place to ask, but I have an extremely strange error that I have found no solution, even looking for it on vscode issues. If ** and only if ** you know what it is it would be very helpful because this would allow me to experiment with accessibility stuff right here and help more quickly. Command: node-gyp rebuild Strangely, this line gyp ERR! stack Error: Command failed: c:\python37\python.exe -c import sys; print "%s.%s.%s" % sys.version_info[:3]; seems to be trying to use python 2 syntax on a python 3 environment. I am out of ideas. |
Well, installed python 2.7 and now I am downloading old vs 2015 stuff. Should be, hopefully, able to build and test. |
@marlon-sousa thanks for feedback.
|
@joanmarie can you confirm what Orca is saying if you checkout master at current commit? For me, NVDA is saying the following: Remote Thanks, |
I am asking because it seems to be repeating some information. For example, using document mode (e.e reading with arrows) I listen: Remote |
@marlon-sousa I am not currently in a position to try, but I'm pretty sure we see the same thing in Orca. When reading generic text objects like divs in browse mode (i.e. reading with arrows), Orca completely ignores the names of those text objects because (imho) generic text objects which are caret navigable and not focusable arguably shouldn't have names. I believe others share my view -- potentially including NVDA developers (though I cannot speak to that with certainty). But when Orca's command to present the status bar is used, Orca examines the children and if those children have names, it happily accepts those names without question. Whether or not Orca should do that is another matter. But that's what Orca does at the present time. Perhaps that's what NVDA does as well? Regardless, I guess the question is: Is there information which you (and @jvesouza and other screen reader users) feel is extraneous? If the answer is "yes", then that sounds like a feature request for @isidorn. |
@isidorn Works for me too. In my opinion, the screen reader information in the status bar could be removed. |
@jvesouza Can you open a new bug here for that? I'm not sure yet how much of the work needs to be done in Orca versus (potentially) how much we might wish to change in VSCode. But it would be nice to have an issue in which to track it. |
Thanks. I asked for confirmation about the read content because I wanted to compare screen readers behavior. For me, the repeated information on my status bar read is something that could be improved, but this is very acceptable at the current state. if I were to prioritize something now, it would be the f6 ring, as this would be really great to have. I also haven't, until now, found any accessibility regression. @isidorn thank you for implementing and for the patience with my questions. Building vscode was kit a challenge, but now that I know how to do it I will be able to test and validate stuff more easily. A last question for you and @joanmarie: I am not a front end / web developer. I want to know if the accessibility tree can be seen somehow from within vscode itself in a debug section or by activating dev tools or if this has to be checked in the screen reader side of things. I ask this because I think once I learn how to inspect this it will be easier for me to help you guys like @joanmarie did by finding the double status issue. |
Hi. Thanks for feedback.
Since I read positive feedback about this change I am adding the label verified. And follow up work we can discuss in the follow up issues. @marlon-sousa I have fixed the duplication that you encountered via 6ad9dd4 There is not way just to see the accessibility tree of vscode, but since VS Code is built on top of electron which uses Chrome we use HTML for rendering, so it is possible to inspect that. F1 > developer tools > Elements tab > you can se the HTML structure of the whole content. Please note that these are Chrome developer tools and I am not sure how accessible it is. |
@isidorn I think I found a small problem. When I access the status bar I get the following information: I believe that this information must be related to some extension installed by me in vscode. |
@jvesouza good catch, and you are correct, that is coming from extensions. |
@isidorn It seems that this feature has stopped working, at least with the orca. When I use the command to read the status bar nothing is read. |
Confirmed also with NVDA on Windows. I now get the message "No statusbar". |
Hmm thanks for reporting. The only change I did in this area is to put the aria-label on the label container not on parent c6d841c I still see that the statusbar correctly has the role |
Yes, it was working yesterday.
I have no technical basis to suspect this commit, it's just a feeling! |
Thanks @jvesouza |
You need to find out in the orca preferences the keystroke that is associated with the speaks the status bar command. |
Ok configured it to be |
Strange for latest VS Code insiders and for latest out of source I can not reproduce the issues you are hitting. I am using latest VS Code insiders from 23 April commit d342048 Status bar always gets nicely read to me. @joanmarie can you maybe check if you can repro? Though the issue is probably in vscode since @MarcoZehe also sees it with NVDA |
@isidorn OOPS! My mistake. |
I restarted my machine and by default version 3.36 of orca is started. This version does not yet have access to the status bar implemented. |
@jvesouza Ok, so you are good :) |
I am on the latest Insider now. And the status bar is read as "Status bar" when I hit F6. If I turn browse mode on, NVDA-Key+Space, I can read the items on the status bar. I thought I tested the status bar yesterday or on Tuesday, and it worked then. It definitely does not work now. |
Perhaps this feature already exists and I am unaware, but the fact is that I cannot access the status bar using the keyboard. Using orca I can access some items from the status bar using the flat review mode, but this is not very comfortable.
The ideal in my opinion is that there was a command to move the focus to the status bar and that we could navigate between the items present using the arrows, tab and shift + tab. And when it was the case, that we could click on the items using the enter key.
CC @isidorn @marlon-sousa
The text was updated successfully, but these errors were encountered: