ver 1.20.1.1, installed via chocolatey pkg manager.
windows 10
Server is launched with -keyhook option so modifier keys get passed to the clients as well.
When Super
+L
has been disabled in windows, it still isn't correctly passed to vcxsrv, and causes Super key to get stuck; note getting stuck happens only when shortcut is used while vcxsrv window is active.
Other Super-related combinations (eg Super+E) work just fine.
Sidenote - I understand this keycombo is treated differently by Windows, but following this registry edit (disabling locking functionality), windows releases the keybinding, and can now be intercepted by other processes (eg the same AHK script in that example).
FYI this issue is also up in StackOverflow.
Suspect we should be looking in
hw/xwin/winkeyhook.c
.Any suggestions on how to debug it?
-logverbose
with values of 3 or 4 didn't change anything in logs.logverbose 3 and 4 are only working when having installed the debug binaries.
I already looket at this, but I do not see any filtering on the Super+L key. in the code. The key is seen by the keyboard hook that is installed.
So you see no reason in the code why super+L should act any different than say super+E?
Any idea what my problem might be caused by? Are you able to reproduce (assuming you're willing to edit your registry in order to disable widows' hook)?
Off topic - would it be possible to force vcxsrv hook be installed after other hooks like AHK? In that case it would be possible to hack around this sort of corner cases - eg AHK could intercept Super+L and instead send other keys to xserver.
Edit: key events not passing through can also be seen by intercepting them with xev - we receive
Super
down & up, but noL
input.Last edit: laur 2018-08-29
Managed to compile debug build from 5c535d5a5228b8810e25c86e5fc2e7b5663d41b4.
Added a bit logging (see my git stash, apply with $git apply /path/to/file), and defined WIN_DEBUG_MESSAGES=1 environment variable.
vcxsrv is launched using -keyhook -logfile C:\Users\layr\file.log -logverbose 4 options.
For Super+H, which works fine, we get following output in log:
(note in all log excerpts below, different button event blocks have been separated by an empty line)
Super+L gives us this:
You're right in that keyhook sees all the presses for Super+L; what is wrong though is L keydown event - keyhook sees it, but winWindowProc() is not picking up a message, thus no event is triggered from it to Xserver.
What does all this mean? We're not receiving message from Windows?
Capturing it should be possible, as some othe programs (such as AHK, Virtualbox) happily capture & pass all Super+key shortcuts.
Last edit: laur 2019-08-15
@marha any hope you'd be willing to look into this issue again?
Bump, still looking for a solution.