When I first got a hold of Mac computer, I was very much frustrated with it. There were issues with it, because I expected it to behave the same like windows or a linux computer - scrolling, keys etc.

I'm used to keys to being in certain places and I don't know an easy way to remap it inside os, without installing 3rd party software. I also don't use the laptops keyboard, I wired a Croatian layout Logitech keyboard.

A colleague recommended Karabiner elements, and I absolutely love it. They make macos little easier to work on.

Debugging problems with installing

There's an ongoing issue with problem with enabling the https://github.com/pqrs-org/Karabiner-Elements/issues/3941

Out of all recommendations, I just reinstalled karabiner and the issue disappeared.

How to map keys

I'll tell you right away, "Simple Modifications" are useless to me. I use "Complex Modifications".

I have recipes at the bottom for some key mappings, but my keyboard is probably different than yours, so I'll teach you how to do it.

  1. Launch karabiner event viewer - you'll need it to see what it spits out when you click a key
  2. Find the key to which you want to map to - write it down
  3. Find the key you want to map to - write it down

And the simple layout for a recipe is:

{
    "description": "<input_your_description>",
    "manipulators": [
        {
            "from": {
                "key_code": "<input_key_code>",
                "modifiers": {
                    "mandatory": ["<input_modifier>"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "<input_key_codde",
                    "modifiers": ["<input_modifier>"]
                }
            ],
            "type": "basic"
        }
    ]
}

Delete key doesn't always work

Sometimes del button works, sometimes doesn't. It's actually a delete_forward key on macos, and there's another key called delete_or_backspace in the backspace.

Delete will work with cmd + backspace. To map it to delete:

{
    "description": "Delete forward -> Delete",
    "manipulators": [
        {
            
            "from": {
                "key_code": "delete_forward",
                "modifiers": { "optional": ["any"] }
            },
            "to": [
                {
                    "key_code": "delete_or_backspace",
                    "modifiers": ["left_command"]
                }
            ],
            "type": "basic"
        }
    ]
}

But, then I lose delete forward, there are ways to keep delete forward in certain conditions, but I decided to get used to cmd + backspace.

Backticks and tilde

Or grave and tilde keys, most annoying thing is that I need to press alt+shift+7 to get `, and alt+1 to get ~. Mapped them to most upper left key for easy access.

Other thing is that karabiner didn't detect well where my grave and tilde was, so I couldn't have done it without event viewer. Very confusing...

{
    "description": "Force ` and ~ to upper left",
    "manipulators": [
        {
            "from": {
                "key_code": "grave_accent_and_tilde",
                "modifiers": {
                    "mandatory": ["shift"],
                    "optional": ["any"]
                }
            },
            "to": [
                {
                    "key_code": "1",
                    "modifiers": ["left_option"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "grave_accent_and_tilde",
                "modifiers": { "optional": ["any"] }
            },
            "to": [
                {
                    "key_code": "7",
                    "modifiers": ["left_option", "left_shift"]
                }
            ],
            "type": "basic"
        }
    ]
}

Print screen button doesn't work

{
    "description": "Map Print Screen to Cmd+Shift+4 (screenshot region)",
    "manipulators": [
        {
            "from": {
                "key_code": "print_screen",
                "modifiers": { "optional": ["any"] }
            },
            "to": [
                {
                    "key_code": "4",
                    "modifiers": ["left_command", "left_shift"]
                }
            ],
            "type": "basic"
        }
    ]
}

It's only matter of finding which key combinations do what you want, and using the Karabiner event viewer to note them.

Youtube: https://youtu.be/-5GUMdn90gA