Skip to content

fix: make keymap SVG keys findable with VoiceOver - #3054

Open
mondalaci wants to merge 2 commits into
masterfrom
fix/keymap-voiceover-accessibility
Open

fix: make keymap SVG keys findable with VoiceOver#3054
mondalaci wants to merge 2 commits into
masterfrom
fix/keymap-voiceover-accessibility

Conversation

@mondalaci

Copy link
Copy Markdown
Member

Summary

  • Name each keymap key from its physical QWERTY position plus the current mapping (Up Arrow, Up Arrow, unassigned, I, Up Arrow) so VoiceOver can find icon-only and empty keys.
  • Keep that name in aria-label, an SVG <title>, and a near-invisible <text> node; VoiceOver often ignores aria-label on SVG <g> and skips keys that have no text.
  • Hide the off-screen layer keyboard after a slide, and hide the keyboard while the remap popover is open, so the accessibility tree matches what is on screen.

This is the Agent-side fix for a VoiceOver user who could not locate Mod-layer arrow keys: Home/End have text captions, arrows are icons, and unmapped keys previously had no usable name.

Test plan

  • On QWERTY for Mac, Base layer: VoiceOver item chooser search for arrow finds the four physical arrow keys.
  • Switch to Mod: search for arrow still finds the letter-row Up key (I, Up Arrow or similar) and the physical up-arrow (Up Arrow, unassigned).
  • VO-left/right between Home and End on Mod stops on the Up key in the middle.
  • After switching layers, item chooser does not list a duplicate Base-layer keyboard.
  • Activate a key: focus moves into the Remap key dialog; Cancel returns to the keyboard; keys behind the overlay are not in the VoiceOver list.
  • Sighted remap flow is unchanged (click key, remap, cancel, layer slide).

Made with Cursor

mondalaci and others added 2 commits August 16, 2026 17:09
Name keys by physical QWERTY position plus current mapping, and hide off-screen layers and the remap overlay from the accessibility tree so icon-only and unmapped keys remain searchable.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant