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?

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.

1 Like

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