Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Preliminary support for UI Automation in Windows Console #9614
Link to issue number:
Summary of the issue:
NVDA provides support for the Windows command console used by Command Prompt, PowerShell, and the Windows Subsystem for Linux. It allows users to read the console's contents using review cursor commands, and automatically reports console output as it arrives. While functional, this support has some shortcomings, leading to decreased NVDA performance and stability and, by extension, user productivity.
Description of how this pull request fixes the issue:
This PR re-implements NVDA's Windows Console support using Microsoft's UI Automation API (UIA). At the moment, typed characters and words are read to the user as well as incoming text. Review of console output is functional on Windows 10 1803 and 1809. The new console support is implemented in the
Since the UIA console interface was first implemented in Windows 10 version 1709, it is safe to use the
On windows 10 version 1903 and later, the UIA caret position is off-by-one. To compensate,
A mapping from UIA's event for text changes to NVDA's
Automatic text readout uses the
Tested the new support on Windows 10 versions 1803, 1903, and 2003. In particular, tested reporting of typed characters and words (when the corresponding settings were enabled), reporting of new text, text editing and selection, and object review.
Known issues with pull request:
Change log entry:
== New features ==
== Changes for Developers ==
leonardder left a comment
Arrg, really frustrating that GitHub calls every way to comment on an ongoing conversation for an inline comment that is outdated. I'm taking the discussion about the config spec to the main threat here.
I agree that this makes sense.
As noted, a provisional setting requires a config spec and scheme update as soon as it gets changed. Especially if you already know what the final setting is going to look like, I'd prefer just adding the setting to the spec as it is supposed to be in the final pr. You could map UIA to True and legacy to False and just make auto act like False/legacy for now.