What events trigger up & down arrows? CEF based app not triggering them #12756
Replies: 2 comments 2 replies
-
Hi @HarmlessDave, Apologies for the slow response. |
Beta Was this translation helpful? Give feedback.
-
It would be great to verify if NVDA indeed ignores the keys (less likely( or if it just cannot switch to browse mode (more likely). Assuming that you have an edit field in your application you can tab into it, type some text, try navigating with arrows and check if characters are announced. If they are then NVDA gets arrow keys but since it stays in focus mode arrows scroll the content rather than navigate with the virtual caret. If my hypothesis is correct then this is already reported as #8553 |
Beta Was this translation helpful? Give feedback.
-
Our app uses the Chromium Embedded Framework. If we use CEF's older, lower-performance message handling scheme where our app handles the Windows message loop then the hotkeys for NVDA work properly. If we switch to the higher performance "multi-threaded-mode" for CEF where it runs the message loop then many keys still work like a-z,0-9 but the arrow hot keys stop having any effect in NVDA.
I've tried forwarding WM_KEYDOWN and WM_KEYUP messages from the CEF browser window to the our mainframe that is hosting it, but that had no effect. (There are no WM_CHAR messages for arrow keys so I can't send those.)
Is NVDA watching for some other event(s) in our main window that I could generate, or is there some message I can send directly to an NVDA window?
I've downloaded the NVDA source but it's taking a while to work through it to try to find the code related to the up and down arrows.
Edit: I see in the source that NVDA sets a Windows low-level keyboard hook (WH_KEYBOARD_LL).
To see if our app was somehow no longer generating arrow key KEYUP and KEYDOWN events I created a simple logging hook DLL and loaded it into a second applet so that it would be attached to our app. My logging DLL did get both up-arrow and down-arrow KEYUP and KEYDOWN events.
So I'm wondering why the NVDA code ignores these events from its hook. Any suggestions would be helpful.
Beta Was this translation helpful? Give feedback.
All reactions