Shortcuts using fn don't work properly
              
              #1011
            
            Replies: 5 comments 3 replies
-
| Thank you, It turns out that HotKey library that I use for global shortcuts doesn't support it soffes/HotKey#31 I see that skhd somehow managed to capture fn key koekeishiya/skhd#10 but, on my machine, it only works for built-in MacBook keyboard and doesn't work for the external Logitech keyboard. And skhd still has some limitations (like fn + arrows is not possible koekeishiya/skhd#10 (comment)) I will drop the  But honestly, I have no hope that it will be supported in the future | 
Beta Was this translation helpful? Give feedback.
-
| Workaround: since AeroSpace can be called from CLI, you can use skhd | 
Beta Was this translation helpful? Give feedback.
-
| I’d like to bring up support for fn again since the release of macOS 15. In macOS 15, the usage of fn increased a lot. Indeed for a lot of system shortcuts, only fn from Apple keyboards are recognised. However, Karabiner has supported mapping any key to fn with support for all the new window layout shortcuts. I believe this is done by using the Apple vendor ID with their virtual keyboard device. I’ve mapped a spare key to Apple fn on my keyboard. And I’d really like to be able to use that as my main modifier for all window management needs since I know it won’t conflict with any third party app. | 
Beta Was this translation helpful? Give feedback.
-
| Also... | 
Beta Was this translation helpful? Give feedback.
-
| I use Karabiner Elements to remap fn + everything but f keys to "hyper" (ctrl + alt + cmd). My complete Karabiner rule{
    "description": "Fn to Hyper",
    "manipulators": [
        {
            "from": {
                "key_code": "grave_accent_and_tilde",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "grave_accent_and_tilde",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "1",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "1",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "2",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "2",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "3",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "3",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "4",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "4",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "5",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "5",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "6",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "6",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "7",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "7",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "8",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "8",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "9",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "9",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "0",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "0",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "hyphen",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "hyphen",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "equal_sign",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "equal_sign",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "q",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "q",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "w",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "w",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "e",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "e",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "r",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "r",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "t",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "t",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "y",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "y",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "u",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "u",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "i",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "i",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "o",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "o",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "p",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "p",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "open_bracket",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "open_bracket",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "close_bracket",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "close_bracket",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "backslash",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "backslash",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "a",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "a",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "s",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "s",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "d",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "d",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "f",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "f",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "g",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "g",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "h",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "h",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "j",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "j",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "k",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "k",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "l",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "l",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "semicolon",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "semicolon",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "quote",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "quote",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "z",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "z",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "x",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "x",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "c",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "c",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "v",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "v",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "b",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "b",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "n",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "n",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "m",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "m",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "comma",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "comma",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "period",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "period",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "slash",
                "modifiers": {
                    "mandatory": ["fn"],
                    "optional": ["left_shift"]
                }
            },
            "to": [
                {
                    "key_code": "slash",
                    "modifiers": ["left_option", "left_control", "left_command"]
                }
            ],
            "type": "basic"
        }
    ]
}In my aerospace config I then have these bindings:     cmd-ctrl-alt-1 = 'workspace 1'
    cmd-ctrl-alt-2 = 'workspace 2'
    cmd-ctrl-alt-shift-1 = 'move-node-to-workspace 1'
    cmd-ctrl-alt-shift-2 = 'move-node-to-workspace 2'
# you get the idea | 
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Beta Was this translation helpful? Give feedback.
All reactions