Use Function Keys and Media Control without Touchbar MacBook Pro pre 2020

  • Post by Rio
  • Aug 01, 2025

My MacBook 2020 Touch Bar failed two years ago. It basically flashed and flickered all the time. Until recently, my only way to fix the issue was covering the Touchbar with electrical tape. I also covered the small grooves to stop the rave. But eventually, I was fed up. After two years of this issue, I finally decided to try to “fix” it. Unfortunately, after a lot of research, there’s no real fix because it’s an actual hardware failure. So to actually fix it, you have to replace the module/Touchbar, which is quite expensive for a five years old laptop. Now the only economical way to mitigate the issue, is to disconnect the Touch Bar connectors from the motherboard and remap the function keys to other key combinations to retain function-key and media-control functionality

Steps

  1. You’ll need to install Karabiner Elements which can be found on their website: https://karabiner-elements.pqrs.org/. Most likely you’ll need to allow the publisher in the Privacy & Security.
  2. Once installed, look for the icon Karabiner Elements icon on the menu bar. Then go to Settings

  1. In the Modifications tab, go to Complex Modifications and look for ‘Add Your Own Rule.

  1. JSON Add these 2 following JSON rules (JSON rule: Fn + Number = Function Keys and JSON rule: Fn + Shift + Number = Media Control)

  1. Try it out.

JSON Rules

The followings are the 2 JSON rules that you’ll need to copy and paste.

  1. JSON rule: Fn + Number = Function Keys
{
    "description": "fn+shift+number = Media Control.",
    "manipulators": [
        {
            "from": {
                "key_code": "1",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "display_brightness_decrement" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "2",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "display_brightness_increment" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "3",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "mission_control" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "4",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "launchpad" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "5",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "illumination_decrement" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "6",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "illumination_increment" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "7",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "rewind" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "8",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "play_or_pause" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "9",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "fastforward" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "0",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "mute" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "hyphen",
                "modifiers": {
                    "mandatory": ["fn", "left_shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "volume_decrement" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "equal_sign",
                "modifiers": { "mandatory": ["fn", "left_shift"] }
            },
            "to": [{ "key_code": "volume_increment" }],
            "type": "basic"
        }
    ]
}
  1. JSON rule: Fn + Shift + Number = Media Control
{
    "description": "fn+number = f numbers",
    "manipulators": [
        {
            "from": {
                "key_code": "1",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f1",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "2",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f2",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "3",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f3",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "4",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f4",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "5",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f5",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "6",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f6",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "7",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f7",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "8",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f8",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "9",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f9",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "0",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f10",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "hyphen",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f11",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "equal_sign",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "f12",
                    "modifiers": ["fn"]
                }
            ],
            "type": "basic"
        }
    ]
}

Even though this seems to mitigate the media control and function keys, it only works once you are logged in. To make it work even before logging in, follow the guide by karabiner elements: https://karabiner-elements.pqrs.org/docs/help/how-to/use-before-logging-in/