microsoft / vscode

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

Status bar items should be keyboard navigable #95433

Closed isidorn closed 4 years ago

isidorn commented 4 years ago

Once focus is on the status bar it should be possible to navigate left / right via keyboard so that focus jump over each element.

Destilled from https://github.com/microsoft/vscode/issues/95428 @bpasero let me know if you have ideas, pointers. We might run into the issue that you reverse the elements for your flex layout.

LeonarddeR commented 4 years ago

For your info, it seems that in Microsoft Word for example, navigating items in the status bar can be done with:

These six key combinations all wrap, i.e. it is not possible to escape from the status bar with tab. I think this is an important point.

IN VS Code, as tab is able to move across parts, I think it makes sense not to implement tab to navigate status bar items, as it might introduce confusion as of what tab is able to reach.

isidorn commented 4 years ago

@leonardder agree with you. Tab should move focus out of the status bar, and we will only navigate with left / right. Up / down also do not make a lot of sense since visiually it is just one horisontal line imho. Though this might not be obvious so we can make it easier for users and make down behave same as right and up same as left.

isidorn commented 4 years ago

Created a PR for this, interested parties can chime in https://github.com/microsoft/vscode/pull/97072

LeonarddeR commented 4 years ago

I really like this functionality. Would it be possible to focus an item by default though? In MS Office, the first entry gets focus by default and if you move focus through items, the focused entry is saved on the status bar so that when you move out/in with f6/shift+f6, the focused item remains the same.

isidorn commented 4 years ago

@leonardder preservig focus makes sense, can you please file a new issue for that? Focusing an item by default for the first time does not make so much sense since the inital F6 should read the whole status bar content, not only the first item. However if we adress your other concern - that we preserve focus than I think we should be good.

LeonarddeR commented 4 years ago

Focusing an item by default for the first time does not make so much sense since the initial F6 should read the whole status bar content, not only the first item.

Mm, this is currently not the case in NVDA. You can only read the status bar with object navigation commands. May be this is something we should fix in NVDA, though. What does Orca do in this case? @joanmarie

jvesouza commented 4 years ago

@leonardder @isidorn Pressing f6 orca reads only 'status bar', but not its content. To read the contents of the status bar I need to use the flat review mode or the arrows.

isidorn commented 4 years ago

Strange that with VoiceOver this just works. @joanmarie can we improve something on the VS Code side such that the actual content gets read, and not 'status bar'

LeonarddeR commented 4 years ago

I guess you could add aria-labelledby to the status bar containing ids of all the direct children, but only if no child has focus. I find that a bit tricky. From an IAccessible2 perspective, I'd say the content of the status bar should be the accValue of the status bar object and not the accName.

joanmarie commented 4 years ago

@isidorn I can do something in Orca and have started working on it (nothing yet committed: speech is easy, doing the braille is uncovering some issues related to the whole "named div" thing. So I'm probably going to wind up having both speech and braille dive down looking for the real objects to present. In this case links.)

In the meantime, something I noticed about the keyboard navigation: Once I've started arrowing amongst items in the status bar, cycling via F6 doesn't bring me back to the status bar; it brings me back to whatever was the last focused object in the status bar. The only way I've found to work around that is quitting and restarting VSCode, which is making debugging the change in Orca a bit more tedious. ;) Is this by design and/or is there a keystroke I can use to give focus to the status bar itself?

joanmarie commented 4 years ago

Ok, support landed in Orca master to present the newly-focused status bar in speech and braille.

jvesouza commented 4 years ago

@joanmarie It looks great! Thank you.

isidorn commented 4 years ago

@joanmarie great. Yeah that is by design, more details here https://github.com/microsoft/vscode/issues/97241 Press esc to focus the status bar once the focus is on a status bar entry