WinKeys
100% On-Device · No Kernel Extension

Ctrl+C copies.
Like it always did.

Switching to a Mac shouldn't cost you thirty years of muscle memory. WinKeys rewrites Windows shortcuts into their macOS equivalents in an event tap, before the app in front of you ever sees the key. No kernel extension, no driver, no restart — and terminals are excluded out of the box, so Ctrl+C still interrupts.

v1.0.1 · macOS 13+ · Apple Silicon & Intel · Signed & notarized by Apple · No account
An animation of the key tester. It starts idle, then reads “Listening — press any shortcut.” Pressing Ctrl and C shows Control C becoming Command C, labelled Ctrl becomes Cmd. Pressing Home shows it becoming Command and Left Arrow, labelled Home and End.

How it works

Install. Allow. Type normally.

Drag it into Applications
Open the DMG, drag WinKeys across, launch it. It lives in the menu bar — there's no Dock icon and no window demanding attention.
Grant Accessibility, once
macOS won't let any app read your keystrokes until you say so. Until you tick WinKeys in Privacy & Security → Accessibility, nothing is remapped at all — and the app says exactly that rather than looking broken.
Use the shortcuts you know
Ctrl+C, Ctrl+S, Ctrl+Z, Ctrl+Y, Home, End, Alt+Tab, Alt+F4, F2. The chord is rewritten in the tap; the app in front just receives the macOS equivalent and behaves normally.
Check any key in the tester
Settings has a key tester: press a chord and it shows what the app underneath would receive and which rule was responsible. When nothing happens it tells you why — no rule, a rule switched off, or one that only applies in Finder.

What it maps

The shortcuts your hands already know.

Every rule below is individually switchable, and Shift is preserved throughout — so Ctrl+Shift+ selects by word and Alt+Shift+Tab cycles backwards.

Ctrl becomes Cmd
The blanket rule, and the one that does most of the work. Ctrl+C, Ctrl+V, Ctrl+Z, Ctrl+S, Ctrl+F — all of it lands where you expect.
Ctrl → Cmd
Ctrl+Y redoes
macOS hides redo behind Cmd+Shift+Z, which nobody arriving from Windows guesses. Ctrl+Y is mapped straight onto it.
Redo
Word navigation
Ctrl+ and Ctrl+ jump a word; Ctrl+Backspace and Ctrl+Delete delete one. On macOS those are Option chords, which is the single most jarring difference when you type for a living.
Option under the hood
Home and End that work
Home and End go to the start and end of the line; add Ctrl for the start and end of the document. On stock macOS these two keys do something else entirely, or nothing at all.
Line & document
Alt+Tab switches apps
Hold Alt to keep cycling exactly as you would on Windows, and add Shift to go backwards. Alt+F4 closes the window.
Hold to cycle
F2 renames in Finder
Finder only, because that's the only place the key means anything. Ctrl+Shift+Esc opens Activity Monitor — the Mac's Task Manager.
Finder-scoped

Features

Small, honest, and easy to switch off.

A menu-bar app that does one job and tells you the truth about it — including what it costs you.

No kernel extension, no driver
WinKeys is a plain CGEventTap. There's no system extension to approve, no restart, and nothing left behind in the kernel — quit it and you're back to stock macOS instantly. That's the main practical difference from Karabiner.
Quit and it's gone
Terminals already excluded
Terminal, iTerm2, Ghostty, Alacritty, kitty, WezTerm, Warp and Emacs ship on the exclusion list, because a keymapper that breaks Ctrl+C in a shell is worse than no keymapper at all.
Ctrl+C still interrupts
Leave this app alone
One menu-bar item stops remapping in whatever you're using right now — for a remote-desktop session, a VM, or a game that wants the raw keys. Per-app exclusions are permanent; this one is for the moment.
One click
A key tester that doesn't lie
Press a chord and see what the app underneath would receive, and which rule did it. WinKeys never remaps its own windows — without that, the tester would read its own output back as input and report Ctrl+C becoming Cmd+C twice over.
Honest by design
Scroll direction, split in two
Reverse the mouse wheel and the trackpad independently — which macOS's own Natural scrolling can't do, because it flips both together. Both off by default.
Two switches
Every rule is a switch
Don't want Home and End remapped? Turn that rule off and leave the rest. There's a master switch too, and a menu-bar icon you can hide.
Granular
Nothing leaves your Mac
Keystrokes are rewritten in memory and never recorded, stored, or sent anywhere. No account, no analytics, no telemetry.
No keylogging
Signed, notarized, universal
Developer ID signed and notarized by Apple, so it opens with a double-click. One universal build runs natively on Apple Silicon and Intel.
macOS 13+

Pricing

Free for you. Fair for work.

Personal use is free forever — every rule, no key, no account, no nag screens. If WinKeys earns its keep at your job, a one-time commercial license keeps it supported.

Personal
Free forever
For individuals and personal projects
  • Every mapping rule, all switchable
  • Per-app exclusions and the key tester
  • Scroll-direction rules
  • 100% on-device — nothing uploaded
  • No account, no nag screens
  • Free updates forever
Download — Free
Commercial
$5 / device
One-time payment — no subscription
  • Everything in Personal
  • Use commercially at work
  • One-time payment — no subscription
  • Free updates forever
  • Supports solo indie development

