f4exb / sdrangel

SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube
GNU General Public License v3.0
2.83k stars 430 forks source link

Accessibility of SDRangel for screen reader users #1672

Open arfy8820 opened 1 year ago

arfy8820 commented 1 year ago

Hello. First, I'd like to say I'm fairly new to the world of SdR, but loving it so far. as a long-time radio enthusiast. I've also been on the hunt for an accessible and usable SDR software sollution that's updated, and this is the most promising so far on all counts. However, I've noticed some difficulties, but first, I have to congratulate you on the following.

Now, for the improvements that could be made.

In summary, the accessibility of the program for blind/visually impaired users using a screen reader is very promising, although some tweaks could be made. My knowledge of c++ is limited, but I can hopefully offer pointers on how to make the program even more accessible using the existing QT framework, or, create an alternative interface using the web API, which is also very impressive!

srcejon commented 1 year ago

The biggy for me, it seems hard to adjust the frequency using just the keyboard, unless I haven't worked out something. This is the one control that doesn't seem to be a standard slider or input field, etc. I can tab to the control that, with my screen access sollution says something like "center frequency" but it seems I can't actually adjust it. I've tried all combos of the arrow keys, typing, or just hitting space/enter to try get something to happen.

Which SDR device is this with and what OS? I just tried with the RTL SDR device on Windows, and I can tab to the centre frequency control and enter a frequency using digit keys on the keyboad OK (and use left/right cursor keys to move which digit to change - an up/down to increase or decrease current digit which is underlined).

From my limited tests I've been able to carry out, you can't adjust the center frequency, instead, you adjust the offset frequency in the demodulator.

Correct.

arfy8820 commented 1 year ago

Thanks for the reply. I'll try again with a radio live on air, this was just testing with IQ files, as I'm waiting for an antenna to come in to put my SDR on air. I'll try adjusting the frequency with the demodulator, even so, the screen reader doesn't announce which digit is being adjusted, as far as I know. Will test more and let you know.

arfy8820 commented 1 year ago

Update. this works a treat! At least in terms of adjusting frequency while playing back recorded IQ files. However, as previously noted, the screen reader gives no indication of which digit is being adjusted, or even what the frequency is when you land on the control. This seems to apply no matter where this control shows up. Center frequency, offset frequency, or in the spectrum markers dialog.

srcejon commented 1 year ago

With this patch, https://github.com/f4exb/sdrangel/pull/1675, I've added some accessibility support for the ValueDial widgets (used for centre frequency and frequency offset), so screen readers should be able to say what the frequency is when the widget gets focus and when the value is adjusted. Tested with Windows Narrator.

Note that while testing this, I noticed that QDials don't seem to work (no value is read) - this appears to be a Qt bug, rather than SDRangel: https://bugreports.qt.io/browse/QTBUG-86038

arfy8820 commented 1 year ago

Thank you! First, for caring and taking the time to patch this (I'm setting up dev tools now to test this), and second, for knowing what needed to be looked into. I only had a vague idea of knowing that something would need to be done to tell QT about the custom control for the accessibility layer. I'll close this issue and report further things on the new thread you've created for this patch.

arfy8820 commented 1 year ago

Thanks for working on this! For taking the time and caring, and also knowing where to look to make changes at the accessibility level. Now installing dev tools and will test the patch.

arfy8820 commented 1 year ago

Ok, reopened this issue for further discussion. I'm still a little noob at github sometimes, even though I've got my own repositories on here! dough!

srcejon commented 1 year ago

and also knowing where to look to make changes at the accessibility level.

Had no idea to be honest!

One thing I did discover while looking at this, that you might be able to help improve, is the name & description the screen reader gives when any widget gets focus. All of the GUI's have a .ui file that you can load in Qt Creator. When a widget is selected, two of the properties listed are:

accessibleName
accessibleDescription

These are all currently empty. It might help filling some of these in, to something you find more useful, as often the tool tips are used instead, which can be a little verbose (Great for tool tips, but possibly not ideal for this).

arfy8820 commented 1 year ago

Good idea! Although a lot are just fine as is, but this is good to know. Related, the latest QT installer is wanting to give me version 6.5, is this ok, or should I try track down the older 5.15.2 version you mention? Might be worth seeing if accessibility bugs like the one you found for QDial is fixed. although I know going from one major version to another can be a pain in the ...

srcejon commented 1 year ago

I wouldn't recommend Qt 6.5 for now - it doesn't have all the functionality of 5.x. You should be able to install 5.12.2 from the same installer.

arfy8820 commented 1 year ago

Got it! Had to poke around in the custom settings. Let the show continue. :)

arfy8820 commented 1 year ago

Status update. I'm impressed! The accessibility patch is working as advertised, I can navigate and read the frequency values as they change. The next tweak to make is to announce the selected digit (or plus/minus sign for ValueDialZ widgets), as the left and right cursor keys are used. I'll also give QT Creator a look, but often these large IDE type programs aren't very accessible for us. Another simple tweak that can be made for a lot of controls is to add shortcut keys. For example, the "open" button in the file device window could have O as its shortcut. You can simply add an & sign in front of the letter that you want for the shortcut on the button's text.