Use all of Emacs’s modifiers on macOS with various keyboards.
When non-Emacs users observe Emacs users laboring over their key binding configuration their typical range of reactions include finding it to be interesting, surprising, remarkable, strange, weird, incredible, striking, bizarre, deviant, eccentric, freakish, monstrous, incomprehensible, inconceivable, incredible, unimaginable, and unthinkable. With that range reactions in mind it is self-evident that if you are reading this then you already know why you want to use more of the Emacs’s modifier keys you just want to know how. The purpose of this project is to capture one way of using all of Emacs’s modifier keys.
- Usable on stock Mac keyboards and Windows (ANSI) keyboard.
- Mirrored meta keys
- Minimize invasive changes to
- the physical keyboard layout
- the Emacs bindings for which you already have strong muscle memory.
- the built-in macOS’s keybindings
Requirements And Compatibility
It was tested against:
- A macbook-pro-late-2013 running macOS 10.12 Sierra
Download the software for your hardware and use the configuration in this repository.
macbook-pro-late-2013.json for Karabiner
DurgodTaurusK320TKL.xml for their Zeus Engine.
maccadet.el file in your init file.
The pink keys were remapped from their hardware configuration. Their defintion is contained on the cap itself. They are in the form of:
- Physical key name.
- The key it is getting mapped to (either a USB spec modifier name or a shortened ANSI name).
- The Emacs modifier for it.
On the ANSI keyboard they go from top to bottom. mac keyboard they go from bottom to top.
The orange keys are not remapped but they’ve got a modifier configured for them in Emacs.
Here are the characters for specifying the modifier in your key bindings (these are the last character listed on the keycap here):
- C : Control
- M : Meta
- s : Super
- H : Hyper
- A : Alt
The setups follow.
Notable about each keyboard is that you can press the keys “Control-Meta-Super-Hyper-Alt-Shift” with one hand. For example
(defun test () (interactive) (message "Yup, it worked.")) (global-set-key (kbd "C-M-s-H-A-F") #'test)