Karabiner elements: ctrl + any_key not working

Im having the issue on Karabiner Elements where key-bindings using the ctrl key don’t work. I’m trying to use this complex workflow: CTRL + h j k l for arrow key movement but its not working for me, instead ctrl + h deletes the character to the left of the cursor as specified in the keyboard shortcuts documentation (and idk how to disable that). My keyboard is a Logitech G710+ btw.

    {
      "title": "Left ctrl + hjkl to Arrow Keys Vim",
      "rules": [
        {
          "description": "Left ctrl + hjkl to arrow keys Vim",
          "manipulators": [
            {
              "from": {
                "key_code": "h",
                "modifiers": {
                  "mandatory": ["left_control"],
                  "optional": ["any"]
                }
              },
              "to": [
                {
                  "key_code": "left_arrow"
                }
              ],
              "type": "basic"
            },
            {
              "from": {
                "key_code": "j",
                "modifiers": {
                  "mandatory": ["left_control"],
                  "optional": ["any"]
                }
              },
              "to": [
                {
                  "key_code": "down_arrow"
                }
              ],
              "type": "basic"
            },
            {
              "from": {
                "key_code": "k",
                "modifiers": {
                  "mandatory": ["left_control"],
                  "optional": ["any"]
                }
              },
              "to": [
                {
                  "key_code": "up_arrow"
                }
              ],
              "type": "basic"
            },
            {
              "from": {
                "key_code": "l",
                "modifiers": {
                  "mandatory": ["left_control"],
                  "optional": ["any"]
                }
              },
              "to": [
                {
                  "key_code": "right_arrow"
                }
              ],
              "type": "basic"
            }
          ]
        }
      ]
    }

I’ve just imported that rule set and it works fine (on my MBA internal keyboard), without making any adjustments at all to the script. Perhaps it would be worth deleting and trying again?

Otherwise it may be something to do with how Logitech is sending the key code. Have you tried monitoring it with Karabiner Events?

Also working with an MX Mechanical mini keyboard.
Something else could be picking up the key combo first, shortcut detective would have helped but no longer works.

Does this one work:

{
“description”: “Change Ctrl + HJKL to Arrow Keys”,
“manipulators”: [
{
“from”: {
“key_code”: “h”,
“modifiers”: { “mandatory”: [“control”], “optional”: [“any”] }
},
“to”: [{ “key_code”: “left_arrow” }],
“type”: “basic”
},
{
“from”: {
“key_code”: “j”,
“modifiers”: { “mandatory”: [“control”], “optional”: [“any”] }
},
“to”: [{ “key_code”: “down_arrow” }],
“type”: “basic”
},
{
“from”: {
“key_code”: “k”,
“modifiers”: { “mandatory”: [“control”], “optional”: [“any”] }
},
“to”: [{ “key_code”: “up_arrow” }],
“type”: “basic”
},
{
“from”: {
“key_code”: “l”,
“modifiers”: { “mandatory”: [“control”], “optional”: [“any”] }
},
“to”: [{ “key_code”: “right_arrow” }],
“type”: “basic”
}
]
}

My simple modifications definitely work, and Karabiner Event viewer looks fine. It receives when I do left_control h j k l: {"key code": "j"}, flags left_control.

I think the issue may have been due to storing the karabiner config folder in chezmoi and automatically applying it to ~/.config/karabiner . I removed the folder from chezmoi (moving ~/.local/share/chezmoi/dot_config/karabiner ), pasting it into ~/.config manually, making changes, then putting it back in chezmoi. Maybe updating to macOS 26.5 (which came out today) helped as well?

1 Like