6

I am trying to create a few system level key bindings. I know about ~/Library/KeyBindings/DefaultKeyBinding.dict but I am not sure what to put in there/or how to go about finding the commands and codes.

I would like keybindings to

  • Opt <- //Move cursor back a word
  • Opt -> //Move cursor forward a word
  • Opt Cmd <- //Home
  • Opt Cmd -> //End
  • (the same commands, but adding Shift to select instead of just move

Is there a good resource to help me figure this out?

9

There is a wonderful resource on DefaultKeyBinding.dict including an example file as well as all the shortcut strings and methods you need, available at:

There are also numerous other resources listed at the bottom of the page, including the official Apple Developer documentation:

1
1

I found an application (KeyBindingsEdit) that is a nice UI for building it. If you are just looking for a good way to edit it, it could be helpful

1
  • 1
    The url seems to be broken (domain for sale).
    – dewtea
    Jan 25 '19 at 20:21
1

2020 answer:

I'm using Karabiner

It used to be called KeyBindingsEdit which the other answer links to

It comes with a UI, you can import rules that other people have uploaded, and you can make your own through JSON format file

Here are my configs for moving cursor forward/backwards a word:

(I didn't check if the parenthesis are matching properly, confirm that the format is correct on your file)

{
  "title": "personal rules",
  "rules": [
      {
      "description": "cmd + arrow to ctrl + arrow",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "right_arrow",
            "modifiers": {
              "mandatory": [ "command" ],
              "optional": [ "any" ]
            }
          },
          "to": [
            {
              "key_code": "right_arrow",
              "modifiers": [ "control" ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "left_arrow",
            "modifiers": {
              "mandatory": [ "command" ],
              "optional": [ "any" ]
            }
          },
          "to": [
            {
              "key_code": "left_arrow",
              "modifiers": [ "control" ]
            }
          ]
        }
      ]
    }

]
}

You would add it to ~/.config/karabiner/assets/complex_modifications/<customname>.json

1

The accepted answer still provides good sources for key codes, however a full list of commands is now available from Apple here:

https://developer.apple.com/documentation/appkit/nsstandardkeybindingresponding

You must log in to answer this question.