Fixes a deadlock that froze the whole app when opening the settings window, and makes command
insertion both quicker and safer.
QQKey is a keyboard launcher for Windows that inserts commands into your prompt instead of
running them. Press Alt+Q in any window, search by command text, English keyword, or your own
language, then Enter — the command lands in the terminal with the caret waiting at the first
parameter. You press Enter yourself.
Fixed
- Opening settings from the launcher footer or the tray menu froze the entire app. The settings
window came up blank white, the launcher stopped responding even toEsc, and the only way out was
Task Manager. Creating a webview hands the request to the event loop and then waits for a reply —
but both of those entry points already run on the event loop thread, so the main thread ended up
waiting for itself. The white window was a real window whose WebView2 could never finish
initialising, because the callback that would have completed it needed the very message loop that
was blocked. This is a documented WebView2 limitation (wry#583).
The global shortcutAlt+Shift+Qwas never affected — its callback does not travel through the
event loop — which is exactly why the bug stayed hidden for so long.
Changed
- Text is inserted as soon as the target window is genuinely in front, rather than after a fixed
40 ms wait.SetForegroundWindowonly reports that the request was accepted; the switch itself
happens asynchronously, so something has to wait. The old fixed delay was wrong in both directions.
Usually the foreground had already switched within a couple of milliseconds, and the remaining
delay was paid on every single insert. Meanwhile a window being restored from minimised sometimes
needed longer than 40 ms, and the text quietly landed somewhere else. QQKey now polls until the
target really is the foreground window; the usual wait drops from 40 ms to roughly 10 ms. - If the original window never comes back to the front, nothing is typed at all. Previously the
text was sent regardless. The insert now fails after 400 ms, the launcher reappears, and the
message states explicitly that no text was sent — so you are never left hunting through other
windows for a stray half-typed command.
See the CHANGELOG for the full list.
Install
Windows 10 or 11, x64. Either installer works — the MSI for a plain install, the NSIS setup if you
prefer the smaller download.
The installers are not code-signed, so SmartScreen will show "Windows protected your PC" and
hide the button behind More info → Run anyway. That is what Windows does with any unsigned
binary from a publisher it has not seen before. Verify your download against the hashes below:
| File | SHA-256 |
|---|---|
QQKey_0.2.1_x64_en-US.msi |
2aa731267b86fa93f34f3c3f9504f62ab5b6845fea90bc496170049cf061c206 |
QQKey_0.2.1_x64-setup.exe |
12ae963204d265fb561f352f7ad30a2af2d3232420286167f6852af5a083dbc3 |
Get-FileHash .\QQKey_0.2.1_x64_en-US.msi -Algorithm SHA256QQKey then lives in the tray with no visible window. Alt+Q opens the launcher, Alt+Shift+Q the
settings window. Start automatically at sign-in is a checkbox in settings, off by default.
Licensed under the GNU GPL v3.