Low-level Keyboard Hooks/SendInput with Winkey+L possible? (workstation lockout is intercepted in Vi
- by Brian Jorgensen
I work on a project called UAWKS (Unofficial Apple Wireless Keyboard Support) that helps Windows users use Apple's bluetooth keyboard. One of the main goals of UAWKS is to swap the Cmd key (which behaves as Winkey in Windows) with Ctrl, allowing users to do Cmd+C for copy, Cmd+T for new tab, etc.
It is currently developed using AutoHotkey, which worked pretty well under Windows XP. However, on Vista and Windows 7, Cmd+L causes problems:
Regardless of low-level keyboard hooks, Winkey+L is always intercepted by Windows and normally locks the workstation...
You can disable workstation locking with this registry hack, but pressing Winkey+L still can't be rebound in AHK
Pressing Winkey+L leaves Winkey in the Keydown state until the next (additional) Winkey Up. Simulating a Keyup event doesn't seem to work either!
It seems that Winkey+L is a special chord that messes everything else up.
I've looked through the AHK source code, and they try to address this problem in SendKey() in keyboard_mouse.cpp (near line 883 in v1.0.48.05), but it doesn't work. I wrote up my own low-level keyboard hook application in C#, and I see the same problem.
Has anyone else run into this? Is there a workaround?