Skip to content

Accessibility integration plan (modular hooks + BW selector preview/save rollback) #917

Description

@kazek5p-git

Summary

Request to integrate the accessibility layer in a maintainer-friendly way (minimal core changes, modular design), and keep BW selector behavior deterministic.

Why

Audio cues significantly improve usability for blind and low-vision users:

  • menu/submenu navigation by pitch
  • explicit enter/back/confirm feedback
  • ON/OFF two-tone patterns for toggles

Required behavior (BW selector: Filter / iMS / EQ)

Expected UX:

  1. Changes apply immediately while navigating selector (instant preview).
  2. Values are persisted only after selecting OK.
  3. Leaving selector via MENU/BACK restores previous values (no save).

Minimal implementation approach

Keep accessibility mostly isolated in src/accessibility.* and add only small hooks in existing code paths:

  • ButtonPress(), ModeButtonPress(), BWButtonPress()
  • rotary up/down menu paths
  • touch selector path in src/touch.cpp
  • selector rendering reads temporary state only while selector is open

For BW selector state handling:

  • snapshot on entry: BWsetRecall, iMSsetRecall, EQsetRecall
  • temporary state while open: BWtemp, BWsettemp, iMSsettemp, EQsettemp
  • commit EEPROM only on OK
  • no EEPROM commit during preview mode

Acceptance tests

  • No duplicate/overlapping menu cues.
  • BW selector preview/save/cancel behavior exactly as described above.
  • Stereo/mono ON/OFF cue pattern remains consistent.
  • No regression in band switching stability.
  • Firmware size remains within current flash constraints.

Notes

A ready implementation guide and issue draft were prepared on fork branch final/a11y-review-pack:

  • docs/ACCESSIBILITY_UPSTREAM_INTEGRATION_GUIDE.md
  • docs/ISSUE_DRAFT_ACCESSIBILITY_PLAN.md

Prepared with AI assistance and manually validated in firmware tests.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions