-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Implement accessibility support #552
Copy link
Copy link
Open
Labels
accessibilityfeatureNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
Background
Platforms typically mediate an interface between applications with a user interface, and accessibility tools (such as a screen reader), enabling assistive technologies:
- GTK/Gnome - Accessibility Toolkit (ATK)
- Windows - Active Accessibility
- MacOS - NSAccessibility protocol/messaging
Iced should provide the building blocks for making accessible applications, and integrate them automatically where possible.
Requirements
- Integrate with native platform APIs for accessibility, and provide reasonable accessibility integration for widgets built-into iced.
- Ability to communicate the widget hierarchy
- Ability to communicate the type, state, and 'properties' of widgets in the hierarchy
- Ability to query for a widget at a specific location.
- Ability to provide updates of changes to widgets, or their location in the hierarchy
- User-code should not need to use platform-specific crates.
- User widgets should be able to provide additional information to accessibility APIs.
- Additional or better markup/attributes
- 'Navigations' or actions
- Indicate relationships to logically-related widgets
Ideas
- Automatic integration
- Track widgets in a nested hierarchy
- For each widget in the hierarchy, automatically determining basic information that can be communicated to accessibility APIs (ie: whether its a button/label/input etc, button/label text, focus state).
- Communicate a representation of the hierarchy, basic widget information, and mutations to the platform-specific accessibility interface. This implementation could be shared with layout debugging and unit-testing facilities.
- Implement hit-testing.
- Widget-specific extensions
- Allow widgets to provide additional markup or attributes to an accessibility API
- Allow widgets to indicate actions/navigation options to an accessibility API (this could be implemented at a higher level as messages?)
- Allow widgets to indicate relationships to logically-related widgets
Imho, this means we first need to implement:
- A widget hierarchy that lives longer than layout/draw iterations
- A stable identity for a widget in the hierarchy.
Related issues
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
accessibilityfeatureNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed