Add Screen Reader Announcements for Key Events #54

Closed
opened 2026-07-15 10:29:37 -07:00 by serrebi · 1 comment
Owner

Currently, BlindRSS provides keyboard shortcuts for critical actions (e.g., changing filters with CTRL+1-6, toggling read/unread status, triggering updates). While these actions correctly update the UI and underlying data, they offer no direct auditory or Braille feedback when executed via keyboard.

For screen reader users, this creates an uncertainty loop: the user must infer that the command was successful based on indirect cues (e.g., navigating to a different item or checking the status column). This reduces confidence and increases cognitive load.

Proposed Solution

Implement explicit screen reader announcements for key events using the accessible-output2 Python library. This will provide immediate feedback via the user's preferred screen reader (speech and/or Braille), confirming the action taken.

The implementation should only trigger announcements when actions are performed via keyboard shortcuts. Executing the same action via the menu should not produce an announcement, to avoid redundancy and clutter.

Specific Events to Announce

The following events should trigger announcements:

  • Filter Change (CTRL+1 to CTRL+6): Announce the name of the applied filter (matching the menu item name).
  • Status Toggle (BackSpace): Announce the new status of the article (e.g., "Read" or "Unread"), matching the text shown in the last column of the article list.
  • Start Update (F5): Announce the action as a menu item name.
  • Stop Update (Shift+F5): Announce the action as a menu item name.
  • Playback Speed Change: Announce the current playback speed value.
  • Media/Chapters Navigation: Announce the name when navigating to the next/previous media item or chapter.
  • Other Critical UI Changes: Any other significant interface state changes or notifications that benefit from explicit announcement.

Configuration & UX

To respect user preferences and avoid notification fatigue, add a tab in Settings with configuration options for announcement behavior for each event.

For each option use a dropdown/combo box (not just a checkbox) with the following options:

  • None: Disable automatic announcement for this event.
  • Only speech: Announce via text-to-speech only.
  • Only Braille: Announce via Braille display only.
  • Speech and Braille: Use both output methods.

Default value: Speech and Braille.

Technical Implementation

Use accessible-output2:

Reliable Braille output is primarily available on Windows with compatible screen readers (e.g., NVDA, JAWS). Support on Linux and macOS is limited.

Currently, BlindRSS provides keyboard shortcuts for critical actions (e.g., changing filters with CTRL+1-6, toggling read/unread status, triggering updates). While these actions correctly update the UI and underlying data, they offer no direct auditory or Braille feedback when executed via keyboard. For screen reader users, this creates an uncertainty loop: the user must infer that the command was successful based on indirect cues (e.g., navigating to a different item or checking the status column). This reduces confidence and increases cognitive load. #### Proposed Solution Implement explicit screen reader announcements for key events using the accessible-output2 Python library. This will provide immediate feedback via the user's preferred screen reader (speech and/or Braille), confirming the action taken. The implementation should only trigger announcements when actions are performed via keyboard shortcuts. Executing the same action via the menu should not produce an announcement, to avoid redundancy and clutter. #### Specific Events to Announce The following events should trigger announcements: * Filter Change (CTRL+1 to CTRL+6): Announce the name of the applied filter (matching the menu item name). * Status Toggle (BackSpace): Announce the new status of the article (e.g., "Read" or "Unread"), matching the text shown in the last column of the article list. * Start Update (F5): Announce the action as a menu item name. * Stop Update (Shift+F5): Announce the action as a menu item name. * Playback Speed Change: Announce the current playback speed value. * Media/Chapters Navigation: Announce the name when navigating to the next/previous media item or chapter. * Other Critical UI Changes: Any other significant interface state changes or notifications that benefit from explicit announcement. #### Configuration & UX To respect user preferences and avoid notification fatigue, add a tab in Settings with configuration options for announcement behavior for each event. For each option use a dropdown/combo box (not just a checkbox) with the following options: * None: Disable automatic announcement for this event. * Only speech: Announce via text-to-speech only. * Only Braille: Announce via Braille display only. * Speech and Braille: Use both output methods. Default value: Speech and Braille. #### Technical Implementation Use accessible-output2: * Package in pip: <https://pypi.org/project/accessible-output2/> * Repo in GitHub: <https://github.com/accessibleapps/accessible_output2> Reliable Braille output is primarily available on Windows with compatible screen readers (e.g., NVDA, JAWS). Support on Linux and macOS is limited. <!-- forgejo-github-sync: issue github=serrebidev/BlindRSS#67 -->
Author
Owner

Shipped in v1.103.0.

Screen-reader announcements are now available for key keyboard actions, using accessible-output2 (with a fallback to the direct NVDA/JAWS path, including NVDA Braille).

Events announced (only when triggered by keyboard shortcut — menu clicks stay silent to avoid clutter):

  • Filter change (Ctrl+1–6) — announces the applied filter (matching the menu item name)
  • Read/unread toggle (Backspace) — announces the new status ("Read"/"Unread")
  • Start update (F5) / Stop update (Shift+F5)
  • Playback speed change — announces the current speed
  • Media & chapter navigation — announces the item/chapter name

Configuration: a new Settings → Announcements tab with a dropdown per event: None, Only speech, Only Braille, or Speech and Braille (default: Speech and Braille). Braille is most reliable on Windows with NVDA/JAWS, as noted.

Shipped in **v1.103.0**. Screen-reader announcements are now available for key keyboard actions, using `accessible-output2` (with a fallback to the direct NVDA/JAWS path, including NVDA Braille). **Events announced** (only when triggered by keyboard shortcut — menu clicks stay silent to avoid clutter): - **Filter change** (Ctrl+1–6) — announces the applied filter (matching the menu item name) - **Read/unread toggle** (Backspace) — announces the new status ("Read"/"Unread") - **Start update** (F5) / **Stop update** (Shift+F5) - **Playback speed change** — announces the current speed - **Media & chapter navigation** — announces the item/chapter name **Configuration:** a new **Settings → Announcements** tab with a dropdown per event: **None**, **Only speech**, **Only Braille**, or **Speech and Braille** (default: Speech and Braille). Braille is most reliable on Windows with NVDA/JAWS, as noted. <!-- forgejo-github-sync: comment github=serrebidev/BlindRSS#67/4983872758 -->
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
serrebi/BlindRSS#54
No description provided.