nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.12k stars 637 forks source link

NVDA doesn't read extremely short strings when they're sent to the terminal. #14007

Closed TheQuinbox closed 1 year ago

TheQuinbox commented 2 years ago

Steps to reproduce:

  1. Start WSL
  2. Run Ed.
  3. Type "=" without quotes, and press enter.

    Actual behavior:

    Nothing is spoken, even though the number 0 is echoed.

    Expected behavior:

    NVDA reads this string if its a 3-digit or more number (e.g. if you typed 150 lines or so). This should happen no matter the line count.

    System configuration

    NVDA installed/portable/running from source:

    Installed

    NVDA version:

    2022.2

    Windows version:

    Windows 10 21H2 (64-bit) build 19044.1826

    Name and version of other software in use when reproducing the issue:

    WSL 2, Ed. Worth nothing that this isn't the only piece of software I've seen this with, its simply the most recent example.

    Other information about your system:

    Processor AMD Ryzen 9 5950X 16-Core Processor, 3401 Mhz, 16 Core(s), 32 Logical Processor(s) Installed Physical Memory (RAM) 128 GB

    Other questions

    Does the issue still occur after restarting your computer?

    Yes

    Have you tried any other versions of NVDA? If so, please report their behaviors.

    2022.1 also did this.

    If NVDA add-ons are disabled, is your problem still occurring?

    Yes

    Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

    Yes

seanbudd commented 2 years ago

potentially related: #13318, #11170

seanbudd commented 2 years ago

Could you report the version of WSL you are using?

To find your Windows Console's NVDA API level, set "Windows Console support" to "UIA when available", then check the NVDA+F1 log opened from a running Windows Console instance.

TheQuinbox commented 2 years ago

Hi, Here's the NVDA+_f1 output: Developer info for navigator object: name: '' role: Role.TERMINAL roleText: None states: State.FOCUSABLE, State.FOCUSED isFocusable: True hasFocus: True Python object: <NVDAObjects.Dynamic_ConsoleControlVWinConsoleUIAEditableTextWithAutoSelectDetectionUIA object at 0x0795AAD0> Python class mro: (<class 'NVDAObjects.Dynamic_ConsoleControlVWinConsoleUIAEditableTextWithAutoSelectDetectionUIA'>, <class 'globalPlugins.consoleToolkit.ConsoleControlV'>, <class 'NVDAObjects.UIA.winConsoleUIA.WinConsoleUIA'>, <class 'NVDAObjects.behaviors.KeyboardHandlerBasedTypedCharSupport'>, <class 'NVDAObjects.behaviors.EnhancedTermTypedCharSupport'>, <class 'NVDAObjects.behaviors.Terminal'>, <class 'NVDAObjects.behaviors.LiveText'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.UIA.UIA'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <class 'garbageHandler.TrackedObject'>, <class 'object'>) description: '' location: RectLTWH(left=156, top=156, width=993, height=519) value: None TextInfo: <class 'NVDAObjects.UIA.winConsoleUIA.ConsoleUIATextInfoWorkaroundEndInclusive'> appModule: <'appModuleHandler' (appName 'cmd', process ID 2208) at address 18ad610> appModule.productName: 'Microsoft® Windows® Operating System' appModule.productVersion: '10.0.19041.1' appModule.helperLocalBindingHandle: None windowHandle: 791534 windowClassName: 'ConsoleWindowClass' windowControlID: 0 windowStyle: 351207424 extendedWindowStyle: 786704 windowThreadID: 6216 windowText: 'quin@box: /mnt/c/Users/Quin' displayText: '' UIAElement: <POINTER(IUIAutomationElement) ptr=0x63124c8 at 18bcb20> UIA automationID: Text Area UIA frameworkID: UIA runtimeID: (42, 791534, 4, -1) UIA providerDescription: [pid:9380,providerId:0x0 Main(parent link):Microsoft Console Host: Screen Information Text Area (unmanaged:conhost.exe)] UIA className: UIA patterns available: TextPattern, LegacyIAccessiblePattern diffing algorithm: <diffHandler.Difflib object at 0x04D00510> API level: 0 (END_INCLUSIVE)

I have also updated my instructions, so there are less steps, but the result is the same.

codeofdusk commented 2 years ago

This applies to all EnhancedTermTypedCharSupport objects. For Windows Terminal, it will be resolved by #13781.

codeofdusk commented 2 years ago

Update: now that #14047 has been merged, an experimental fix for this is available in NVDA advanced settings. Change "speak new text in Windows Terminal" to "UIA notifications".

TheQuinbox commented 2 years ago

Hi @codeofdusk, I don't see the option. Where exactly is it located?

codeofdusk commented 2 years ago

It's in advanced settings in the "terminal programs" section. Immediately after "diff algorithm".

TheQuinbox commented 2 years ago

The only thing that's in that section is diff algorithm. If i tab, I get Attempt to cancel speech for expired focus events: combo box Default (Yes) collapsed. NVDA 2022.3.2

codeofdusk commented 2 years ago

This option requires 2023.1.

TheQuinbox commented 1 year ago

Just tested with the latest alpha build, and yup, all fixed! Thanks for all your work on this!