• Status Closed
  • Percent Complete
  • Task Type Bugs
  • Category Rbutil
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version Version 3.2
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by Domonoky - 2009-05-12
Last edited by bluebrother - 2011-06-05

FS#10205 - Acessibility issues in rbutil

I want to collect and try to fix all known acessibility issues in rbutil here.
So if you get new information, please leave a comment here.

Currently known Issues:
1. All Tabs are not voiced correctly. (no titles, no voice on changes)

  1. this is a Qt Bug, known since a long time, but still not fixed.

2. SpinBox and Combobox dont voice its contents on changes.

  1. This is also a Qt bug, the Qt Code misses the calls to updateAccessibilty() on changes. ( i just submitted it to Qt Bugtracker)
  2. This could be fixed in rbutil itself, if we make this call ourself after the spinbox/combobox changed. But needs us to fix every comboxbox/spinbox in rbutil itself

- Create Voicefile Dialog:
3. No titles for Language selection and the wavtrim option.

  1. This is because of the way Qt and the accessibilty layer handles labels. They are only spoken if the describing label is a buddy of the control)
  2. Could perhaps be solved by some reorganisation.

- Encoder/TTS configuration dialog (enc/tts specific):
4. The title of the checkbox isnt voiced.

Closed by  bluebrother
2011-06-05 11:22
Reason for closing:  Out of Date
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407

No activity since two years. Rockbox Utility built with a current version of Qt seems to work fairly well as far as I can see using NVDA. If there are still issues to deal with please open a new task.

This patch should solve issue 2. (no voice on changes on spinbox and combobox).

It does this by checking regularly if there are any new QComboBox,QSpinBox or QDoubleSpinBox widgets. If there are any, it connects a slot to the signal which indicates changes. This Slot then calls the necessary updateAccessibility(..) (which is missing in Qt code) for this widget.
If there are any other widgets which dont speak on changes, they could be fixed the same way.

Using the version of the rockbox utility that bluebrother made available to me,
The following combo box titles are still not spoken by jaws. Under tts configuration
The box that allows you to select what voice language you want to generate.

From there, press tab once and you get to the empty combo box its title is not read.

Next press tab three times and you get to a blank edit field that doesn’t appear to contain any text, its title is not read out.

On the manual tab that gives access to your devices manual, I can download manuals fine, however no matter what I press, I can’t click the link to open an on line version of the manual.

New patch.

This should now solve issue 1 and 2. All tested with narrator.

For the TabBars it uses the same technique as for spinboxes, but additionally sets the accessiblename to the current title.
I also had to use another Accessible event for this (focus event) or else narrator wouldnt pick it up. As a side effect this moves the mouse to the middle of the Tab (at least with narrator). Thats why i had to remove the mouse-over hints.

Edit: all urls should work, if you press “enter” on them.

new Patch:
This now solves 1 & 2, and additionally sets the accessiblename to all widgets in the EncTtsConfiguration Dialog. This makes them speak their title (solves 4 and what alex reported).
All tested with narrator.

With the set of patches applied from this task, some problems have been
solved, and new ones created.
The biggest problem which has been created, is that the menu system is now
completely inaccessible.
If you press alt to access the menus, jaws is able to read the menu bar as
you move along it items such as file and actions. However if you go into a
menu, jaws will read you the first item, and then if you press up or down it
won’t read anything else, you get no indication of changing the menu

Several problems have been solved now, the titles on all tabs appear to be
being read correctly, but there are still problems with the titles of some
combo boxes and spin boxes. Which I will detail below.

If you go into the option called create voice files, but don’t click the
button to change generation settings, the language combo box title is not
read, you simply get the first language in the list read.
The next problem we encounter is if we change the synthesizer being used to
generate the voice. The title of the combo box listing them is read, and if
you go up and down in it as your selection changes it is read.
However if you then click the button to configure tts, jaws does not
announce the title of the synthesizer you have selected to use, instead even
if your selection says sapi, when you select configure tts, jaws reads the
title of the dialogue as espeak configuration.
However under tts configuration, the title of the language selection box is
read correctly with jaws, and I am able to navigate it.
Other controls in the configure tts dialogue are voiced correctly, these are
the edit field called options, the voice combo box, and the speed spin box.
All controls in the configure encoder dialogue seem to be voiced correctly,
at least there titles are read.
However, none of the spin boxes are read when you make changes to them, you
have to still tab away and back to them. So the titles of the spin boxes are
read, but not changes.
There are still some things that are not being voiced, one tab title I can’t
understand at all with jaws, this is still under the generation settings
change dialogue, the tab title I can’t understand is located between the tts
and encoder settings, and the tab called language.

