Skip to content
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 readers not announcing encountered break points #90842

Closed
bjduarte opened this issue Feb 17, 2020 · 20 comments
Closed

Screen readers not announcing encountered break points #90842

bjduarte opened this issue Feb 17, 2020 · 20 comments
Assignees
Labels
accessibility Keyboard, mouse, ARIA, vision, screen readers (non-specific) issues debug Debug viewlet, configurations, breakpoints, adapter issues feature-request Request for new features or functionality verification-needed Verification of issue is requested verified Verification succeeded
Milestone

Comments

@bjduarte
Copy link

@sana-ajani
@isidorn

Issue Type: Bug

Issue:

VoiceOver is not announcing when a break point is encountered within the file.

Expected:

VoiceOver should announce when the cursor encounters a break point within the file.

Actual:

VoiceOver is not announcing when it encounters a break point.

Recreate:

  • Turn on VoiceOver
  • Insert a break point within a file
  • Use the up and down arrow keys to move the cursor over the line containing the break point

VS Code version: Code 1.42.1 (c47d83b, 2020-02-11T14:44:27.652Z)
OS version: Darwin x64 19.3.0

System Info
Item Value
CPUs Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz (8 x 2700)
GPU Status 2d_canvas: enabled
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
metal: disabled_off
multiple_raster_threads: enabled_on
oop_rasterization: disabled_off
protected_video_decode: unavailable_off
rasterization: enabled
skia_renderer: disabled_off
surface_control: disabled_off
surface_synchronization: enabled_on
video_decode: enabled
viz_display_compositor: enabled_on
viz_hit_test_surface_layer: disabled_off
webgl: enabled
webgl2: enabled
Load (avg) 2, 1, 2
Memory (System) 16.00GB (3.72GB free)
Process Argv
Screen Reader yes
VM 0%
Extensions (3)
Extension Author (truncated) Version
python ms- 2020.2.63072
python tht 0.2.3
vscodeintellicode Vis 1.2.5
@isidorn isidorn added accessibility Keyboard, mouse, ARIA, vision, screen readers (non-specific) issues debug Debug viewlet, configurations, breakpoints, adapter issues labels Feb 18, 2020
@isidorn
Copy link
Contributor

isidorn commented Feb 18, 2020

Using aria alerts to announce that there is a breakpoint on that line seemed too intrusive and potentially spammy. Thus we decided to have F1 > "focus on breakpoints" command that can take the user to the breakpoints view where he / she can navigate over them.

@redeyedragon Would you prefer that on every line we announce that a breakpoint is present? Would you expect that to be announced before or after the line content?

Please note that we announce once breakpoints get hit, which might be related to this.

@isidorn isidorn added the under-discussion Issue is under discussion for relevance, priority, approach label Feb 18, 2020
@bjduarte
Copy link
Author

I understand what you are saying it could seem a bit intrusive but here is my perspective. If someone is at the point where they are inserting breakpoints they are probably in debug mode which means they are adding and removing several break points. It is absolutely necessary that the user knows where they have break points placed within the file. I believe it should be announced on the line where the break point is placed and it should be announced at the beginning of the line. As I move through my code I do not want to have to listen to every lines contents to find where I have placed a break point. If I hear it at the start of the line I can decide from there to skip it or read the rest of the line.

I went through the F1 list of commands. There is no key binding set for moving to or through break points. This might help a bit but still there is no indication through speech that a break point is present on a line.

@isidorn
Copy link
Contributor

isidorn commented Feb 18, 2020

Ok this makes sense, and thanks for feedback. Assigning to next milestone (March) to investigate further then what could be done here.

As for F1 commands, try to F1 > focus breakpoints view and in there you can jump to breakpoints and navigate which should help.

@isidorn isidorn added this to the March 2020 milestone Feb 18, 2020
@isidorn
Copy link
Contributor

isidorn commented Mar 4, 2020

After thinking about this a bit furhter I believe this is a subset of a more general issue: items in the glyph margin are not read out to screen readers.
Same as a breakpoint can be on a line, we can also have a code action or a folding or a line number.

Related issues #43262
microsoft/monaco-editor#410

Currently our strategy is not to read any of those and users can manually trigger some of those to be read out.
Maybe a more optimal solution would be one command that could be triggered to read all of the following: breakpoints, code actions, line numbers.
Not on the current plan, thus assigning to On Deck.

fyi @alexdima

@isidorn isidorn modified the milestones: March 2020, On Deck Mar 4, 2020
@bjduarte
Copy link
Author

bjduarte commented Mar 4, 2020

@isidorn
In my opinion and experience if there are attributes being displayed visually, effecting my code base, or providing me with some kind of information relevant to my development environment I need/want to know about that. For example, when I am in VIM and developing code I turn on line numbers so when I view a stack trace I know where the issue is. When I switch to VIM I can jump to the line quickly but it helps to know what line it is on because the issue is not always on the line referenced. similarly, when there are breakpoints, line breaks, syntax issues, or line numbers; I want to know about them. They might not need to be read out verbose but knowing they are present on a line is information a developer needs to know. I think it could be handled in the same way "hints" are handled when you enter a () into a function. It notifies you there is suggested hints but does not display them.

Additionally, it would be awesome if there could be some kind of indicator for tabs in the beginning of the line. If this is a feature already is there a way to enable it? This is another feature that could be done on command with a key stroke. Perhaps a CTRL + T, could read out "2, or 3 to let me know I am indented 3 levels.

@isidorn
Copy link
Contributor

isidorn commented Mar 4, 2020

@redeyedragon what you are saying makes sense.

As for reading indentation we plan to tackle that in the current march milestone as is coveed by this issue #88877

