Goal
Integrate the native Mac Accessibility Keyboard with row-then-key switch scanning, preserving editor focus. Deliver the shared keyboard-scanning foundation first.
Behaviour
- Add Keyboard as the ninth main action-menu tile and optional press/hold action. Open or reuse the keyboard without clicking the selected point.
- Scan visible enabled keys by actual rows and positions; activate once and return to rows.
- Persistent Back to scanning and Close keyboard controls. Back leaves it open; Close hides it; both return to normal armed idle. Keyboard switch action while keyboard scanning performs Back.
- Reuse scan colour, timing, manual/automatic movement, reverse, pause and hold actions. Preserve emergency stop and prevent native keyboard output recursively activating switches.
- Refresh layout/geometry; reject stale activation. Errors retain a switch-accessible return.
- Shared typed actions, adapters and frontend states; existing settings remain valid, local/Remote parity, no BLE wire changes.
Qualification and validation
First prove native open/close, focus-preserving activation and generated-event identification in the Mac VM. Probe AX keys expose bounds but no press action: validate explicit-coordinate native clicks. Normalize glyph labels. Report blockers rather than substituting point scanning or ignoring all injected events.
Fake tests cover navigation, controls, timing, modifiers, repeated keys, stale layouts, cancellation, failures and exactly-once activation. VM tests use disposable text, mapped Space/Enter/letters, re-entry, focus, resizing and display changes. Restore settings, permissions, keyboard visibility and VM state. Never interrupt or replace the signed local Mac app.
Branch from current main, run required frontend/Rust checks, independent latest-head review and ready PR with passing CI. Merge/release require separate instructions.
Goal
Integrate the native Mac Accessibility Keyboard with row-then-key switch scanning, preserving editor focus. Deliver the shared keyboard-scanning foundation first.
Behaviour
Qualification and validation
First prove native open/close, focus-preserving activation and generated-event identification in the Mac VM. Probe AX keys expose bounds but no press action: validate explicit-coordinate native clicks. Normalize glyph labels. Report blockers rather than substituting point scanning or ignoring all injected events.
Fake tests cover navigation, controls, timing, modifiers, repeated keys, stale layouts, cancellation, failures and exactly-once activation. VM tests use disposable text, mapped Space/Enter/letters, re-entry, focus, resizing and display changes. Restore settings, permissions, keyboard visibility and VM state. Never interrupt or replace the signed local Mac app.
Branch from current main, run required frontend/Rust checks, independent latest-head review and ready PR with passing CI. Merge/release require separate instructions.