On the tab called language, I am seeing a single edit field, who’s title is
not being read.
Back in the main create voice files dialogue, there is one spin box who’s
title is still not being read, to find it, if you place yourself on the
cancel button and press tab once you will find it, its default value is 500.

There is also one edit field who’s title is not being read under the install
talk files dialogue. To find it, place yourself on the cancel button, press
tab once and you will find it, if you press tab again from it you find
yourself on the brows button.
Just as a general note, its not a good idea to rely on narrator for your
accessibility tests, narrator functions very differently to a screen reader,
and it is not intended to be one. There are a lot of things narrator can’t
read that jaws can, so narrator will not give you accurate test results.

I have been doing more tests with the current patches from this task applied, I decided to try to generate a voice using the utility. I set what I thought were reasonable values in the utility, and selected ok. An error message came up saying configuration error. However jaws was not able to read me the error message, so I don’t no what wasn’t set correctly, all jaws read was the title of the dialogue configuration error.

New Problem list:
1. Menus dont speak correktly.
- I havent changes anything on the menu, so its strange that they wont work with this patch. Did they really work with 1.2.1 ? But i also have noticed some Menu strangeness with narrator.
2. Spinbox still dont voice on changes.
- It works with narrator, but jaws behaves probably different.
3. Some Tabs speak strange because of accelerator keys in the title (ie &Language )
- the removeing of this accellerators needs improving.
4. Error messages dont speak its content.
- To be investigated…

About Jaws vs narrator:
Jaws is a expensive piece of Software, and the demo only runs one hour, then you have to reboot. So its much more easier to test with narrator, but ofcourse that wont catch everything. So sometime, when i find the time for it, will have todo a testing session with jaws :-)

Everything else should be addressed by the attached patch. (if not, please comment)

Yes menus did really work with 1.2.1, they also worked with the first binary that was compiled for me, its just this last time they didn’t work. I am happy to test patch number 4, but please could you compile a new binary for me? unless it would be easy for me to set up an environment to compile under windows as we briefly talked about on the dev list.

I did now test with Jaws and also found a few Tools (AccExplorer and AccEvent) to better debug those accessibility issues.

What i can see from AccEvent is, that QSpinBox and QMenu somehow sends additional accessibility Events without any Name, after the correct Events.
This seems to confuse JAWS so it doesnt speak anymore.

For QMenu this seems to be changed in the newest Qt Version. Thats why rbutil1.2.1 and the first patched binary have working Menus (Qt. 4.5.1) and the later binarys wont work (Qt 4.5.0).
If this is correct, the menu in rbutil1.2 also shouldnt work. (alex could you test this?).

This could be fixed in rbutil itself, if we do a additional delay before sending our own Accessibility Events. But this results in very ugly Code, but works. (Tested with QMenu and Jaws).
It would be really better to fix this in Qt, but its not easy.

Hi. I am happy to test,
so what you are saying is you want me to test the previous rbutil version that was released before 1.2.1 version 1.2?
If this is correct, can you please advise where I can download it? I hope I understand what you want me to do correctly.

