Hyper Key Help - Keeping Caps Lock Functionality

Ok, finally getting off my rumpus and seeing what this Hyper Key is all about, but running into a small problem - I still need my Caps Lock Key.

On Brett’s page there’s directions on how to keep the Caps Lock functionality, but it references an option to open a private.xml file that doesn’t seem to be in the newest version of Karibiner-Elements. Elsewhere found dictions about changing an attribute in the JSON file I couldn’t find (and only trust myself to change something in code rather than write it myself.

Can anyone point me to a newer tutorial? Or walk me through it?

1 Like

Are you looking at the more recent of his posts? (EDIT: I take that back - I misread the date on his post. The one I posted is from back in 2017, so probably not working the same?):

1 Like

So you got me digging, and here’s the most recent post:

The file to change is in the .config folder at the root directory of your MacOS user account, in the Karabiner folder, so at ~/.config/karabiner/karabiner.json
But . . . you need to show hidden files in Finder to see it, which you can do with CMD+SHIFT+. (period)

So, I have this working so that CAPS LOCK works as normal if tapped once, and as the hyper key if held down. It didn’t work with Brett’s instructions (which were geared toward using as an Escape key, but included a mention of how to work with caps lock). What did the trick was adding this language:

key_code": "caps_lock",
"hold_down_milliseconds": 100

For me, this was on starting on line 35, within the “to_if_alone” command.

If you trust some random guy on the Internet, here is my complete karabiner.json file: https://d.pr/f/cyMZYp (I had to upload as a zip file, because Droplr wouldn’t accept a json file, so you will need to unzip it and replace your karabiner.json file).

You will need to quit and restart Karabiner Elements after you’ve made the change for it to work.


I use capslock as hyper (if held) and f18 (if tapped).
Here’s the beginning of my ~/.config/karabiner/karabiner.json
You can probably change the “f18” to “caps_lock” and have it work the way you want.

    "global": {
        "check_for_updates_on_startup": true,
        "show_in_menu_bar": false,
        "show_profile_name_in_menu_bar": false
    "profiles": [
            "complex_modifications": {
                "parameters": {
                    "basic.simultaneous_threshold_milliseconds": 50,
                    "basic.to_delayed_action_delay_milliseconds": 500,
                    "basic.to_if_alone_timeout_milliseconds": 1000,
                    "basic.to_if_held_down_threshold_milliseconds": 500,
                    "mouse_motion_to_scroll.speed": 100
                "rules": [
                        "description": "Change caps_lock key to command+control+option+shift. (Post f18 key when pressed alone)",
                        "manipulators": [
                                "from": {
                                    "key_code": "caps_lock",
                                    "modifiers": {
                                        "optional": [
                                "to": [
                                        "key_code": "left_shift",
                                        "modifiers": [
                                "to_if_alone": [
                                        "key_code": "f18"
                                "type": "basic"

There is no more need for scripts etc in the latest version of Karabiner. It is now a default setting (I believe 2nd tab)

So, it looks like you can define the if_alone timing, but not the actual function. Unless I don’t have the latest version (though I downloaded it fresh this week).


That did it. (Well, stealing the snippet of code from your file did it :slight_smile:


1 Like

On the 3rd tab it is:L


sorry, was 1 tab to early

This doesn’t work for me :frowning_face:

Hard to say without seeing it, but have you quit Karabiner Elements and relaunched? You need the previous line in my earlier post, too.

Yes, I did all that. Is yours a T2 Mac?

I have it working with a 2015 iMac and a 2017 MacBook Pro.

Yes, to set the key is a default setting. To set if_alone action doesn’t seem to be.

If it helps anyone, I wrote out how I set this up in more detail than in my above post.


Many thanks Evan!!!

1 Like

Evan -

Thanks for this! I have been using hyper key forever. I never missed caps lock but my son (junior in college) is getting into keyboard maestro to assist his audio and video editing classwork and asked me about how I use KM. I mentioned the hyper key and set him up. But he really wanted the caps lock key to work. I figured I could just change the escape mapping and that didn’t work. A google search led me here to your tip. Worked perfectly.


1 Like

That’s awesome, Bob. I’m glad it helped.

Earlier, I stated that I could not get this to work on my iMac Pro. I downloaded your file and installed it, still does not work. I even went so far as to restart the machine afterwards, but no love.

From what I can see, your machines don’t have a T2 chip. Maybe this is the difference?

I use Karabiner-Elements on my iMac Pro. CapsLock is Hyper if held down, and F18 if tapped.
I set it up myself a while back, and didn’t use @Evan’s write up (which I’m sure is fine).

Maybe it’s a permissions issue? Have you given KE permission in Accessibility settings?