The personal tier is the full app — buy a commercial license only if you use WinKeys commercially. One seat per device, paid once, yours for life. Secure checkout via Stripe; your license key is emailed instantly.


Download & install

Get set up in seconds.

Download it and drag it into Applications. The only setup is granting Accessibility once — macOS won't let any app read keystrokes without it.

Download WinKeys for Mac — Free

Version 1.0.1 · macOS 13+ · Free updates forever

macOS 13 Ventura or later · Apple Silicon or Intel
Everything WinKeys needs is in the app — no driver, no Homebrew, no Terminal. One universal build runs natively on both architectures.
Opens with a double-click
WinKeys is signed with an Apple Developer ID and notarized by Apple, so it opens cleanly the first time — no Open Anyway trip through System Settings. Open the DMG, drag WinKeys into Applications, and launch it.
Grant Accessibility, once per Mac
System Settings › Privacy & Security › Accessibility → tick WinKeys. Until you do, nothing is remapped and the app says so. The permission is per-machine and never transfers, so you'll grant it again on a second Mac.
Terminals keep working
Terminal, iTerm2, Ghostty, Alacritty, kitty, WezTerm, Warp and Emacs are excluded out of the box, so Ctrl+C still interrupts. Add your own in Settings, or use Leave <App> Alone for the app in front of you right now.

FAQ

Common questions.

Is WinKeys really free?
Personal use is free forever — every rule, no key, no account, no trial timer, no nag screens. If you use WinKeys at work, a one-time $5 commercial license per device keeps it supported.
Do I have to give it Accessibility access?
Yes, and there's no way around it. macOS refuses to let any app see your keystrokes without it — that's the protection working. Until you grant it, WinKeys remaps nothing and says so plainly instead of looking broken. Everything happens on your Mac; keystrokes are rewritten in memory and never recorded, stored or sent anywhere.
Won't this break Ctrl+C in the terminal?
No — that's the first thing it handles. Terminal, iTerm2, Ghostty, Alacritty, kitty, WezTerm, Warp and Emacs ship excluded, so Ctrl+C still sends SIGINT. Add any other app to the list in Settings, or use Leave <App> Alone in the menu bar to stop remapping in whatever you're in right now.
How is this different from Karabiner-Elements?
Karabiner is more powerful and installs a driver-level virtual keyboard, which means a system extension approval and a restart. WinKeys is a plain CGEventTap — no kernel extension, no driver, nothing to approve at boot, and you can quit it and be back to stock instantly. The trade is scope: WinKeys does the Windows keymap well rather than arbitrary remapping.
What exactly gets remapped?
Ctrl+key becomes Cmd+key across the board, so copy, paste, save, undo and find all work. Ctrl+Y redoes. Ctrl+/ jumps a word and Ctrl+Backspace deletes one. Home and End go to line start and end, and add Ctrl for document start and end. Alt+Tab switches apps, Alt+F4 closes the window, F2 renames in Finder, and Ctrl+Shift+Esc opens Activity Monitor. Shift is preserved throughout, so Ctrl+Shift+ selects by word.
What is deliberately left alone?
Ctrl+Tab, Ctrl+Space, Ctrl+Esc, Ctrl+F1F20, and any chord that already contains Command. Those either already behave the way Windows does or would collide with something worse.
What do I lose?
The blanket Ctrl → Cmd rule costs you macOS's emacs bindings — Ctrl+A for start of line, Ctrl+E for end, Ctrl+K to kill — everywhere WinKeys is active. That's the deal Windows muscle memory asks for, and it's stated up front rather than discovered later. Exclude an app to get them back there.
Can I flip the scroll direction too?
Yes, with two separate switches, both off by default. macOS's own "Natural scrolling" flips a mouse and a trackpad together, so turning it off to fix a wheel leaves the trackpad backwards. WinKeys splits them: reverse the mouse wheel, the trackpad, or both. If Natural scrolling is already off, Settings notices and tells you these would put you back where you started.
How do I know a shortcut is actually being remapped?
Settings has a key tester. Press any chord and it shows what the app underneath would receive and which rule was responsible — and when nothing happens, it says why. It's honest because WinKeys never remaps its own windows; otherwise the tester would be reading its own output back as input.
Does WinKeys upload anything?
No. There's no account, no analytics and no telemetry. The one network connection it makes is the update check, which sends nothing about you or what you type.
How do I update it?
WinKeys checks for updates about once a week and offers them in-app — updates are signed, and one that doesn't verify is refused. You can also re-download the DMG from this page at any time and drag the new WinKeys into Applications over the old one.
Will macOS warn me about an unidentified developer?
No. WinKeys is signed with an Apple Developer ID and notarized by Apple, so it opens with a normal double-click the first time — no Open Anyway trip through System Settings, no Terminal.
Also by the same solo developer Diskr New to the Mac? Diskr answers the other question that comes up in week one — where did all my disk space go — with every file mapped into an interactive sunburst. Free for personal use.

Like what I make?

All my apps are free for personal use. If they save you time or make your day a little easier, a tip keeps me going — it goes straight to development, no middleman.

Hear about new apps first

One short email when twoplus11 ships a new Mac app. No spam — and unsubscribing is one click that works instantly.

One confirmation email first — you're only in if you click it.