@isidorn isidorn changed the title VoiceOver not announcing encountered break point Screen readers not announcing encountered break points Mar 25, 2020
@isidorn isidorn added feature-request Request for new features or functionality and removed under-discussion Issue is under discussion for relevance, priority, approach labels Mar 25, 2020
@ajborka
Copy link

ajborka commented Mar 25, 2020

@isidorn I can see where @redeyedragon is coming from on this point. If I have items in the gutter, then I need to know about them because they change the codebase somehow. Something that might work is to expose those elements and allow screen reader developers to present them to the user. @joanmarie is this possible? In the event that vscode must do all the work, having an accessibility group in settings that determines where the breakpoint is announced would be nice.

@isidorn
Copy link
Contributor

isidorn commented Mar 25, 2020

We are actually discussing using aria annotations for breakpoints in VS Code. This should hopefuly be the ideal solution, however this is still work in progress on the Chrome and Orca side.
@aleventhal and @joanmarie would know more.

@joanmarie
Copy link

Regarding ARIA Annotations: The basics in Orca already are in place in the latest version of Orca. I just have some additional navigation commands to add, and some refinement to do on the messages. I don't think VSCode's use of ARIA Annotations is blocked by/on Orca, especially not for general announcements.

I also don't think you are blocked on Chrome. I have been using Chrome/Chromium to do the ARIA Annotations support in Orca.

I will let @aleventhal chime in regarding exactly what all he would do in terms of the authoring and user experience.

@aleventhal
Copy link

aleventhal commented Mar 25, 2020 via email

@isidorn
Copy link
Contributor

isidorn commented Mar 25, 2020

@joanmarie @aleventhal Thanks for providing more details.
Assigning to April to look into this then. Once I try it out I will give more feedback. Thanks

@isidorn isidorn modified the milestones: On Deck, April 2020 Mar 25, 2020
@isidorn
Copy link
Contributor

isidorn commented Apr 17, 2020

@aleventhal @joanmarie I have looked and thought a bit about this. Currently VS Code uses a hidden textArea where we put the text content of editor so that it would be accessible. Even though this has some issues with Chrome on macOS this approach works well in general so far.
We already set a role of textBox and aria-roledescription to editor of this textArea. So we do not have a structured HTML object for each line of the text.

Due to that I do not see how we could use the aria-description to present a breakpoint in the editor, since we could only place it on the textArea element and that would be too global (as it has multiple lines).

However I do see some other use cases for aria-roledescription, aria-details and aria-descripton. For example our Breakpoints view which has a structured HTML list strucutre for each breakpoint. And many other of our Tree / List views.

@aleventhal please let me know if I missed something while reading the spec and if you have ideas for better use of this with our textArea editor. I am also open for a call, though please note that I am in the CET timezone. Thanks!

fyi @alexdima

@aleventhal
Copy link

aleventhal commented Apr 18, 2020 via email

@isidorn
Copy link
Contributor

isidorn commented Apr 24, 2020

Thanks for the suggestion. We can experiment with changing our textarea to contenteditable, however that would require a larger refactoring, thus pushing this out to next milestone.

@isidorn isidorn modified the milestones: April 2020, May 2020 Apr 24, 2020
@aleventhal
Copy link

aleventhal commented Apr 24, 2020 via email

@LeonarddeR
Copy link

If an editable content approach is used, that might also open up possibilities to fix #90578 and #95428.

@isidorn
Copy link
Contributor

isidorn commented May 7, 2020

Created this item for the contenteditable exploration which I plan to do this milestone #97154

@isidorn isidorn modified the milestones: May 2020, On Deck May 7, 2020
@cannona
Copy link

cannona commented Dec 14, 2020

Hi. I'm also struggling with this issue. Mostly, I just want a notification when I reach a line with folded code.

One option you might consider would be to add earcons. I'm not sure if there is ever any additional information provided along side these left-margin annotations, other than the fact that they exist, but playing a specific sound when the user reaches a line with folded code, or a breakpoint, would work well for me, and is not likely to interfere with the users ability to listen to their screen reader. Unfortunately, this would not help users who are Deaf or hard of hearing, or who, for whatever reason, use braille only.

@isidorn
Copy link
Contributor

isidorn commented Aug 17, 2021

Quick update: we are looking into doing quick announcements on the vscode side when a decoration is encountered (like a breakpoint). More details in this issue #130565 (comment)
Feedback welcome.

fyi @hediet

@isidorn
Copy link
Contributor

isidorn commented Jan 7, 2022

Fixed via #140044 by @hediet
Sound design by @gino-scarpino
This will be present in VS Code insiders from Monday. We would really appreciate the feedback.
Thank you!

Verifier:

  1. Turn on a screen reader, or set "audioCues.enabled": "on"
  2. Move cursor to a line with a breakpoint. Make sure there is a "stop-like" sound

@isidorn isidorn closed this as completed Jan 7, 2022
@isidorn isidorn added the verification-needed Verification of issue is requested label Jan 7, 2022
@isidorn isidorn modified the milestones: On Deck, January 2022 Jan 7, 2022
@hediet hediet mentioned this issue Jan 24, 2022
4 tasks
@jrieken jrieken added the verified Verification succeeded label Jan 26, 2022
@github-actions github-actions bot locked and limited conversation to collaborators Feb 21, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
accessibility Keyboard, mouse, ARIA, vision, screen readers (non-specific) issues debug Debug viewlet, configurations, breakpoints, adapter issues feature-request Request for new features or functionality verification-needed Verification of issue is requested verified Verification succeeded
Projects
None yet
Development

No branches or pull requests

9 participants