Small apps, native and web. iPhone, Mac, browser.
Emacskeys
Emacs keys in every Mac app. Jump, kill, and yank the way you do in Emacs - Mail, Notes, browsers, the lot.
Not just the newest Macs
Works on macOS 13 Ventura and up
No need to be on the latest macOS. Emacskeys runs on Ventura, Sonoma, Sequoia and Tahoe, on Intel and Apple silicon alike. If your Mac stopped getting macOS updates a few years back, it still gets the keys.
- 13 Ventura
- 14 Sonoma
- 15 Sequoia
- 26 Tahoe
Universal binary: one download runs natively on both Intel and Apple silicon Macs. No Rosetta, no separate builds to pick from. That covers most Macs from 2017 on.
I’m used to Emacs keys. macOS has some of them built in, but I needed a few more, and I wanted them to work in every app. Emacskeys sits in the menu bar and fills in the rest. Command shortcuts are left alone.
What you get
Moving around, deleting, kill and yank, search and undo. A small C-x prefix covers save, open, close, quit, new windows and tabs, and switching tabs and windows. The full list is at the bottom.
When it stays out of the way
Real Emacs, and screen-sharing or remote-desktop apps, get a pass. Keys go through unchanged so you don’t fight a session on another machine.
Terminals like Terminal, iTerm and Ghostty keep their own line editing, since the shell already does Emacs keys. Only the C-x chords apply there.
Setup
First launch asks for Accessibility and Input Monitoring. Turn both on in System Settings and it starts working straight away, no restart. There are two settings: how long C-x waits for the next key, and whether the menu bar icon shows. Hide it and Emacskeys keeps running. Open it again from Applications or Spotlight to get back to its settings or quit. The icon comes back on its own if it needs a permission.
It doesn’t work in password fields. That’s by design: macOS turns on Secure Keyboard Entry there, which hides your typing from every app like this one. If the menu bar icon shows a warning, another app has left it on. Close that app or prompt and the keys come back.
Privacy
It doesn’t phone home. There’s no network code in it at all: no analytics, no crash reporting, no update checks, no account. Keys are handled as you type and never logged or stored.
Input Monitoring lets it see key presses and Accessibility lets it send the replacements. Accessibility also reads the front app’s menu, so C-x 3, C-x 0 and C-x o can press its own New Tab, Close Window and next/previous tab items. C-x b reads that app’s window titles to list them, nothing more.
Don’t just take my word for it. A network monitor like LuLu (free) or Little Snitch shows every connection an app tries to make, and you should be running one on new software anyway. Emacskeys won’t show up in it.
The general stuff is in the Privacy Policy.
Price
Free.
Requirements
macOS 13 Ventura or later. Universal binary, so it runs natively on Intel and Apple silicon.
Why it’s not on the App Store
Apple only takes Mac apps that run inside its sandbox, and an app that sees keys meant for other apps and types new ones into them can’t work in there. So Emacskeys is a direct download instead, signed with my Apple Developer ID and notarized by Apple.
I’d love to have it on the App Store, and I looked hard for a way. A sandboxed app could write to the key bindings file macOS already reads, but that only covers some of the keys and only works in apps built on Apple’s own text views. Browsers and Electron apps wouldn’t pick it up at all, and there’d be no C-x chords for saving, closing or switching windows. That’s not the app I wanted to put out, so for now it’s download only.
Notarizing means Apple scans every build for malware before it goes out. The signature ties the app to me, and if anyone changes a single byte of it after that, macOS won’t open it. Gatekeeper checks all of this on first launch, and Apple can revoke a build if a problem ever turns up.
Download Emacskeys 1.0.2 (2.7 MB). Unzip it, drag Emacskeys into Applications and open it.
All the keys
Moving around
- C-f / C-b: forward / back a character
- C-n / C-p: next / previous line
- C-a / C-e: start / end of the line
- M-f / M-b: forward / back a word
- M-, / M-.: top / bottom of the document
- C-v / M-v: page down / up
- Add Shift to the character, line and word moves to select as you go
Editing
- C-h / C-d: delete back / forward a character
- M-d: delete the next word
- C-k: kill to the end of the line
- C-x Delete: kill to the start of the line
- C-w / M-w / C-y: cut / copy / paste
- C-t: swap two characters (Mac text fields)
- C-@: select the line
- C-/, C-_ or C-x u: undo. C-?: redo
Search
- C-s: find
- C-r: find previous
C-x
- C-x s or C-x C-s: save
- C-x C-w: save as
- C-x C-f: open
- C-x h or C-x C-a: select all
- C-x 2 or C-x n: new window
- C-x 3 or C-x t: new tab, where the app has tabs
- C-x k: close the tab or window
- C-x 0: close the window
- C-x b: a list of the app’s open windows to switch to. Type to narrow it down, Return to switch. In Emacs itself you get Emacs’s own C-x b
- C-x o / C-x O: next / previous tab, or next / previous window if the app has no tabs
- C-x C-o: next window
- C-x C-c: quit the app
- C-x C-g or C-x Esc: never mind
Everything else
- C-g: Escape
- M-c, M-u, M-l, M-Delete and C-Space are left to the app
Source code
I plan to open source Emacskeys at some stage, once I’ve tidied the code up a bit.