Using IntelliJ with a screen reader

Answered

I've been using Jetbrains products for years now (starting ReSharper, but mostly recently mainly PyCharm, DataGrip and WebStorm, as well as a little on IntelliJ itself and Android Studio). I'm also losing my sight, so need to start preparing for when that happens.

So I'm wondering if there are any users on these forums that maybe have any experience with screen readers that can advise me.  Or even anyone from Jetbrains who can comment or point me at any resources that might help.

I mainly use a Mac and am trying to learn VoiceOver.  I posted about some problems I had using the toolbox app, and then PyCharm in the toolbox app forum (https://toolbox-support.jetbrains.com/hc/en-us/community/posts/360009750820-Using-Toolbox-App-with-OSX-VoiceOver-Catalina-) but didn't get a reply.  Since then I've read some things that suggest that VoiceOver is no good for coding.  I've also read that IntelliJ based IDEs aren't the best for screen readers.  Certainly my limited experience with the 2 together was not good, and the toolbox app appears completely unusable with VoiceOver as far as I can tell.

I'd like to keep coding on my Mac, and I'd like to keep using Jetbrains products, but if either is a no-go then I'd like to know sooner rather than later.  Any advice at all would be great.

1
111 comments

I see from YouTrack that the VoiceOver fixes in the toolbox app have been pushed back to v2.1

Is this all the fixes or just the finished article?

Is there an ETA for 2.1 as I am desperate to tidy up some of my apps.

0

Unfortunately, at the moment, we have no other major fixes or improvements.

However, recently we introduced an internal API, that allows announcing what happens on the screen. This will be a key for improving accessibility in the upcoming versions.

0

OK, thanks for the reply.  Is there an ETA for 2.1?

Am I right in thinking that both the Toolbox App and the ≠Fleet are examples of using the UI components you have developed for Kotlin?

What worries me a lot is that if these components are not accessible by default then it is encouraging a whole new suite of apps that will be entirely inaccessible to me and other screen reader users.

From my limited experience, most developers know absolutely nothing about accessibility, so if the building blocks they use don't make accessible apps by default then it is going to be making the overall situation far worse than it already is.

Are the fixes to these building blocks or are they having to be developed specifically for these apps?

Excuse me if I am entirely wrong - I've not looked maybe as deeply into it as I should.


I've not been able to try the new Fleet as I am stuck on an old version because the Toolbox App doesn't give me the option to upgrade and I can't uninstall it until v2.1 is released (presumably).  So it's possible it has progressed, but it was extremely alarming to find that literally nothing was usable at all.

 

0

I am getting quite frustrated with the many quirks that VoiceOver has with editing text, which I doubt are a Jetbrains problem.  Like how often the cursor behaviour randomly changes.  (E.g. up and down arrows decide to go left and right instead, or moving up a line stops reading the line and only the word and so on.  This happens all over the place, not just PyCharm.

 

So I wanted to try Windows again to see how it compares but I've noticed that the IntelliJ setting "Read Aloud" on notifications is Mac only.  Is there I love this feature so much - hearing the number of passing and failing tests in particular is so helpful.  Is there a reason why this isn't available on Windows?  Is it because it's easier to do on the Mac or is there an alternative I don't know about?

I'm using mostly NVDA at the moment, but I'm only just learning my way around.

0

@Ekaterina Valeeva do you have an ETA for the database editor being read by voiceover?  I am very happy with the current state of IntelliJ idea accessibility on Mac OS.  I use it daily and the DB editor is the only major issue for me at the moment as I have to copy text out of a column into a text editor everytime I want to read it which takes up a lot of time…. @JohnC  I don’t know what you mean when you say voiceover has issues navigating text?  I don’t experience this at all.  We can do another skype call if you like and you can show me/maybe I can help?

0
Avatar
Ekaterina Valeeva

John C "Read aloud" option was implemented only on mac for technical reasons and that option  has not been initially integrated with the screen reader - it works even with Screen reader support disabled in the IDE. 

Right now we are working on making notifications available for screen readers, this will be possible on all OSes. This feature is planned to be finished by 2023.2. 

0

@Ekaterina Valeeva - thank you so much, that sounds great.

0

I was dismayed to see that VoiceOver support in the toolbox app has now seemingly been pushed back into the void.  At least the ticket has gone back to the backlog which I'm sure isn't a good sign.

I would be interested to know what the state of toolbox 2.0 beta is wrt accessibility.  Is it the same as v1 or is it more broken?  I was reading about how it uses the proper Applications folder for apps which sounds useful, particularly for setting up activities etc.  But if it's not usable at all then I'll have to stsick to v1.

I also managed to get the latest version of Fleet installed (with sighted assistance) and noticed that it too is totally inaccessible still.

I've asked this before but not got a reply, are these 2 apps supposed to be showcasing Kotlin UI?  If so, does this mean that accessibility is difficult to achieve with these components?  I presume this isn't made clear to developers considering whether to use it or not?

 

The toolbox app is really not complicated from a UI point of view so it's very concerning that simple things like popup menus don't work at all.  I get that a text editor like Fleet is more tricky, but it's the basics that aren't working at all there.  It's still not even possible to get past the terms and conditions screen.

0
Unfortunately, I must confirm, that a11y support for Toolbox 2.0 is not planned for the next release. Please use Toolbox 1.2. More details are provided by Toolbox support in the related ticket https://youtrack.jetbrains.com/issue/TBX-5787/Unable-to-use-Toolbox-App-with-VoiceOver-OSX
0

A while ago, it was states that the v2 toolbox would fix the VoiceOver issues.  But you are now saying that it has gone backwards?  And not only that but there is no immediate plan to fix it?  The ticket does not really give any details other than saying it's been postponed.

 

I am very concerned with the direction Jetbrains is going.  Since this post started the accessibility of IntelliJ based IDEs has improved a great deal although there is still plenty of things that don't work properly.  My hope was that the next round of products would take these lessons into account as part of the initial design.  But it seems it is once again seen as an unimportant after thought.  I have been a user of Jetbrains IDEs for many years and since moving to a screen reader I had thought that maybe you guys were more invested in it than most but it seems like paying customers like myself are being left behind.

 

I would be very grateful if someone from Jetbrains could explain the issues.  Is it that your Kotlin UI components are not fit for purpose?  Maybe I'm being naive, but if I was building a Mac app, for example, and I was using the standard built-in UI components then I would expect my app to be accessible, at least at a basic level.  So why is it proving so difficult in these cases?

 

0

I've just upgraded PyCharm to 2023.2 and now I'm not getting anything spoken after running unit tests.  I see notifications now has an option to use the screen reader instead of the old being read aloud option.  This works great when I, say, do a Git Fetch.  But when I run unit tests, I get nothing.  I 

have the "Test execution finished" and "Test Results: Run" set to speak with medium priority.

If I also set "execution finished" to play sound then it does beep, but the success and failure sound the same.  Selecting play sound for the other doesn't seem to do anything.

I changed the test results one to high priority but it made no difference.

The notification controls seem really awkward to use with VoiceOver.  I seem to need to use a random combination of VO navigation and tabbing to get to the options.  And then go back and forwards a couple of times to get there.  To change the priority I moved to the control and hit down arrow, then pressed enter to select high but it seemed to keep medium priority selected.  I couldn't use VO keys to do this.  But when I went out and back again I think it was changed to high priority.

I remember a while back the option I needed to select for test results changed so maybe this is the case again.  But I can't find anything else that sounds suitable.

At any rate, I'm going to have to try to downgrade as this is an essential feature for me.

I'll try the toolbox 2 EAP as it does seem that it mgiht be usable with VoiceOver now, so at least that is good timing.

 

 

 

 

0

I installed the toolbox cap and can now get to PyCharm settings but I can't find a way to downgrade to 2023.1.  Am I missing something or can it not be done?

0

Sorry, I'd got in a flap.  It's not where I thought it was - it's in other versions not settings.  Sorry about that.

0

John C as far as I understand, after an update the PyCharm unit test stopped being read by VoiceOver.

Can you please describe a sequence of the steps you perform?

My example:
1. Create a class file with some function

2. Creare a unit test file with the tests for that function

3. Run the test using the command "Run file in Python Console" (`Cmd + Shift + A`, then type "Run file in Python Console")

The behavior of PyCharm 2023.1 was the same as 2023.2. Can you please explain your scenario, so I will be able to reproduce your issue?

0

I've tried this with a couple of Python projects.

I have a unit test configuration setup.

In 2023.1 I press Ctrl+R and after a couple of seconds it says something like "Tests ignored 1, passed 212."

If I repeat the same thing in PyCharm 2023.2 I can press Ctrl+R but I get no feedback.  Now I've put sound on the test execution notification it does go ping when finished, and if I navigate around I can find the test results, but I get no indication about whether the tests succeeded or failed without going looking.  As I do TDD I am running tests all the time so this is quite tedious.

In 2023.2 if I go to Git then Fetch I hear "Notification: Fetch Successful".  So I know in principal it should work.
 
If I want to reproduce it from scratch:

1. File > New Project.  I chose Pure Python.
2. In Project tool window, right click top project node and go New > Directory.  Type in "tests"
3. Right click "tests"then New > Python file.  Call it "test.[py"
4. Write a file inheriting from TestCase with one or two tests in it.
5. In Project window, right click "tests" and choose "Run pytests in tests"

In 2023.1 I hear "Tests Failed 1, Passed 1".  In 2023.2 I get nothing.

If I press Cmd+4 to open the run pane, then move right until I get to the table, then interact and go in I can hear that it did pass 1 and fail 1.  But that's a lot more button presses.

(As a side-note: On my old Mac it started to jump focus into the test results tree which was great, but on my newer Mac pressing Cmd+4 goes to "rerun failing tests" button and then I need to go from there which is a shame as I thought ther change in behaviour had been intentional)

For ref this is my test module:

from unittest import TestCase


class Tests(TestCase):
    def test_true(self):
        assert True

    def test_false(self):
        assert False

 

0

Sorry I accidentally pasted a load of comments in here instead of into You Track.

 

But while I'm here I might as well say that the toolbox v2 EAP works pretty well if you use tab, shift+tab, arrow up and down and enter.  Using VO keys it's a bit hit and miss.

 

The only showstopper I have is that I can't actually open any apps on my MacBook, but I can on my iMac.

 

(And no my experiments with NVDA haven't got very far yet.)

0

@Nadia Tarashkevich - did you see my reply above?  Did you manage to reproduce the issue?

0

I've played around a bit more with notifications and think the problem may be with the settings dialog and not the actual notifications.

On the Mac, the dialog is a bit of a mess to work through - I kept losing the screen reader option.  I ended up having to go forwards and backwards a bit before finding it.  Tab and shift+tab work better than VO modifier keys.

But i noticed if I changed the screen reader support for one notification type it appeared to change it for all of them.  I think maybe the option isn't properly connected to the selected item.

I also tried in Windows with NVDA and believe I was seeing the same behaviour.  It looked like screen reader announcements were enabled for everything, but also changing the option then was sticky for all the notification types.  (IE scrolling through the list showed whatever I had selected last).  I tried a few things like Git Fetch, running tests etc and didn't hear anything.

0

@John C, sadly, I was not able to reproduce your issue yet. For me, VoiceOver does not speak the test results both in 2023.1 and in 2023.2. I am trying to figure that out with Python team.

You wrote that you "noticed if I changed the screen reader support for one notification type, it appeared to change it for all of them.  I think maybe the option isn't properly connected to the selected item." Can you please share a screenshot or describe, what is the notification you changed, how you change it, and what is the other notification that is changed unintentionally? 

0

@Nadia Tarashkevich - 

I'll try to describe it...

Some of the options don't seem to have the option set, so I'll just go to the ones I'm wanting to use, but I think it happens for everything.

* Bring up PyCharm Settings and go to Notifications
* VO+right until you hear something like"list 1 item selected. .ignore plugin".  (Depending on what first notification is)
* Press VO+Shift+Down to interact with the list.  Sadly letter name navigation (or arrow keys) don't work so press VO+Down a million times until "Test execution finished"
*Press VO+Shift+Up to stop interacting
* Press Shift+Tab (or tab) until "With medium priority Announce with screen reader:"
*Press Tab to get back to the list
Now for me arrow keys work on the list, but it's a bit hit and miss.  Do VO+Shift+Down and then VO+Down if not.  But select the next one, "Test Results: Run"
* Press Shift+Tab to get to "With medium priority Announce with screen reader:"
* Now change the priority with arrow keys.  E.g. select High Priority.
Press tab to get back to the list
* Now go back to "Test execution finished" with up arrow or VO+Down+Down then VO+up
* Press Shift+Tab
* The It now says "With high priority Announce with screen reader:"

Maybe I've misunderstood how this dialog works, but I presume the option to determine what the screen reader does is based on each item in the list and isn't a global setting.  Otherwise how do I say that I want one thing spoken out and one not?

Does this make sense?

0

Hello! Here's a summary of the notification settings issues:

  • The "Announce with screen reader" combo box determines the priority of notifications announcements. When high priority is set, notifications will interrupt the current output, and with medium priority, notifications will be announced after the current output. This priority affects all notification types.
  • Each notification type can be configured separately using the "Popup type" combo box located after the notifications list. Screen readers won't announce notifications with "No popup" value, and notifications with "Balloon" or "Sticky Balloon" will be announced.
  • There is currently an issue with VoiceOver and combo boxes: when a combo box value is changed, VoiceOver might still read the old value, which also affects the "Popup type" combo box. When changing the popup type, it's better to set a new value even if VoiceOver reads it as the current value. This bug is targeted to be fixed in the 2023.3 release and can be tracked here: https://youtrack.jetbrains.com/issue/IDEA-317420/Accessibility-Voice-Over-on-macOS-reads-old-FontComboBox-value-after-change
  • Regarding the problem with the notifications list not getting focused when using VO navigation, this is tracked under the following issue in YouTrack: https://youtrack.jetbrains.com/issue/IDEA-332346/Keyboard-focus-doesnt-follow-VoiceOver-cursor-to-JBList-when-using-VoiceOver-navigation. As a workaround, the list can be focused by Tab, or using VO+Space when VoiceOver cursor is on it. After that, it will be possible to use search and arrows.

We are looking into improving the accessibility of this dialog in future releases.

0

Please sign in to leave a comment.