Jaws screen reader #15840

Closed
opened 2026-01-31 04:49:59 +00:00 by claunia · 29 comments
Owner

Originally created by @gomaltao on GitHub (Nov 11, 2021).

Originally assigned to: @carlos-zamora on GitHub.

Windows Terminal seems to be totally inaccessible with the JAWS screen reader.

Originally created by @gomaltao on GitHub (Nov 11, 2021). Originally assigned to: @carlos-zamora on GitHub. Windows Terminal seems to be totally inaccessible with the JAWS screen reader.
Author
Owner

@zadjii-msft commented on GitHub (Nov 11, 2021):

Which version of the Terminal? Which OS version? Which JAWS version? I'm pretty sure JAWS is supposed to work... /cc @carlos-zamora

@zadjii-msft commented on GitHub (Nov 11, 2021): Which version of the Terminal? Which OS version? Which JAWS version? I'm pretty sure JAWS is supposed to work... /cc @carlos-zamora
Author
Owner

@carlos-zamora commented on GitHub (Nov 11, 2021):

@codeofdusk I know you use NVDA a lot, have you tried using JAWS? Or have you heard from any JAWS users trying to use Windows Terminal at all?

@carlos-zamora commented on GitHub (Nov 11, 2021): @codeofdusk I know you use NVDA a lot, have you tried using JAWS? Or have you heard from any JAWS users trying to use Windows Terminal at all?
Author
Owner

@codeofdusk commented on GitHub (Nov 11, 2021):

Sorry, no.

@grahamwp What happens if you try and run wt from the run dialog on your machine? Is the opened terminal accessible at all?

@codeofdusk commented on GitHub (Nov 11, 2021): Sorry, no. @grahamwp What happens if you try and run wt from the run dialog on your machine? Is the opened terminal accessible at all?
Author
Owner

@gomaltao commented on GitHub (Nov 11, 2021):

Windows Terminal 1.11.2921.0
OS Name: Microsoft Windows 10 Pro
OS Version: 10.0.19042 N/A Build 19042
JAWS Version 2020.2012.13 ILM

I have tried to use WT since the first beta without any success with JAWS.

@gomaltao commented on GitHub (Nov 11, 2021): Windows Terminal 1.11.2921.0 OS Name: Microsoft Windows 10 Pro OS Version: 10.0.19042 N/A Build 19042 JAWS Version 2020.2012.13 ILM I have tried to use WT since the first beta without any success with JAWS.
Author
Owner

@gomaltao commented on GitHub (Nov 11, 2021):

I closed the issue by misstake.

@gomaltao commented on GitHub (Nov 11, 2021): I closed the issue by misstake.
Author
Owner

@Grahamwp commented on GitHub (Nov 12, 2021):

I can confirm this is the case with Windows Terminal version 1.11.2921.0and the latest version of JAWS, 2022.2110.36.400.

@Grahamwp commented on GitHub (Nov 12, 2021): I can confirm this is the case with Windows Terminal version 1.11.2921.0and the latest version of JAWS, 2022.2110.36.400.
Author
Owner

@zadjii-msft commented on GitHub (Nov 15, 2021):

I'm kinda shocked that JAWS doesn't work at all. We should fix that. Does the vintage console host work? If it does, then it shouldn't be too hard to find the piece of console code we're missing in the Terminal that makes JAWS work.

@zadjii-msft commented on GitHub (Nov 15, 2021): I'm kinda shocked that JAWS doesn't work at all. We should fix that. Does the vintage console host work? If it does, then it shouldn't be _too_ hard to find the piece of console code we're missing in the Terminal that makes JAWS work.
Author
Owner

@codeofdusk commented on GitHub (Nov 15, 2021):

This doesn't surprise me as i highly suspect that JAWS uses the legacy APIs. (only Narrator uses UIA by default at this point, though I'm pushing for NV Access to do so in builds of conhost with the #6986 fix). NVDA exclusively uses UIA in wt though.

@codeofdusk commented on GitHub (Nov 15, 2021): This doesn't surprise me as i highly suspect that JAWS uses the legacy APIs. (only Narrator uses UIA by default at this point, though I'm pushing for NV Access to do so in builds of conhost with the #6986 fix). NVDA exclusively uses UIA in wt though.
Author
Owner

