Hello everyone! As the title says, I finally constructed the accessibility info for all the elements and connected the screen reader. 🙂
1. Changes in design
There were two main changes in the design that I presented last week. First of all, I removed the ElementAccessibilityInfo class and implemented a virtual method in Element, named accessibleInfo that returns the necessary information as a QString. Also, I removed the signal from Element class an replaced it with a call to ScoreAccessibility::currentInfoChanged in the MuseScore::endCmd function. Then endCmd methos is called at the end of every action performed in the score so after every action the user knows what has changed.
2. Screen Reader
2.1 What I’ve done
– Like I’ve said, I’ve implemented the accessibleInfo method for all classes that represent score elements
– I’ve implemented the QAccessibleInterface for ScoreView.
There are a few glitches. For some reason that I don’t know yet, the screen-reader skips some elements for specific commands.
Some examples with the rate of success in feedback:
– next-chord (Right arrow, LeftArrow) ~50%
– altUp/altDown (Alt+Up, Alt+Down) ~90%
– pitchUp/pitchDown (Up arrow, DownArrow) ~100%
2.3 What else needs to be done
– For now, the mechanism works for only one score view, in the sense that if you have two scoreviews open and hover with the mouse from one to the other, you will not receive info about one of them.
I’m very excited to have finally made this work, this was a very important part of my project. This, along with the next element command that I also implemented, will allow blind users to read a score. 🙂