102 comments

[ 2.7 ms ] story [ 168 ms ] thread
https://github.com/tekezo/Karabiner/issues/660

You should probably consider reading this if you are on 10.12 or planning to upgrade

Seconding this. I'm now unable to use CAPS LOCK on my Mac as ESC, which makes using vim slightly more of a pain.
I upgraded to the Sierra beta yesterday and the i and h keys were reversed on my external mechanical keyboards. Seemed a bit strange.
Upgraded to the Sierra beta?

Why? The real thing has been out since September 20.

System Preferences > Keyboard > Keyboard > Modifier Keys... > Set Caps Lock Key to Escape
I don't believe 'Escape' is one of the options. On macOS Sierra, as for every previous version for me, the only choices to remap through the prefPane are "Caps Lock", "Control", "Option", and "Command".

Hence why Seil/KarabinerElements is the first thing I install on a new Mac.

Apparently the latest beta (10.12.1) has support for this natively.

https://github.com/tekezo/Seil/issues/68#issuecomment-250195...

Oh, well then! Looking forward to the first Sierra update, in that case :)

I really did not expect Apple to finally fill this gap that has been around for so many years.

Yeah, sorry I didn't specify. I am running the latest macOS Sierra beta.
Interesting. It really has, but I didn't see it before.

I was using Karabiner to set caps lock to control AND escape when pressed independently, something extremely useful to use Vim and command line. This doesn't appear to be supported, unfortunately.

And at least for me, the system preference switches simply don't work for my external keyboard (it can't seem to fully understand the difference between an internal keyboard and an external keyboard).
OS X nor macOS have the option to set caps lock to escape. This is why people who want to do this use Seil or Karabiner Elements.
I map escape to jj which is pretty useful. Thanks to some article somewhere years ago fir that.
Karabiner-Elements works perfectly for me on 10.12 (I only use it to remap caps-lock to escape).

https://github.com/tekezo/Karabiner-Elements

That's exactly what I use it for and just set it up yesterday. The instructions on the home page are fairly abysmal though.
Ditto to the readme on GH. The key (ahem) bits:

1. Create ~/.karabiner.d/configuration/karabiner.json 2. Put some stuff in it (my simple example below) 3. Install the app from the GH page.

Key definitions are in the source code, but if you check the Issues discussion on the Elements project, you'll probably find good examples to send you on your way.

Sample karabiner.json: { "profiles": [ { "name": "Default profile", "selected": true, "simple_modifications": { "right_option": "delete_forward" } } ] }

I do a similar thing: Caps Lock mapped to Control on hold and also Escape on tap.
How did you manage to do that with Karabiner Elements?
Yeah, that's why I've provided the link :) Alternatives!
Karabiner-Elements is very unfinished/unpolished though. Like, way pre-Alpha.

It's great that Karabiner is being developed, but given the number of people that are surely using MS keyboards, the situation is rather untenable. The built in key re-mapping using system preferences, at least for my mechanical keyboard, simply doesn't work. This meant that when I upgraded to Sierra, I was left with no way to remap my keyboard.

Perhaps the moral of the story is that if you use an external keyboard, consider waiting on the upgrade to Sierra.

I usually swap Alt and Command keys on my external Microsoft Sculpt keyboard. Is there a way to distinct between keyboards in Karabiner as you can do in standard keyboard preferences?
You have options "Don't apply mappings to internal laptop keyboard" and "Don't apply mappings to Apple keyboards". Will that do?
Yes, that did the job. Thank you!
This application has been really huge for my productivity.

I have literally rebinded every single key on my mac with it. It is very powerful especially when you combine it with the multitude of Alfred workflows and different scripts that you can run.

I open Alfred with just single press of right command, I switch between all my apps through hotkeys, my caps lock is a hyper key, my right shift is delete. Can't give more praise to this tool really.

Here is how I use it and what my config file for it looks like for all interested :

https://github.com/nikitavoloboev/dotfiles/tree/master/karab...

More importantly, it allows to keep myself sane with the enormous amounts of apps and tools I run on my system (https://github.com/nikitavoloboev/my-mac-os) and interchange with them seamlessly.

Nice guide, was planning to do something like that myself.
With all that software, I don't suppose you've come up with a good solution for installing and configuring it all automatically on a new machine?

Last time I tried to automate it I used homebrew cask, but it definitely wasn't a satisfying solution.

For most apps, can't you just keep the config files on e.g. dropbox?
I like using github and stow. I use stow to easily symlink from my cloned copy ofy config files to the proper directory. It's simple and easy to set up.
I don't know, it seems like you've implemented some kind of macOS-wide Spacemacs :)
Would go crazy without this. My work Mac has fn as the far left key, now I have it mapped to Ctrl for most combinations but it is clever enough to know that fn + down is pgdown.
I've been using karabiner and seil for a long time. Both are great.
Karabiner is quite cool but there were a few gotchas that were non intuitive for me. I wrote a getting started guide[0] a few months ago that starts right from the beginning.

[0] https://medium.com/@.sasha/hacking-apple-s-consumerist-cultu...

This was very helpful for me, thank you.

I couldn't get Karabiner to work - it seemed to install correctly, but none of the "prepared settings" did anything. No matter what options I'd chosen, my keyboard (both laptop keyboard and external) were unaffected.

Reading over your guide I decided to just try your "swap space and tab" example in the private.xml file, and lo-and-behold, that worked. As does recreating the inbuilt "play/pause, mute and volume to F9-F12" in private.xml, whereas the inbuilt version doesn't work for me.

An incredibly useful tool with an astonishingly bad UI.
I use it with my marble mouse logitech to emulate scrolling... love it
Remapping the caps lock key to the delete key (delete the character in front of the cursor) has been a great productivity boost for me. Below is the karabiner.json file that I'm using for this:

{ "profiles": [ { "name": "Default profile", "selected": true, "simple_modifications": { "caps_lock": "delete_forward" } } ] }

Interesting. Remapping it to Control is the greatest help for me because most Mac programs support basic Emacs keybindings. Using Ctrl a or e to go to the end of line is much easier than pressing Fn.
I have been using Karabiner for about a year now to disable my option key, which was permanently depressed due to water damage. I haven't exploited it for my productivity, but it saved me a good deal of money!
It's a great piece of software. I maintain a few Macs for my family and they don't use Apple keyboards for various reasons. Since Apple refuses to add support for standard PC layouts (and creates monstrosities like localized keyboard layout which has @ key on shift + alt + 2 which causes no end of support requests), having Karabiner remap it to the standard PC keyboard layout matching the hardware is a huge boon.
System Preferences => Change Keyboard Type… gives an UI that directs you to press a few keys that help detect your keyboard layout. That has worked fine for me (N=1) when adding a Dell keyboard to a Mac Mini.

I think that UI was added for the Mac Mini, as it was the first Mac sold without keyboard ("bring your own keyboard and mouse")

Doing that, plus swapping Cmd + Opt in System Preferences, is all I need to use a standard PC keyboard on a Mac. Works great.
Detection doesn't help if the OS doesn't include the layout at all. :/
I've also had great success with this to have different scroll direction for trackpad and mouse wheel.
I use Karabiner daily at work; the ergonomic keyboard I really like doesn't have Mac drivers, and Karabiner fixes all of the "wrong" keys.
I used Karabiner for a month after getting hit by a car and breaking my right wrist. I couldn't use that hand at all whilst it healed.

I had Karabiner remap my keyboard to half-qwerty, so that I could type entirely using my left hand on the left side of the keyboard only. A modifier key would switch it into "mirror mode" so that all the left-side keys would be remapped to right-side keys. Fun stuff!

Once you regained use of your right hand did it take any time to get back to full typing speed using both hands?

How close to your two hand WPM did you achieve with your left hand alone?

I'm adding my comment here to "pile on" and say that I'm very interested in the answers to these questions, too.

I tried to learn a one handed keyboard back in college (Matias Half Keyboard) just to see if there was any benefit to always having one hand on the kb and one on the mouse.

I never did find out; I gave up learning how to type with one hand after a month and sent the keyboard back.

