Skip to content

QQKey 0.2.1

Latest

Choose a tag to compare

@theanswertw theanswertw released this 31 Jul 09:33

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 to Esc, 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 shortcut Alt+Shift+Q was 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.
    SetForegroundWindow only 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 SHA256

QQKey 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.