Yes, please make a short test with 1.2 (see here

More research:
QAbstractSpinBox uses a QLineEdit as its display. This QLineEdit is fully accessible, and emits its own updateAccessibility() event, after it informed others about changes with its textChanged() signal.
The accessibility code for QAbstractSpinBox handles the Spinbox completely and hides the QLineEdit from the accessibility Layer. So if we use up/down on a spinbox, we cause a updateAccessibility Event from a Object the accessibility Layer doesnt know.
So this is very difficult to fix, if we change QLineEdit, other LineEdits will stop working, emitting a additional updateAccessibility() event on changes in the QAbstractSpinBox wont help, because it gets informed about changes, before the QLineEdit informs the Accessibility Layer.

I think the same applies to the menus.

I downloaded version 1.2, and you are right, in this version the menus are not accessible. Jaws reads the first item when you move into a menu, but does not read anything when you arrow up and down.

I think it would be a good thing to bring this to the appropriate Qt mailing list. Domonoky, have you already posted there? We should really get things fixed upstream instead of working around them.

No i havent posted it on the qt mailing list, good idea.
But i reported the missing updateAccessibility to their Bugtracker.

I posted this now to the Qt mailing list, but no reaction for now.

I also had a try at patching those fixes into Qt, but i failed for anything complexer then the QCombobox issue.
So we either have to use a Workaround, wait for Trolltech/Nokia, or maybe someone else can try to patch this into Qt.

I also tried to improve the Workaround, and found a slightly better way. (see attached patch).
Unfortunatly till now i wasnt able to find a fix for the Spinbox which works in JAWS.

So open issues:
- QSpinBox/QDoublespinBox dont speak correctly
- Error messages dont speak its Text (only title).

I commited the non-hacky part of this patch.
This patch contains now only the hacky rest :-)

The Issues with Spinboxes and Error messages are still unsolved.

patwa commented on 2009-07-04 13:54


Whereas I think te work done for JAWS support is great, I’d like to suggest and would be keen to help with supporting the Dolphin line of screen readers. As Supernova, their flagship product also supports magnifications, this is often used by those with some sight but who also rely on speech feedback. Further, unlike with JAWS, Dolphin offer 30 day unrestricted demos without the time limit after which the system must be rebooted. Download from I use this product myself and would love to help where I cxn. Maybe you could give it your cosideration to really make rbutil and therefore rockbox accessible to a wider community.

Its all very well saying that, but they need to know exactly what works and what doesn’t, look at my comments above for example I explain in great detail the current issues.
also, a lot of the problems are not the rockbox devs fault, but bugs in the current version of qt cause many accessibility issues.
For example, what are the differences in terms of accessibility between jaws and super nova? are some things read by one product that the other can’t read?
Unfortunately though a lot of the problems I believe can only be addressed by bugs being fixed in the current qt version, though it has been suggested that maybe compiling rbutil with an earlier version of qt might be an option.

patwa commented on 2009-07-04 15:06

You are of course quite right, however I was merely suggesting a possible add-on to support development. Also note I indicated my interest in helping this, so naturally I would provide my own input to help developers where possible by identifying problems when using Supernova with rbutil. I’m new to assisting with this project so apologise for any faux pas on my part - it would of course depend on whether developers felt that this was a worthwhile line of exploration in addition to the many other issues they are working on.

I understand there may be foundation related issues that need to be resolved first, and I was in no way suggesting this was a one-stop-fix issue that would not require careful thought and much effort.

I’d be interested to hear from developers and others who may be interested in my thought before moving forward and having preliminary feedback reports submitted by myself. I freely admit I don’t have the technical knowhow to do this on my own, hence why I indicated I’d play a supporting role in driving this forward. I was also in no way meaning to imply that it was the developers fault that Supernova does not work with rbutil - but at the same time it does take two to tango.

I think it would be a very worthwhile project getting rbutil functioning with as many screen readers as possible.
Though with luck, once the underlying issues with qt are addressed, it might not need much or any work for it to be accessible with other screen readers, though of course I would be surprised if it didn’t need some work.

I just reviewed my earlier comment, and on reflection I think it sounded like I was having a go at you or something, if that is how it appeared then sorry, it wasn’t my intention.

Unfortunately when it comes to rbutil most blind people who use rockbox simply complain it doesn’t work and haven’t given the devs enough information to fix it.

Its only since I started giving very detailed feedback they know about the problems we face when using it.

I think it would probably be good if you give feedback about what does and doesn’t work with super nova, perhaps there are issues that can be addressed now before qt is fixed.

the more detail you can give the better though, for example if a particular box title doesn’t read you can describe its location by saying you need to press tab so many times from such and such a control who’s title does read for example the cancel button in order to find it. The same is true if values in boxes are not read when they change.

I should imagine accessibility issues will be broadly similar between super nova and jfw.


Available keyboard shortcuts


Task Details

Task Editing