Starting work on UI accessibility and seeking initial help

(Nolan) #1

I’m finally to the point where I’m ready to begin implementing a UI. I’d like to do some work on Amethyst UI accessibility. My goal is to create an embeddable mini screen reader that intercepts UI events, then add additional events to the UI subsystem as needed. I’d like to contribute that work back if possible, either as a system packaged with core Amethyst, or as a amethyst_ui_accessibility crate.

I’m having a little trouble making sense of the RON format as it relates to creating a UI, though. I’m wondering if anyone would mind creating a simple UI RON file with a few buttons so I can at least get something on-screen? It’d also be helpful if the buttons had the Select component attached, since that seems necessary for keyboard accessibility. I think once I see a simpler version of the format, I should be able to adapt it for other situations.

Thanks for any help.


(Fletcher) #2

@jojolepro or @happenslol can you help @ndarilek with an example RON? Or @azriel91 if we have one somewhere in our docs. If not, it would be good to include the example.



If you target the latest stable release (v0.10.0) you can try with the UI example and check their assets.

But if you target the WIP UI (I’m not really following the development so I don’t know if it differs from the latest release, but I know that they are working hard on it).


(Fletcher) #4

You’ll want to use 0.10. =)


(Nolan) #5

Actually, given I’ll be tweaking the crate to add missing events, I’ll probably need to use master. Is master unusable at the moment, or just under active development?


(Fletcher) #6

It should be usable, just under active development.


(Azriel Hoh) #7

There aren’t docs written yet. I’ve extracted two buttons from the UI example and put it here:

Copy paste commands:

git remote add azriel91
git fetch azriel91
git checkout example/ui-simple
cargo run --example ui_simple # if this doesn't work, it's because I haven't added it to the workspace Cargo.toml

Haven’t figured out what the Selectable component does yet, but it’s specified in the prefab file using a number, and it’s part of the UiTransformBuilder struct in amethyst/amethyst_ui/src/

Edit: Selectable is used in SelectionMouseSystem and CacheSelectionOrderSystem, I think the first one is more relevant (see amethyst/amethyst_ui/src/ line 164 onwards). The method’s pretty big, so I only skimmed it. Looks like the Selectable component is for widgets like multi-select lists.

1 Like

(Nolan) #8

Ah, so Selectable is not for focus-tracking? I was a bit confused because the system mentions tab/shift-tab.

Thanks for these simpler examples!


(Joël Lupien) #9

You will want to check the ui example on the master git branch of amethyst. Selectable is indeed a component indicating that the ui element can be focused using alt tab.