One small victory

Danny Poit
3 min readJun 4, 2019

As I’ve gotten into mechanical keyboards recently, I’ve also been experimenting with different software that changes how the keyboard works with the computer.

One piece of software I have gotten a lot of use out of recently is: Karabiner Elements

This program does a lot: has an event viewer, allows simple remappings of keys (called “Simple Modifications”), allows importing of complex bindings (called “Complex Modifications”), allows disabling the built-in keyboard on a laptop, lets you customize how your function keys work, and stores many of these settings separately per keyboard.

But one thing it won’t do is let you create or modify your own complex key bindings. In other words, I can download a complex modification that makes Cmd-L go to the next tab in the open application and Cmd-H go to the previous tab, but I can’t change it. The same set of complex modifications reserved Cmd-J and Cmd-K for switching between the previous and next windows of an application. However, I don’t often open multiple windows of the same application, mostly just tabs. So I wanted to leave out window-switching and just use Cmd-K instead of Cmd-H to switch to the previous tab.

Something like this.

But there wasn’t an easy way to do this from within the application. You could only download preset complex modifications, but you couldn’t edit them or create your own. It didn’t make sense to me that you couldn’t do this; there had to be a way to edit or create complex modifications.

So I put my developer cap on!

First, I went to Google. There, I found this article, which told me I needed to go to this page in the Karabiner documentation on GitHub. That told me I needed to edit the JSON file at:

~/.config/karabiner/assets/complex_modifications

Being familiar with JSON from the Firehose Project, I just needed to find that file and I could probably figure it out. But I had no idea what ~/.config/ was.

I remembered the Go to Folder feature in Finder from other macOS customizations I had played with in the past. I went there and dropped the whole path in. Sure enough, there was the JSON file I needed!

There it is!

I opened it in my editor, found the mapping, changed it, saved the file, restarted Karabiner, and it worked! Now I can easily move back and forth between tabs with Cmd-K and Cmd-L.

Now, this is certainly what I’d consider a small victory — not something I would typically take the time to write about, but it is a victory nonetheless. In a career so prone to imposter syndrome, I think it’s important to celebrate the small victories. Not every small victory needs an article written about it, but at the least, it’s nice to take a minute to appreciate the small victory and say to yourself, “Hey, I figured that out!”

“Success is rarely the result of one swell swoop, but more often the culmination of many, many small victories.”
— Joseph M. Marshall III

--

--

Danny Poit

Danny Poit is a web developer with experience in Ruby on Rails and Node.js and a background in film scoring. Grad of Firehose Project, Colt Steele, and Berklee.