Accessibility: Unable to interact with Sliders on Windows 10 with default narrator

Hi there,

I am currently working on my code to support the new accessibility features.

On MacOs, when dealing with a Slider I can press ctrl+opt+shit+down to interact with the slider and change its value with ctrl+opt+up/down. However Juce Sliders don’t seem to be supported by narrator on Windows (normal Windows slider values can be changed by using left/right once focused). Is there a solution to this problem?

Also, accessibility messages dispatched with AccessibilityHandler::postAnnouncement() seem to be read by two separate narrators at once also on Windows 10. I haven’t installed any accessbility software on top of the default Windows Narrator.

I am currently using JUCE 6.1.4


For the first issue, overriding keyPressed () within my custom slider class with a +/- shortcut function followed by a message containing the new slider value with AccessibilityHandler::postAnnouncement () provided a similar experience as on MacOs.

For the second issue it seems that, with Narrator enabled, a male voice is in charge of saying the focused component’s name and status while a female voice says whatever is announced with AccessibilityHandler::postAnnouncement (). Once narrator gets deactivated the female voice persists with the announcements.

Hi fravezAt,

Thanks for reporting this. Just to make sure that we are on the same page I’ll mention that Sliders seem to be supported in scan mode (Narrator + spacebar in my case).

I can see though that when outside scan mode there is no way to modify their value, whereas native sliders will be changed. Is this what you’d like to see improved?

I will take a further look into this.

Hi attila,

Scan mode seems to be fixing most of the issues I encountered with Narrator on Windows, however, the problems I previously listed persist with alternative screen readers like NVDA.

It would be nice to have Narrator to work out of the box in the same way as VoiceOver but I understand this might require extra time and effort. I think making sure Narrator is in scan mode is an acceptable solution for the time being.


Hi attila,

When trying to access the Demo Runner’s SystemTrayIcon object with VoiceOver by pressing VO + M (twice), the system tray icon fails to show its popUp menu when pressing VO + spacebar. Is this a known issue? I haven’t tested the issue on Windows. Thanks

Indeed, the SystemTrayIcon doesn’t seem to be properly accessible on MacOS, thanks for bringing this to our attention. We’ll try to address it soon.

1 Like

Hi Attila, do you have any updates on this? Thanks :slightly_smiling_face:

Hi fravezAt, for the sliders yes, a change is arriving shortly, which will allow users to control sliders with the arrow keys, similarly to how native Windows controls work.

On the SystemTrayIcon front, I have no improvements at this point.

The mentioned change is out on develop. Sliders that can accept keyboard focus can now be controlled with the arrow keys similarly to native sliders on Windows.

1 Like

I wanted to share a temporary workaround to get the SystemTrayIcon to work with accessibility on MacOs:

in JUCE/modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp line 137 change the condition to:
const bool isLeft = (type == NSEventTypeLeftMouseDown || type == 0);

All this does is to trigger the SystemTrayIcon opening with an Accessibility event (unlisted under NSEventType hence the 0)

This will work only when the PopupMenu is a native MacOs one rather than a custom component.

1 Like