The biggest obstacle was the swelling in the wrist after surgery. I had to keep it elevated for quite a long time, and it would throb and be painful when I lowered it to the keyboard. That passed gradually over 2 months. The finger dexterity never left, the moments I held my hand there I could type at ~80% speed without problems from early on.

With just my left hand, I could only manage more like 20%, which felt very very slow to me. The bottleneck with half-querty was the modifier key, which I had to hit very often to switch layouts. If you could move that to something else, that layout could speed up much more.

Had I been out of action much longer, I might have tried some kind of custom one-handed chording setup instead.

Just had to put left arm in a brace and would like to hear results too.
I had a bike accident which prevented me from typing with my left hand for a couple weeks (dislocated shoulder, broken finger). I wish this were around at the time! I had looked into physical half-qwerty keyboards, but I couldn't afford one.

I ended up hobbling together a simple app that switched two full system key layouts while holding the spacebar, more or less mimicking the half-qwerty behavior. It was my first Mac app, and it was pretty crashy, but it kept me working for those couple weeks.

I wanted to open source it, but ceased work when I was able to type with both hands again, because I knew half-qwerty was patented and didn't want to take that risk.

Really glad there's an easier solution now!

Karabiner is great. After XtraFinder stoped working because I upgraded to El Capitan and didn't want to disable SIP, I tried Karabiner to see if it had the one feature from XtraFinder that was essential for me: changing the crazy Finder key mappings of Enter to rename a file/directory and ⌘O to open it.

I like having Enter open a file or directory and F2 rename it, and not just because I'm used to Windows. I open things a lot more than I rename them. Enter is the canonical key for opening something, and does just that in OSX file dialogs. It makes no sense that Enter does one thing in file dialogs but something completely different in Finder.

Sure enough, right there in Karabiner's built-in settings were options to remap those keys.

Have been using Karabiner for years.

Works great if you have an "I set my drink too close to my keyboard" moment and need to make a spare PC keyboard work with your Mac to meet your deadlines. =D

I keep trying to get Karabiner to load but something is stopping it. Wish I could tell, I've needed it in the past to remap keys to get around VirtualBox quirks.
What version of osx are you using?
Honestly, someone needs to go back and rethink the way keyboard input is handled in Unixes. There are a lot of neat ideas out there that just can't be done without a programmable keyboard controller.
Absolutely love this tool (and Seil, and BetterTouchTool). I shift-reversed the number keys (i.e. shift-6 prints a 6, the 6 by itself prints ^), made my left and right shift's open and close parentheses (I tried to make alt+left-shift a square bracket, but couldn't get that working very well), made caps lock escape or control and shift-reversed the backslash/pipe key.

I have trouble using other people's keyboards now but I'm very productive on my own!

I have a pretty wacky config (xorg for me), but I'd never thought about shift-reversing. This is brilliant; I'm grateful for the tip!
All I hear about lately is how great this app is. I have two use cases that are pretty important to me, and for the life of me I can't figure out how to make them work.

I want to remap an ordinary letter key to another ordinary letter key. This app loves special keys to death, but I can't figure out how to do anything with boring keys.

I also want to disable the built-in keyboard while I'm using a bluetooth keyboard. Apparently you could maybe do this before Sierra, but not with the Sierra prototype? I don't know. This is the kind of byzantine app where it's next to impossible to know whether you're missing something among its piles of features.

FWIW, the Sierra prototype is missing 95% of the features of the full pre-Sierra app. It's merely a proof of concept of the architecture rewrite needed to support Sierra.

  > I want to remap an ordinary letter key to another ordinary letter key.
Regular keys should probably be mapped with a regular keyboard layout, unless 10.12 screwed that up too. See Ukelele (sic) http://www.sil.org/resources/software_fonts/ukelele or just copy and edit a .keylayout file.
been using it for 1 year to swap keys (beer+keyboard accident...) and it works well
I'm able to keep about 15 years of muscle memory for Windows shortcuts because of this excellent program. So glad it exists.
I've been using Karabiner for years to map the volume and media keys to a 1987 vintage Apple Extended Keyboard.

Incidentally, remapping Caps Lock to Control on that keyboard required a soldering iron and a pair of side cutters. But it works.

Great tool. I remap Right-Option to Right-Control. :)