Turbocharge Your Productivity with Key Remappings - Karabiner and My New Mechanical Split Keyboard
The NocFree Split Mechanical Keyboard, Tips for Going Mouseless, The Hyper Key Concept, Tools and Ideas for Programming Your Keyboard and Being More Efficient in Your System
For about the last month and a half, I’ve been using a prototype of the NocFree keyboard. It’s a compact, completely wireless split mechanical keyboard. It has truly been a very welcome change from my previous Apple Bluetooth keyboard. More than that, it led me to discover something I had not anticipated. By researching and learning how to program this device (or ANY keyboard on a Mac computer), I feel like I have untapped a new and exciting world of productivity. I have been able to customize my workflow and perform tasks much faster and more efficiently around my computer in ways I did not think were possible.
I have made a video where I talk about my new keyboard and—more importantly and useful to you—some of my setup. Something that I want to emphasize is that you do not need to have the NocFree or any mechanical keyboard to program or customize the functionality of your keyboard. Everything I’ve done so far, I decided to do with Karabiner Elements, a free application that works with Macs. Take a quick look at some stuff I mention in the video below.
The Hyper Key
It’s been a while now since I first heard of the concept of the “hyper key.” This idea involves mapping all of the modifiers together on one key only, allowing for the freedom to assign it as a keyboard shortcut around your system together with different letters. A hyper key is such an unusual combination of keys that—with the ease of tapping at once—opens up the possibility of streamlining your keyboard shortcuts. If you are into setting up keyboard shortcuts to speed up the way you use apps, you may have experienced the challenge of running out of keys or resorting to unusual finger contortions to find unused ones. This is where the hyper key comes in.
While I'm all for shortcuts and efficiency around my system, I initially didn't see the appeal of having a hyper key. Why lose a key and replace it with other keys that I already have? However, the idea started to make more sense to me as I researched about programming my keyboard and learned about its possibilities. The ability to accomplish so much while barely moving my fingers around my home row keys is something I had not considered. Setting conveniently placed keyboard shortcuts that are easy to remember due to the letter + function association, can almost feel like a superpower at times.
My Caps Lock
I still do not have any key set up as a hyper key. With the free app I’ve found, Karabiner Elements, I don’t feel an immediate need for it. The same idea applies here: having an entire clean “layer” of keys that you can use as shortcuts. The difference is that in Karabiner’s case, you can open a new layer with every single key. You don’t lose modifiers; in a way, you create new ones. Each key can trigger not only a key, or a key with modifiers, but you can set variables that interact with other keys, trigger applescripts and shell scripts, open websites, run shortcuts, trigger Alfred, BetterTouchTool and Keyboard Maestro workflows or macros, and so much more. Plus, you can assign different actions (even on the same key) to be performed with a single tap, double tap, while holding down, or actions while pressing keys simultaneously. Even more, you can open layers from within layers. Basically, with Karabiner any key can act like a hyper key on steroids.
As an example, let me tell you about my Caps Lock:
With a quick tap, it acts as my escape key, which is useful to me in this compact keyboard where I have to choose between having an escape or tilde.
If I hold it down, I can quickly tap another key to trigger any of my most used Alfred workflows, Keyboard Maestro Macros, or Shortcuts. My held down Caps Lock assigns my laptop media keys to the numbers (I wanted those keys on my compact keyboard). I also use the Caps Lock as a “modifier” to type Spanish characters, which are in the exact same position as my Spanish keyboard.
By holding down Caps Lock for over half a second without pressing anything else, I trigger Superkey Seek, which allows me to click anywhere on the screen using OCR, by using my keyboard as if it were a mouse. I also use Caps Lock + J (a letter that is most of the time right under my index finger) to trigger Homerow, which does a similar thing but is not limited to OCR.
If I want to actually turn on or off my Caps Lock, I simply tap my right shift while holding down my left shift. I do not lose any key, and my Caps Lock has unlocked so much functionality it did not previously have.
Now let me tell you about some of my other layers or Karabiner modifications:
I have implemented a "Super Duper Mode" heavily inspired by Jason Rudolph, which allows me to almost glide around whenever I’m writing or editing text. With this mode, I have Shift on the Spacebar, Command on F, Option on A, arrows on H, J, K, L. N and Period becomes delete backward and forward. There are A LOT of combinations with these keys that result in moving, selecting, or deleting by words, lines, or paragraphs. On letters Y, U, I, and O, I have incorporated window and tab switching with Contexts. M and Comma bring up my app switcher also in Contexts.
I have incorporated several deletes inspired by John Lindquist. I love being able to delete my last word by holding down my semicolon and quickly tapping on A. Or to backspace delete and forward delete with my pinkies, by pressing left and right shift keys.
I have a Windows Mode (W) for window management that I use in conjunction with BetterTouchTool for moving any window in halves and quarters, following the same arrow keys as in Super Duper mode.
I have a Markdown Mode (M) that works together with TextSoap for quick formatting, enclosing in parentheses, brackets, curly brackets, inserting links, changing cases, and performing a ton of text transformations anywhere around my system or on any site.
I have an AI (A) Mode, which I use together with my ToolVox AI shortcut, to quickly perform Chat GPT requests either on selected text or anything I think of anytime around my system. There are keys for R = replacing selected text with the result, C = starting a conversation on the selected text, P = using the selected text as a prompt, or J = placing the result below my selected text (J is my bottom arrow from Super Duper Mode).
By organizing layers into categories, you can effortlessly recall them, and within each new layer, you have a fresh array of keys that can also be easily memorized if you associate them with their corresponding actions. The range of possibilities for enhancing your system with this setup is HUGE.
The Challenge
I hope that by now you are excited to see what is possible. Here I need to mention something that I hope doesn’t stop you from trying this out: there is a bit of friction when it comes to using Karabiner, as it is not very user-friendly. For developers or those familiar with programming languages, creating complex modifications in Karabiner may be straightforward. However, for the average user, there is a significant learning curve. It took me days to grasp the JSON formatting in Karabiner and even more time to achieve the desired results. I was midway through my setup when I discovered Goku, a tool that simplifies the creation of a Karabiner configuration file. I then had to learn how to translate everything I’d learned from JSON to this new Goku format.
A FEW THINGS THAT WERE HELPFUL TO ME:
If you want to save yourself a lot of trouble, consider getting an external mechanical keyboard that is compatible with Vial, such as The NocFree. The downside is that the configuration you do on your keyboard will stay with your keyboard, not on your system. However, you get a much more user-friendly interface.
Learning some of the Karabiner JSON formatting, even though it’s repetitive, wordy to type, and not very efficient to navigate, was beneficial for me. It has helped me understand when things I’ve set up in Goku don’t work as expected.
Chat GPT 4 is pretty good at creating complex modifications in Karabiner’s JSON format. It is not perfect, but I’d say this can be a huge help if you want to learn.
This video and this video were easy enough for me to follow along and get a good understanding of how Goku works. Props to John Lindquist for this. I borrowed several of his "delete" ideas.
This article is a comprehensive introduction to Goku, and the accompanying Karabiner EDN file has many useful annotations.
Goku’s official tutorial is simple enough to learn the basics (especially after learning a little bit of Karabiner’s JSON format), and I’ve gone back to it again and again.
This article, even though a bit out of date, was very inspiring—though a bit overwhelming—and gave me a lot of ideas.
This video and this video were great to get familiar with both how Karabiner works and its JSON format.
My Setup
Here’s an easy-to-read list of all the key modifications and modes I currently have on my keyboard. This is definitely a work in progress and I can’t promise I’ll keep it updated. But still, I think it may be useful to you if you are looking for ideas on how to setup your keyboard either with its own software or Karabiner.
Here’s my Karabiner EDN file (to work with Goku). Do not just copy and paste to your own configuration. It may break things. Do use it as a way to learn how I trigger modes or actions.
Closing
I've been really excited about customizing my keyboard over the past few weeks. As I’m always looking for ways to be more efficient with my system, diving into this kind of stuff makes me seriously happy. Do you have a Karabiner modification you can’t live without? Would love to hear about it! I can't wait to try out more ideas and see how I can further customize shortcuts, layers, and actions for my most used applications.
I really hope that this is useful to some of you. I'm far from being an expert, but if you run into any trouble with the modifications I've mentioned here, let me know—I'd be happy to try and help you figure it out.
Oh, and one more thing—if you found this article helpful, I'd be incredibly grateful if you could support me by buying me a coffee at THIS LINK. Your generosity would mean the world to me.
If you liked this you may also enjoy some content I have up on my YT Channel! I don’t hang around social media a lot, but when I do I’m on IG or Twitter. You can also check out some of my online classes, listen to my music, or in case you haven’t already, subscribe to my weekly newsletter. Thank you for reading!