So I understand that NVDA's handle keys from other applications option changes how keyboard keys can be processed, such as handling input from on-screen keyboards and speech recognition, but I'm unclear as to exactly what's happening behind the scenes and the user guide only provides a very brief explanation of why a user may want to disable it. I was just wondering if I could have some clarification on what's happening behind the scenes when this option is used by chance? Thank you very much for your time and I look forward to any input you may have. Thanks. #NVDASR @NVAccess @jcsteh
Jamie Teh
in reply to Brandon Tyson • • •When that option is enabled, NVDA uses some tricky logic to try to ignore only its own injected keystrokes, but allow others through. This logic involves things like nearby timing, keeping track of keystrokes NVDA itself sent, etc. Unfortunately, it seems this logic isn't perfect and can still interfere with injection by some applications, hence the option.
@NVAccess
Brandon Tyson
in reply to Jamie Teh • • •Jamie Teh
in reply to Brandon Tyson • • •See my answer in the other thread: https://aus.social/@jcsteh/112345948657066389
@NVAccess
Jamie Teh
2024-04-28 00:12:12
Brandon Tyson
in reply to Jamie Teh • • •James Scholes
in reply to Brandon Tyson • • •NVDA's low-level keyboard hook determines whether each keyboard event is considered injected or not, via flags passed in the KBDLLHOOKSTRUCT structure. Injected means that the keyboard input was generated by software, rather than a physical device.
For instance, keypresses generated by speech recognition tools will be considered injected, but you typing on your keyboard will not. If the setting is disabled, injected keyboard events are ignored, so you wouldn't be able to e.g. instruct Dragon Naturally Speaking to press NVDA+F12 to give you the time,.
I presume that in some specific cases, NVDA intercepting the input can result in undesirable behaviour, but I'm not sure what those situations would be other than the example mentioned in the user guide.
Brandon Tyson
in reply to James Scholes • • •Jamie Teh
in reply to Brandon Tyson • • •In contrast, if that setting is disabled, NVDA doesn't wait for anything because it just unconditionally ignores all injected keys.
@jscholes