Accessibility for people who are blind or visually impaired

25 views
Skip to first unread message

Joe Wegner

unread,
Aug 17, 2019, 5:01:38 AM8/17/19
to Developers
Hello

Motivation

I work at the American Printing House for the Blind.  I have several developer colleagues who are blind or visually impaired, and they find parts of the Adruino IDE difficult to use.  So I would like to work toward adding accessibility to the IDE.

Yesterday I already added code that allows screen readers to be able to read the data in the board manager and library manager.  That was a fairly easy change.  But moving forward, as things become more complex, it's probably best that I coordinate more.

Problem

The next thing that I would like to tackle is the pop-up dialog box that says "Updates available for some of your boards and libraries".  There are a some issues with this for people that are blind or visually impaired.

  • The screen reader reads only  "Updates available for some of your" then says button
  • The button has no name
  • The dialog box is on a timer that expires too quickly for many people who are blind to be able to act on it.
  • The links for boards and libraries are not read by the screen reader, and there is no way to use these links from the keyboard

The reason that the links do not work is that the text is not in a web context, so screen readers don't realize that the links are indeed links.  As a result. when the screen reader sees the HTML code it basically just stops.  NOTE:  this issue is found in other places in the IDE as well.  But I want to start small.

Project

For people that are sighted, the way the IDE works now is visibly appealing and it works well.  But for people that blind and can not use the mouse, the links are unusable.  

Preferences screen (Preferences.form and Preferences.java)

In the preferences screen I want to add a new checkbox field called Accessible GUI.  When checked, changes made to the GUI to make it more accessible will be used.

Notification popup class (NotificationPopup.java)

I can either create a new accessible dialog box, or I can modify the current NotificationPopup class.  I prefer the latter.  These are the changes to be made, such that when the accessible GUI option is true the dialog box will be more accessible.  When the accessible GUI option is true:
  • Disable timer for automatic dismissal.  
  • Request focus so that the dialog is brought to the user's attention.  
  • The close box will be given an accessible description of close so that the user knows what the button does.
  • 2 additional buttons will be added.  These buttons will be named and handle by the calling class.
Contribution update check (ContributionsSelfCheck.java)

The update check will continue to function as normal, but when the accessible GUI option is true:
  • The  dialog text will say the same text, but the text will not contain links.
  • The call to the Notification Popup will provide the name and handler for 2 new buttons.
    • Update Boards - when clicked this will do the same as clicking the board link.
    • Update Libraries - when clicked this will do the same as clicking the libraries link.
Questions

  • Is there a preferred development platform, particularly for the preferences screen?
  • Is there currently any work along this lines that has started this?  For instance, if there already is an accessible GUI option I don't want to repeat/recreate all of that.
  • I want to keep this in small chunks.  What should some of the future small chunks be?
  • Advise is always appreciated.

Tom Igoe

unread,
Aug 17, 2019, 5:08:16 AM8/17/19
to devel...@arduino.cc
I have a long series of notes on this assembled by one of my grad students last year. Following Ken's issue in the GitHub repo, he assembled an analysis of all the software details and wrote a suggested approach. If you're interested, mail me and when I am back home and near a computer in a week or so and I'll forward it. Martino Facchin might have the analysis too.

T

--
You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+...@arduino.cc.
To view this discussion on the web visit https://groups.google.com/a/arduino.cc/d/msgid/developers/3ae1d74f-ea86-46e2-a650-6a2896a5d3a0%40arduino.cc.

Martino Facchin

unread,
Aug 19, 2019, 5:31:50 AM8/19/19
to devel...@arduino.cc
I think that combining the suggestions from both Joe and Jim (Tom's grad student) could really help improving the situation.
The biggest issue right now seems to be the html nature of board/lib manager (and it's the most difficult thing to solve).
About your questions:
* the preference screen was born as code generated with an IDEA https://www.jetbrains.com/idea/ plugin that is no longer supported, so right now we just modify the code.
* there have been some little improvement over the years but no comprehensive effort
* I think small chunks are perfect, maybe one component at a time so testing should be easier

Feel free to mail me privately (with Tom in cc) if you need any further advice or let's keep it public if we want to involve more people :)

Thanks
M

kpe...@blinksoft.com

unread,
Aug 19, 2019, 6:21:21 AM8/19/19
to devel...@arduino.cc

Actually Joey already has those talking as soon as his pull request is put in.

Phillip Torrone

unread,
Aug 19, 2019, 9:11:05 PM8/19/19
to devel...@arduino.cc
we're interested as well tom, please send anything when ya can.

here's what we did today.... we are using the orbit reader 20, a braille output device to send characters output from python or circuitpython via the mu editor to the user. the user can read repl or print output immediately and directly in braille with the orbit reader 20 from orbit research. the goal/idea is, we have a real-time repl in python / serial with circuitpython / terminal on-device with braille output ... this is the start, using mu and showing what's going on with the pyportal:

video:
https://youtu.be/jJXZv6TZ4MA

blog post:
https://blog.adafruit.com/2019/08/19/python-repl-in-braille-circuitpython-mu-with-the-orbit-reader-20-braille-display-orbitresearch1-adafruit-circuitpython-circuitpython-braille-madewithmu/

will post more here as we get more working, the orbit 20 device is fantastic.

cheers,
pt

kpe...@blinksoft.com

unread,
Aug 19, 2019, 9:50:09 PM8/19/19
to devel...@arduino.cc
Very cool. I got my wife to describe the video.

Ken
--
You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+...@arduino.cc.
To view this discussion on the web visit https://groups.google.com/a/arduino.cc/d/msgid/developers/6F68555E-C55A-4CCC-B19F-0695EBD4D9B9%40adafruit.com.

jet townsend

unread,
Aug 22, 2019, 11:40:30 PM8/22/19
to devel...@arduino.cc
Hey ya'll,

This semester's "Making Things Interactive" is focused on accessibility
I'd love to help on this work. I'm demonstrating things like p5.js
accessibility, but showing students a version of the Arduino IDE for
people with vision limitations would be grand.

thx,

--jet


--
Jet Townsend
<http://www.flatline.net>
HF: KC3HSO
PGP: 0x335E5548 / 75DB 5C22 FD5D F33E B1FA D5BA B429 EA93 335E 5548
Reply all
Reply to author
Forward
0 new messages