Make your keys your own.
Remap any key or mouse button, build macros and hotkeys, and set per-app shortcuts, just by describing them in plain English.
Download for Windows ·
Guide ·
What's new ·
Privacy ·
Donate ·
MIT License
Keyware maps keys, chords, holds, double-taps and leader sequences to actions: open a website or app, type text, send a key combo, control media, play a song, auto-click, or run a whole macro. Bindings can change with the app in front (Global, Gaming, Browser, Code profiles).
You can build a binding by hand, or just describe it: type "F9 opens YouTube and F10 locks my PC" and Keyware turns the sentence into bindings you review before saving. Nothing is ever saved automatically.
- Safe by design. An unbound key is never swallowed, the hook only runs while Keyware is ON, and Ctrl + Alt + Shift + Esc drops it instantly.
- No admin rights, no ads.
- Starts with Windows by default, silently in the system tray (no window, hotkeys working). Turn it off in Settings. Closing the window keeps Keyware in the tray; Quit in the tray fully closes it.
- The hook engine never touches the network. Optional Text mode sends the sentence you type and a short setup summary (not your keystrokes). Optional feedback from Settings, and actions you create that look something up (such as a Play song or video), also use the network. What each one sends is on the privacy page.
- Per-app rules no longer stick a key. For App or Both, the physical key-down and key-up both reach the app. App skips Keyware's action and the hold beep. Both runs the action and still passes the key. A short hold does not type that key a second time.
1.3.7 added setups inside a profile, an on/off shortcut with toasts, and per-app shortcut rules. 1.3.6 added binding any key or mouse button and a Donate button. See the full list at keyware.site/whats-new.
The Keyware app: your key bindings at a glance
![]() Text mode: describe a binding in plain words |
![]() Manual and Text modes |
![]() Features at a glance |
![]() AI Text mode |
![]() Per-app profiles |
![]() Safe by design: always works |
![]() Guide: tap vs. hold |
![]() Guide: remap Copilot / Caps Lock |
The site offers two Windows builds, each with its own size and SHA-256:
64-bit Keyware.exe and native ARM64 Keyware-arm64.exe.
Get them from https://keyware.site/#install.
The guide
walks through the first setup. Windows 10 or 11. Most PCs use the 64-bit
file, which also runs under emulation on ARM64 Windows. Windows on ARM,
including Copilot+ PCs, uses the ARM64 file. PyInstaller cannot cross-compile,
so that file is built on GitHub's windows-11-arm runner.
There is no Mac download. Remapping is the Windows hook described below. A Mac build of this code would not remap keys.
You need Windows and Python 3.11 or newer. Remapping is a Windows low-level hook (WH_KEYBOARD_LL / WH_MOUSE_LL) plus SendInput. On macOS or Linux the window can edit bindings, and python main.py --self-test checks the engine, but turning Keyware on does not install a hook. A Mac build would need a different input stack. Details are in docs/TECHNICAL.md.
git clone https://github.com/notomar2014-ui/keyware.git
cd keyware
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
:: run it
.venv\Scripts\pythonw.exe keyware.pyw
:: run the tests (no real hook, no keystrokes, no apps opened)
.venv\Scripts\python.exe -m pytest
:: build dist\Keyware.exe (PyInstaller, Windows only)
.venv\Scripts\python.exe build.pyrun.bat creates the virtual environment and starts Keyware in one step.
python main.py --self-test checks the engine without installing a hook.
Every push is tested and built by GitHub Actions
(.github/workflows/build.yml).
windows-latest produces the unsigned x64 exe. windows-11-arm produces the
unsigned native ARM64 exe. Each run uploads both artifacts. A push to main
attaches Keyware-arm64.exe to the existing GitHub release when that asset
is not already there, and writes that file's SHA-256 into the release notes.
It does not replace the published x64 Keyware.exe.
By default Text mode goes through the Keyware proxy (the code is in site/api),
which holds the provider keys and applies a small daily limit per install.
In Settings you can use your own free key (Gemini or Groq) instead; it is
stored with Windows DPAPI and never logged. The app never reads a .env file and
the repository contains no keys. Developers running from source can set
KEYWARE_DEV_KEYS=1 with GEMINI_API_KEY / GROQ_API_KEY in their environment.
main.py, keyware.pyw entry points
engine/ hook, detector, actions, config (no network)
assist/ Text mode (AI binder), feedback, DPAPI key store
ui/ CustomTkinter window, tray, assets
tests/ headless pytest suite
tools/ dev helpers (live AI check, end-to-end driver, previews)
build.py, keyware.spec PyInstaller one-file build
site/ the website and its serverless API (Vercel)
docs/TECHNICAL.md safety model, config file, sample bindings
Keyware keeps your bindings on your PC. What the optional Text mode, feedback form and download counter send is listed on the privacy page.
Issues and pull requests are welcome; see CONTRIBUTING.md. Please report vulnerabilities privately as described in SECURITY.md.
Keyware is free and has no ads. If it saves you time, you can support it on Ko-fi: Support Keyware on Ko-fi
MIT © 2026 Keyware contributors. Windows is a trademark of Microsoft.








