microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.16k stars 28.54k forks source link

Make VS Code less chatty with screen readers #114892

Closed MarcoZehe closed 3 years ago

MarcoZehe commented 3 years ago

Right now, several parts of the editor are equipped with landmark roles, like "complementary", "navigation", etc. These landmarks are traditionally associated with document-like structure, not with application interfaces. In addition, with several side bars open etc., the screen reader can get very chatty with saying "complementary" (five syllables) several dozen or hundred times per day.

My suggestion, to make VS Code feel more like a desktop app, would be to change some of these roles to be more widget-like in nature. For example:

I'm putting this up for discussion here since I realize that some people might disagree with me on all or some of these points. But I wanted to bring it up anyway since right now, with these landmark roles, VS Code literally screams at screen readers "Hey, at heart, I am actually a website!". Or at least that's how I feel like when using it.

CC @isidorn , @leonardder, @joanmarie, @marlon-sousa, @jvesouza.

jvesouza commented 3 years ago

@MarcoZehe Thanks for report this issue. I wanted to report something similar to what you reported but I was unable to elaborate the problem with this wealth of details.

A problem that I have encountered frequently when editing java code is that when the edited class has errors and I try to use the auto complete function, the error is shown before the suggestions. This decreases productivity because I have to wait for the screen reader to finish reading the error before I can hear the suggestions.

LeonarddeR commented 3 years ago

@MarcoZehe Have you considered disabling NVDA's landmark reporting just for Code as a workaround? Note that this of course partially relates to that NVDA reports landmarks in focus mode, which might be a point of debate. However, I think it makes sense that NVDA behaves this way.

isidorn commented 3 years ago

@MarcoZehe thanks a lot for providing feedback. Even though @leonardder has provided a workaround I think we should behave nicely out of the box. I suggest that I change the role of ACTIVITYBAR_PART, SIDEBAR_PART and PANEL_PART to have a role: none. I plan to do this start of next milestone (so in 2 weeks in Insiders) then you can try it out and let me know what you think.

After that we can do some more fine tuning. Let me know what you think @MarcoZehe

@jvesouza that sounds like an unrelated issue to this, maybe you file a new issue and we can continue the discussion there? Sounds like the Errors get read before suggestions which does not make sense...

MarcoZehe commented 3 years ago

@MarcoZehe Have you considered disabling NVDA's landmark reporting just for Code as a workaround?

No, since I currently work primarily on a Mac. I could try this with VoiceOver for a VS Code specific activity, but thought that this warrants a discussion for default behavior since we talk about VS Code being a desktop app and not a website. And while you can distribute this default setting in a VS Code module for NVDA, and possibly scripts for JAWS if Vispero were to include that, providing a VS Code specific activity for VoiceOver users is not possible easily.

MarcoZehe commented 3 years ago

Even though @leonardder has provided a workaround I think we should behave nicely out of the box.

👍🏼

I suggest that I change the role of ACTIVITYBAR_PART, SIDEBAR_PART and PANEL_PART to have a role: none. I plan to do this start of next milestone (so in 2 weeks in Insiders) then you can try it out and let me know what you think.

This sounds awesome, thank you!

jvesouza commented 3 years ago

@jvesouza that sounds like an unrelated issue to this, maybe you file a new issue and we can continue the discussion there? Sounds like the Errors get read before suggestions which does not make sense...

@isidorn After I restarted my machine the problem seems to be gone, although I still find it eventually. I need to investigate further to try to reproduce.

isidorn commented 3 years ago

@jvesouza okey, let me know if you find steps!

isidorn commented 3 years ago

@MarcoZehe as we agreed upon I have changed the ACTIVITYBAR_PART,SIDEBAR_PART and PANEL_PART to have a role: none. Reading the aria docs, that should not be the same as not setting any role on them at all. So I hope this is the correct way to tackle this.

Anyways try it out with Insiders from Friday and let me know how it goes. Thanks a lot for the feedback and keep it coming!

MarcoZehe commented 3 years ago

@isidorn I just received this Insider build, and I must say I like the change. It definitely streamlines the experience for me. What do you think @leonardder @jvesouza @zersiax @neurrone

LeonarddeR commented 3 years ago

It's indeed much less chatty now.

isidorn commented 3 years ago

Lovely, let's stick with this change for now. Hopefully this will also make sense for new VS Code users.

Neurrone commented 3 years ago

👍 to this change as well

jvesouza commented 3 years ago

In my opinion it was great.