@Grahamwp commented on GitHub (Nov 16, 2021):

Late reply (I tried to reply by email earlier but it didn't work): Assuming you mean cmd.exe, yes, JAWS does work in that. It also workes in Power Shell.

@Grahamwp commented on GitHub (Nov 16, 2021): Late reply (I tried to reply by email earlier but it didn't work): Assuming you mean cmd.exe, yes, JAWS does work in that. It also workes in Power Shell.
Author
Owner

@zadjii-msft commented on GitHub (Nov 16, 2021):

@codeofdusk Is there any way for us to confirm your suspicion, that they use the legacy APIs? It might be time for us to encourage them to move on to the newer APIs 😄 I'm not sure they have a public issue tracker anywhere...

@zadjii-msft commented on GitHub (Nov 16, 2021): @codeofdusk Is there any way for us to confirm your suspicion, that they use the legacy APIs? It might be time for us to encourage them to move on to the newer APIs 😄 I'm not sure they have a public issue tracker anywhere...
Author
Owner

@gomaltao commented on GitHub (Nov 16, 2021):

As a senior .net developer I need to work in powershell a lot. Windows terminal would improve my working conditions a lot. I would really like to know where the problem is. JAWS has problem with announcing breakpoints in Visual Studio for several generations of VS ide. Again it would be good to know if the problem is with the screen reader or VS ide.

@gomaltao commented on GitHub (Nov 16, 2021): As a senior .net developer I need to work in powershell a lot. Windows terminal would improve my working conditions a lot. I would really like to know where the problem is. JAWS has problem with announcing breakpoints in Visual Studio for several generations of VS ide. Again it would be good to know if the problem is with the screen reader or VS ide.
Author
Owner

@codeofdusk commented on GitHub (Nov 16, 2021):

Maybe @carlos-zamora could do a build of conhost that shows dummy text in the UIA buffer in place of the actual text. If we get his text then they're using UIA, else they're using legacy. (for whatever it's worth I highly doubt they're using UIA for much if at all).

I haven't been an active JAWS user for about ten years, but @Grahamwp can try builds out for us and report back. I also suspect that they won't be amenable to making changes quickly if at all.

@codeofdusk commented on GitHub (Nov 16, 2021): Maybe @carlos-zamora could do a build of conhost that shows dummy text in the UIA buffer in place of the actual text. If we get his text then they're using UIA, else they're using legacy. (for whatever it's worth I highly doubt they're using UIA for much if at all). I haven't been an active JAWS user for about ten years, but @Grahamwp can try builds out for us and report back. I also suspect that they won't be amenable to making changes quickly if at all.
Author
Owner

@carlos-zamora commented on GitHub (Nov 16, 2021):

Maybe @carlos-zamora could do a build of conhost...

This issue is tracking Windows Terminal, not conhost. Like you said earlier, since Windows Terminal only has UIA (as in, there's no legacy API option), a screen reader needs to use UIA here.

When I was developing Windows Terminal's UIA patterns, NVDA and Narrator both "worked". Like, they were testable and I could clearly see when I made a mistake. I'd be surprised if JAWS saw Windows Terminal and decided to do nothing (because in its eyes, it would see that it's a random app that exposes UIA, and I assume like any screen reader, it would leverage that and try to use it).

I'll get in contact with JAWS and see what we can do, but I'm pretty sure the issue here is on their end. I'll report back when I get more news 🙂

@carlos-zamora commented on GitHub (Nov 16, 2021): > Maybe @carlos-zamora could do a build of conhost... This issue is tracking Windows Terminal, not conhost. Like you said earlier, since Windows Terminal _only_ has UIA (as in, there's no legacy API option), a screen reader needs to use UIA here. When I was developing Windows Terminal's UIA patterns, NVDA and Narrator both "worked". Like, they were testable and I could clearly see when I made a mistake. I'd be surprised if JAWS saw Windows Terminal and decided to do nothing (because in its eyes, it would see that it's a random app that exposes UIA, and I assume like any screen reader, it would leverage that and try to use it). I'll get in contact with JAWS and see what we can do, but I'm pretty sure the issue here is on their end. I'll report back when I get more news 🙂
Author
Owner

@DHowett commented on GitHub (Nov 16, 2021):

@carlos-zamora I think @codeofdusk's suggestion is to make a "trojan horse" build of conhost that gives different answers for Legacy and Modern accessibility. Since it's our only product that currently supports both forms of accessibility, it would be an easy conversion. We could use that "trojan horse" build to figure out which accessibility implementation JAWS is using.

@DHowett commented on GitHub (Nov 16, 2021): @carlos-zamora I think @codeofdusk's suggestion is to make a "trojan horse" build of conhost that gives different answers for Legacy and Modern accessibility. Since it's our only product that currently supports _both_ forms of accessibility, it would be an easy conversion. We could use that "trojan horse" build to figure out which accessibility implementation JAWS is using.
Author
Owner

@carlos-zamora commented on GitHub (Nov 16, 2021):

Ok. Here's a version where any time you get text from the buffer, it'll be "Fake Data from UIA".
ConHost - UIA with fake data.zip

@carlos-zamora commented on GitHub (Nov 16, 2021): Ok. Here's a version where any time you get text from the buffer, it'll be "Fake Data from UIA". [ConHost - UIA with fake data.zip](https://github.com/microsoft/terminal/files/7549989/ConHost.-.UIA.with.fake.data.zip)
Author
Owner

@codeofdusk commented on GitHub (Nov 16, 2021):

@carlos-zamora that's a zipped lnk pointing at D:\Terminal\bin\x64\Release\OpenConsole.exe.

@codeofdusk commented on GitHub (Nov 16, 2021): @carlos-zamora that's a zipped lnk pointing at `D:\Terminal\bin\x64\Release\OpenConsole.exe`.
Author
Owner

@carlos-zamora commented on GitHub (Nov 16, 2021):

Derp... here's the actual exe.
ConHost - UIA with fake data.zip

@carlos-zamora commented on GitHub (Nov 16, 2021): Derp... here's the actual exe. [ConHost - UIA with fake data.zip](https://github.com/microsoft/terminal/files/7550191/ConHost.-.UIA.with.fake.data.zip)
Author
Owner

@codeofdusk commented on GitHub (Nov 16, 2021):

For some reason, Windows Defender is flagging that file and I can't figure out how to allow it.

@codeofdusk commented on GitHub (Nov 16, 2021): For some reason, Windows Defender is flagging that file and I can't figure out how to allow it.
Author
Owner

@carlos-zamora commented on GitHub (Nov 16, 2021):

Ok, try this one then. It's signed.
conhost-x64-release.zip

@carlos-zamora commented on GitHub (Nov 16, 2021): Ok, try this one then. It's signed. [conhost-x64-release.zip](https://github.com/microsoft/terminal/files/7550391/conhost-x64-release.zip)
Author
Owner

@codeofdusk commented on GitHub (Nov 16, 2021):

Thanks @carlos-zamora .

@Grahamwp please do the following on your machine, ping me on Discord if you run into trouble:

  1. Download the last build from @carlos-zamora above (this one).
  2. Unzip and run OpenConsole.exe.
  3. Try to review the window by line.

Do you get normal output (Microsoft Windows blahblah and a prompt) or "fake data from UIA" over and over again? Or something else?

@codeofdusk commented on GitHub (Nov 16, 2021): Thanks @carlos-zamora . @Grahamwp please do the following on your machine, ping me on Discord if you run into trouble: 1. Download the last build from @carlos-zamora above ([this one](https://github.com/microsoft/terminal/files/7550391/conhost-x64-release.zip)). 2. Unzip and run `OpenConsole.exe`. 3. Try to review the window by line. Do you get normal output (Microsoft Windows blahblah and a prompt) or "fake data from UIA" over and over again? Or something else?
Author
Owner

@codeofdusk commented on GitHub (Nov 16, 2021):

Also try autoread and the virtual buffer if JAWS still has that.

@codeofdusk commented on GitHub (Nov 16, 2021): Also try autoread and the virtual buffer if JAWS still has that.
Author
Owner

@Grahamwp commented on GitHub (Nov 17, 2021):

I downloaded the file and I just get the normal Windows console output, whether I use autoread, review the window with the JAWS cursor, or try the virtual buffer.

@Grahamwp commented on GitHub (Nov 17, 2021): I downloaded the file and I just get the normal Windows console output, whether I use autoread, review the window with the JAWS cursor, or try the virtual buffer.
Author
Owner

@codeofdusk commented on GitHub (Nov 17, 2021):

As expected, they aren't using UIA at all in consoles, so supporting terminal will be a big task.

@codeofdusk commented on GitHub (Nov 17, 2021): As expected, they aren't using UIA *at all* in consoles, so supporting terminal will be a big task.
Author
Owner

@zadjii-msft commented on GitHub (Nov 17, 2021):

Well this is good to have some confirmation and get this loop closed! JAWS is using the legacy accessibility APIs, and they're going to need to move to the modern ones to make the Terminal work with JAWS. UIA has been around for some 15 years now, so I'm a little surprised they haven't added support by now.

Thanks all!

notes found while writing: Microsoft Active Accessibility and UI Automation Compared

@zadjii-msft commented on GitHub (Nov 17, 2021): Well this is good to have some confirmation and get this loop closed! JAWS is using the legacy accessibility APIs, and they're going to need to move to the modern ones to make the Terminal work with JAWS. UIA has been around for some [15 years now](https://en.wikipedia.org/wiki/Microsoft_UI_Automation#:~:text=In%202005%2C%20Microsoft%20released%20UIA,is%20also%20distributed%20with%20the%20.), so I'm a little surprised they haven't added support by now. Thanks all! notes found while writing: [Microsoft Active Accessibility and UI Automation Compared](https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility-and-ui-automation-compared)
Author
Owner

@codeofdusk commented on GitHub (Nov 17, 2021):

Jaws does support UIA in some apps, but not conhost (similar to NVDA's default behaviour before nvaccess/nvda#10964).

Maybe @dglee42 or @robgallo might know how to attach JAWS terminal support to UIA events via a script (if it even works that way)?

@codeofdusk commented on GitHub (Nov 17, 2021): Jaws *does* support UIA in some apps, but not conhost (similar to NVDA's default behaviour before nvaccess/nvda#10964). Maybe @dglee42 or @robgallo might know how to attach JAWS terminal support to UIA events via a script (if it even works that way)?
Author
Owner

@Grahamwp commented on GitHub (Nov 17, 2021):

There's also relevant documentation from Freedom Scientific but I wouldn't personally be able to further help with this on the JAWS scripting side.

@Grahamwp commented on GitHub (Nov 17, 2021): There's also [relevant documentation from Freedom Scientific](https://support.freedomscientific.com/support/jawsdocumentation/UIAScriptAPI) but I wouldn't personally be able to further help with this on the JAWS scripting side.
Author
Owner

@carlos-zamora commented on GitHub (Nov 17, 2021):

FYI, I've managed to reach out to JAWS. Hoping I can provide some direct support to them. They are definitely aware of this issue and I've even forwarded them this GitHub issue. 🙂

@carlos-zamora commented on GitHub (Nov 17, 2021): FYI, I've managed to reach out to JAWS. Hoping I can provide some direct support to them. They are definitely aware of this issue and I've even forwarded them this GitHub issue. 🙂
Author
Owner

@zadjii-msft commented on GitHub (Feb 7, 2022):

Moving this into 1.14 based on recent conversations.

@zadjii-msft commented on GitHub (Feb 7, 2022): Moving this into 1.14 based on recent conversations.
Author
Owner

@zadjii-msft commented on GitHub (Mar 17, 2022):

@carlos-zamora should have fixed this in #12358, and confirmed that JAWS made the fix on their end as well. We're not sure exactly which version of JAWS the fix is in, but it should be in the next version of the Terminal.

@zadjii-msft commented on GitHub (Mar 17, 2022): @carlos-zamora should have fixed this in #12358, and confirmed that JAWS made the fix on their end as well. We're not sure exactly which version of JAWS the fix is in, but it should be in the next version of the Terminal.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#15840