microsoft / vscode

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

[Accessibility] quick chat accessibility help has wrong keybindings for going bw chat response and input #229527

Closed jooyoungseo closed 1 month ago

jooyoungseo commented 1 month ago

Type: Bug

CC @meganrogge

Compare ctrl+Up/DownArrow behavior in both Quick Chat and panel Chat view: it's the other way around.

VS Code version: Code - Insiders 1.94.0-insider (f35c3823e3b7ea4c52f7fee4659bcce39b42ce9e, 2024-09-24T05:04:12.797Z) OS version: Windows_NT x64 10.0.22631 Modes:

System Info |Item|Value| |---|---| |CPUs|11th Gen Intel(R) Core(TM) i5-1145G7 @ 2.60GHz (8 x 2611)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off| |Load (avg)|undefined| |Memory (System)|15.71GB (4.22GB free)| |Process Argv|--crash-reporter-id b05b88e5-8894-4031-ae34-fa034ebddea9| |Screen Reader|yes| |VM|0%|
Extensions (127) Extension|Author (truncated)|Version ---|---|--- vscode-openapi|42C|4.28.1 zotenote|A-W|1.0.1 android-dev-ext|ade|1.4.0 aiprm-lang|AIP|0.0.2 Bookmarks|ale|13.5.0 openscad|Ant|1.2.2 spellright|ban|3.0.136 mermaid-markdown-syntax-highlighting|bpr|1.6.0 external-pdf|cha|1.2.0 doxdocgen|csc|1.4.0 vscode-markdownlint|Dav|0.53.0 vscode-eslint|dba|3.0.10 vscode-quick-select|dba|0.2.9 vscode-deno|den|3.41.0 gitlens|eam|14.6.1 EditorConfig|Edi|0.16.4 prettier-vscode|esb|10.1.0 figma-vscode-extension|fig|0.3.5 vscode-firefox-debug|fir|2.9.10 shell-format|fox|7.2.5 vscode-google-translate|fun|1.4.13 codespaces|Git|1.17.3 copilot|Git|1.233.1120 copilot-chat|Git|0.21.2024092402 remotehub|Git|0.64.0 vscode-github-actions|git|0.26.2 vscode-pull-request-github|Git|0.97.2024092404 cloudcode|goo|2.17.0 overleaf-workshop|iam|0.13.2 cslpreview|igo|0.2.2 path-autocomplete|ion|1.25.0 latex-workshop|Jam|10.4.1 lilypond-syntax|jea|0.1.1 scheme|jea|0.2.0 better-cpp-syntax|jef|1.17.2 commitlint|jos|2.6.0 language-julia|jul|1.124.1 google-search|kam|0.0.1 vscode-lua-format|Koi|1.3.8 lilypond-formatter|lhl|0.2.3 lilypond-pdf-preview|lhl|0.2.8 lilypond-snippets|lhl|0.1.1 vslilypond|lhl|1.7.3 language-matlab|Mat|1.2.6 git-graph|mhu|1.30.0 azure-dev|ms-|0.8.3 vscode-azureappservice|ms-|0.25.3 vscode-azurecontainerapps|ms-|0.6.1 vscode-azurefunctions|ms-|1.15.4 vscode-azureresourcegroups|ms-|0.8.3 vscode-azurestaticwebapps|ms-|0.12.2 vscode-azurestorage|ms-|0.16.1 vscode-azurevirtualmachines|ms-|0.6.5 vscode-cosmosdb|ms-|0.23.0 vscode-docker|ms-|1.29.2 vscode-edge-devtools|ms-|2.1.6 black-formatter|ms-|2024.3.12071014 debugpy|ms-|2024.11.2024082901 flake8|ms-|2023.13.12291011 isort|ms-|2023.13.12321012 python|ms-|2024.15.2024092301 vscode-pylance|ms-|2024.9.101 jupyter|ms-|2024.9.2024092401 jupyter-keymap|ms-|1.1.2 jupyter-renderers|ms-|1.0.19 vscode-jupyter-cell-tags|ms-|0.1.8 vscode-jupyter-slideshow|ms-|0.1.5 remote-containers|ms-|0.387.0 remote-ssh|ms-|0.115.2024092315 remote-ssh-edit|ms-|0.86.0 remote-wsl|ms-|0.81.8 vscode-remote-extensionpack|ms-|0.25.0 azure-account|ms-|0.12.0 azure-repos|ms-|0.40.0 cmake-tools|ms-|1.19.52 cpptools|ms-|1.22.4 cpptools-extension-pack|ms-|1.3.0 js-debug-nightly|ms-|2024.9.1817 live-server|ms-|0.5.2024091601 remote-explorer|ms-|0.5.2024011009 remote-repositories|ms-|0.42.0 remote-server|ms-|1.6.2024011109 vscode-github-issue-notebooks|ms-|0.0.130 vscode-node-azure-pack|ms-|1.2.0 vscode-selfhost-test-provider|ms-|0.3.25 vscode-serial-monitor|ms-|0.13.1 vscode-speech|ms-|0.11.2024091917 vscode-speech-language-pack-en-ca|ms-|0.4.0 vscode-speech-language-pack-en-gb|ms-|0.4.0 vscode-speech-language-pack-ko-kr|ms-|0.4.0 vsliveshare|ms-|1.0.5941 windows-ai-studio|ms-|0.5.2024091809 autodocstring|njp|0.6.1 pandocciter|not|0.10.4 typst-lsp|nva|0.13.0 publisher|pos|1.1.6 shiny|Pos|1.1.0 shinyuieditor|pos|0.5.0 quarto|qua|1.115.0 r-debugger|RDe|0.5.5 java|red|1.34.0 vscode-xml|red|0.27.1 vscode-yaml|red|1.14.0 r|REd|2.8.4 multi-command|ryu|1.6.0 AudioQ|Seh|0.0.2 vscode-deepl|soe|1.1.1 abc-music|sof|0.4.0 lua|sum|3.10.6 latex-utilities|tec|0.4.14 cmake|twx|0.0.17 msft-todo-unofficial|tyl|0.0.18 vscode-terminal-here|Tyr|0.2.4 windows-terminal|Tyr|0.7.0 errorlens|use|3.16.0 intellicode-api-usage-examples|Vis|0.2.8 vscodeintellicode|Vis|1.2.30 vscode-conventional-commits|viv|1.26.0 vscode-arduino|vsc|0.7.1 vscode-gradle|vsc|3.16.4 vscode-java-debug|vsc|0.58.0 vscode-java-dependency|vsc|0.24.0 vscode-java-pack|vsc|0.29.0 vscode-java-test|vsc|0.42.0 vscode-maven|vsc|0.44.0 markdown-all-in-one|yzh|3.6.2 grammarly|znc|0.25.0 (1 theme extensions excluded)
A/B Experiments ``` vsliv368:30146709 vspor879:30202332 vspor708:30202333 vspor363:30204092 vscod805cf:30301675 vsaa593:30376534 py29gd2263:31024238 c4g48928:30535728 a9j8j154:30646983 962ge761:30841072 pythongtdpath:30726887 welcomedialog:30812478 pythonnoceb:30776497 asynctok:30898717 dsvsc014:30777825 dsvsc015:30821418 pythonmypyd1:30859725 h48ei257:31000450 pythontbext0:30879054 accentitlementst:30870582 dsvsc016:30879898 dsvsc017:30880771 dsvsc018:30880772 cppperfnew:30980852 pythonait:30973460 01bff139:31013167 a69g1124:31018687 dvdeprecation:31040973 dwnewjupyter:31046869 impr_priority:31057980 nativerepl1:31134653 refactort:31084545 pythonrstrctxt:31093868 flighttreat:31119334 wkspc-onlycs-t:31132770 nativeloc1:31118317 wkspc-ranged-c:31125598 cf971741:31144450 e80f6927:31120813 autoexpandse:31133494 ei213698:31121563 12bdf347:31141542 iacca2:31144504 notype1:31143044 c9j82188:31138334 showbadge:31139796 f8igb616:31140137 ```
meganrogge commented 1 month ago

