bevyengine / bevyengine/bevy

Add support for accessibility "object nav"

Open
#25,074 3 comments 0 reactions 0 assignees View on GitHub
A-UI C-Feature D-Domain-Expert I-Accessibility S-Needs-Design
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## What problem does this solve or what need does it fill?

Bevy currently supports accessibility via tab navigation and directional navigation. However, desktop UI frameworks such as Java Swing or Qt support a deeper level of integration with platform accessibility APIs, which is known as "object nav". This allows the a11y framework to navigate though the hierarchy using commands from the platform accessibility service. These commands could potentially be triggered by certain gestures, overlay controls, or specific hardware button events. The "object nav" commands allow navigation up and down the hierarchy as well as laterally, as well as the ability to reach entities that are not otherwise focusable.

## What solution would you like?

AccessKit supports object nav, but I know little about how it works. So the first step would be to research it and come up with a plan. We would then need to decide how to annotate the ECS hierarchy to support the necessary a11y metadata. Then, we would likely need to update our UI libraries to include these annotations.

## What alternative(s) have you considered?

Continue to rely solely on tab-navigation as the primary means of accessibility support.

Contributor guide

Open the contributing guide

Research direction

Start by researching AccessKit's object nav model and documenting how its commands and metadata map onto Bevy's ECS hierarchy. Then inspect the existing accessibility support and UI libraries to identify the annotations they would need; done means producing an agreed implementation plan before coding.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
accessibility
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.