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

A11y: windows terminal emits selection/deselection events in mark mode when navigating with arrow keys #13447

Closed
beqabeqa473 opened this issue Jul 7, 2022 · 8 comments · Fixed by #18106
Assignees
Labels
Area-Accessibility Issues related to accessibility Area-TerminalControl Issues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.) In-PR This issue has a related PR Issue-Bug It either shouldn't be doing this or needs an investigation. Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Product-Terminal The new Windows Terminal.

Comments

@beqabeqa473
Copy link

beqabeqa473 commented Jul 7, 2022

Windows Terminal version

1.15.1862.0

Windows build number

10.0.19044.1766

Other Software

  • Narrator
  • NVDA latest version

Steps to reproduce

  • Run Narrator on NVDA;
  • Open Windows terminal;
  • Go to mark mode with ctrl+shift+m;
  • Navigate text with arrow keys.

Expected Behavior

Screen readers should announce only characters when navigating with arrow keys.

Actual Behavior

Screen readers announce selection of the current char plus unselection of previous char in addition with current char announcement

@beqabeqa473 beqabeqa473 added the Issue-Bug It either shouldn't be doing this or needs an investigation. label Jul 7, 2022
@ghost ghost added Needs-Tag-Fix Doesn't match tag requirements Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting labels Jul 7, 2022
@codeofdusk
Copy link
Contributor

CC @carlos-zamora.

@zadjii-msft zadjii-msft added Area-TerminalControl Issues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.) Area-Accessibility Issues related to accessibility Product-Terminal The new Windows Terminal. labels Jul 7, 2022
@ghost ghost removed the Needs-Tag-Fix Doesn't match tag requirements label Jul 7, 2022
@zadjii-msft zadjii-msft added this to the Terminal v1.16 milestone Jul 7, 2022
@carlos-zamora
Copy link
Member

Hmm... This seems to be operating as expected. When you enter mark mode we create a single-cell selection at the current cursor position. The arrow keys then move that single-cell selection as described in the docs. Since we're selecting an adjacent character and unselecting the one we were just on, everything seems to be working as expected.

That said, we do want to get rid of that single-cell selection and instead move the cursor (just like in conhost). It's doable, but it requires a bit of refactoring under the hood. Doing so would require...

  • selections to be stored as an inclusive start and an exclusive end (similar to how UIA handles it). Currently they're stored as inclusive start and end.
  • ensure we differentiate between no selection and an empty selection (particularly important when copying text and calling IsSelectionActive)
  • (from the UIA text provider side) GetSelection() needs to be able to get any of the following: (1) the selected range, (2) an empty selection exposed as the cursor, and (3) the cursor when no selection exists. We already do (1) and (3). (2) just requires us to be careful the previous point.

I'll chat about it with Dustin today to create a game plan here.

@beqabeqa473
Copy link
Author

beqabeqa473 commented Jul 7, 2022 via email

@zadjii-msft zadjii-msft removed the Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting label Jul 7, 2022
@carlos-zamora carlos-zamora self-assigned this Jul 7, 2022
@carlos-zamora
Copy link
Member

Since this is a decent size change, we probably won't service this to 1.15, so I'm removing it from the servicing pipeline.
That said, I'll be working to fix this up to work as expected. Currently scheduled for 1.16 (next release).

@carlos-zamora
Copy link
Member

For reference, doing this fix is a huge step towards #5099, so that's nice.

@beqabeqa473
Copy link
Author

beqabeqa473 commented Jul 8, 2022 via email

@beqabeqa473
Copy link
Author

@carlos-zamora are there any news in this area?

@carlos-zamora
Copy link
Member

Not yet, sorry. As I've mentioned before, it's a pretty big and risky change (though I get it's a really important one). We'll be having some planning meetings relatively soon, so I'll be sure this is a part of that so we can get a more accurate ETA. For now, I've moved it to the 1.20 milestone.

FYI, we do want to lump a lot of the accessibility work together, so this'll be a part of that discussion, for sure. Not a matter of if we'll do it, just a matter of when. We'll post updates on this issue as the plan becomes more clear though, so don't worry about being left out of the loop 😊

@zadjii-msft zadjii-msft added Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. and removed In-PR This issue has a related PR labels Sep 4, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added the In-PR This issue has a related PR label Oct 24, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs-Tag-Fix Doesn't match tag requirements label Jan 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Accessibility Issues related to accessibility Area-TerminalControl Issues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.) In-PR This issue has a related PR Issue-Bug It either shouldn't be doing this or needs an investigation. Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Product-Terminal The new Windows Terminal.
Projects
None yet
4 participants