As we discussed @Jooyoungseo, this is because the visual order is different. You had told me that was ok and would not be an issue for screen reader users to get used to.

jooyoungseo commented 1 month ago

@meganrogge I see. However, please check their Accessible Help. We need to contain different keybindings per chat type. It seems like they provide the same instructions.

meganrogge commented 1 month ago

Thanks for reminding me, will use this issue to track that bug.

meganrogge commented 1 month ago

@ulugbekna, this is another case of when there are multiple keybindings for a command, the when is not being respected in lookupKeybinding.

Do you have a suggestion to fix this? It's confusing for screen reader users.

meganrogge commented 1 month ago

Looks like if I pass the context key service in, it should check the when clause

meganrogge commented 1 month ago

still doesn't work

https://github.com/microsoft/vscode/blob/c74022f58c2e08536d07ad82be15ee6c1490d6cb/src/vs/workbench/contrib/accessibility/browser/accessibleViewKeybindingResolver.ts#L21-L23

meganrogge commented 1 month ago

Ah, I see it's returning here because none of the context keys match since the chat input has focus at the time that we request the keybindings

https://github.com/microsoft/vscode/blob/c74022f58c2e08536d07ad82be15ee6c1490d6cb/src/vs/platform/keybinding/common/keybindingResolver.ts#L300