Skip to content

Make screen reader toggable and detect default usage #223

@rsubtil

Description

@rsubtil

With #221 merged, screen reader will always be used if available. This means it will always be present on Windows and macOS.

For starters, this should be toggle-able in the settings.

But the main issue is figuring out whether this should be enabled or not in the first-time setup. There's no standardized method to detect if a screen reader is currently being used, and the API on all systems works by directly interfacing with the software, even if it's launched or not. Here are the solutions founds so far:

  • Make separate builds with and without accessibility plugins enabled
    • Pros: No extra unnecessary dependencies for users that do not need it
    • Cons: Complicates the build process
    • User needs to download the correct version, therefore a source of confusion
    • Does not scale for future optional features; builds become 2^n in quantity for every feature set the user wants.
  • Detect running processes for each system
    • Pros: Unified build
    • Cons: Hacky solution, can create false-positives by detecting wrong processes
    • Not implemented in Godot, would require writing custom code
    • Need to investigate process names and software for every major OS
  • Enable by default, add option to disable for users
    • Pros: Unified build
    • Works immediately for blind users, where enabling this feature is much harder than for sighted users to disable it.
    • Cons: Sighted users will need to disable it; as it's the majority of users, it's a required step of configuration, breaking RetroHub's "default configuration" policy.
  • Design according to industry standards, providing hints for UI elements for screen readers
    • Pros: Industry standard; screen readers work immediately without further modification
    • Cons: Huge programming burden; would need to be implemented in Godot for all systems, as it's custom UI code
    • Doesn't give any indication to the app that screen reader is active, which doesn't allow any changes to it's interface to accomodate better.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttopic:coreIssues or pull requests related to RetroHub itselftopic:uiIssues or pull requests related to UI/UX

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions