Keymap is a portable Windows keyboard remapper for restricted user accounts.
It runs as a normal user process, reads a plain text keymap.ini, and supports
single-key remapping without administrator privileges, registry changes, driver
installation, or an installer.
- Only single-key remapping.
- Text configuration through
keymap.ini. - Background start, stop, and status commands.
- No administrator privileges required.
- No registry writes or driver installation.
Download keymap_YYmmdd.zip from the GitHub Releases page and unzip all files
into one folder where you want to store this app.
The release package contains:
keymap.exe
keymap.ini
start-keymap.bat
stop-keymap.bat
status-keymap.bat
install-startup.bat
uninstall-startup.bat
README.txt
Keep these files together in the same folder.
Edit keymap.ini before starting Keymap.
Only [remap] is supported. The left side is the input key. The right side is
the output key.
[remap]
CapsLock = Esc
Esc = CapsLockBlank lines are allowed. Comments can begin with # or ;.
| Key name | Meaning |
|---|---|
A through Z |
Letter keys, case-insensitive. |
0 through 9 |
Top-row digit keys. |
F1 through F24 |
Function keys. |
Esc, Escape, Tab, Space, Enter, Backspace, CapsLock |
Common keys. |
Left, Right, Up, Down, Home, End, PageUp, PageDown, Insert, Delete |
Navigation keys. |
Ctrl, Alt, Shift, Win |
Generic modifiers. |
LCtrl, RCtrl, LAlt, RAlt, LShift, RShift, LWin, RWin |
Side-specific modifiers. |
Minus |
- / _ key position. |
Equal |
= / + key position. |
LeftBracket |
[ / { key position. |
RightBracket |
] / } key position. |
Backslash |
\ / | key position. |
Semicolon |
; / : key position. |
Quote |
' / " key position. |
Comma |
, / < key position. |
Period |
. / > key position. |
Slash |
/ / ? key position. |
Backquote |
` / ~ key position. |
For symbol keys, Shift state is preserved by Windows. This config:
Equal = Minusmeans plain Equal outputs -, while Shift + Equal outputs _.
Use the names above in the config instead of literal symbols. Plus is not a
separate key name because + is produced by Shift + Equal.
Some scripts are provided for convenience. User could use these script or use
keymap.exe directly.
| scripts | exe |
|---|---|
| start-keymap.bat | keymap.exe start [--config path] |
| stop-keymap.bat | keymap.exe stop |
| status-keymap.bat | keymap.exe status |
By default, keymap.exe reads keymap.ini next to the executable. After starting
Keymap with start-keymap.bat or keymap.exe start, run status-keymap.bat or
keymap status to confirm that it is running. If the config is invalid, Keymap
will stop and status will report stopped.
To start Keymap when you log in, run:
install-startup.batThis creates or updates Keymap.lnk in your current user's Windows Startup
folder. The shortcut points to start-keymap.bat in the same folder as
keymap.exe.
To remove the startup entry, run:
uninstall-startup.batThese scripts do not require administrator privileges and do not write to the registry.
- Does not affect UAC secure desktop or the Windows login screen.
- Some elevated or protected windows may not receive remapped input from a normal user process.
- Global hook behavior depends on the active desktop session and Windows security policy.
For building, testing, packaging, and release workflow details, see
docs/development.md.