typing revisited

2020-06-04

Workman has been my keyboard layout of choice for at least six years now and I still notice and appreciate that my fingers stay close to home row while typing. In hindsight, it probably also triggered my interest in modal editing at the time (to reduce travel during editing as well).

Recently I had to revisit my setup on OSX as some bindings weren't working when I tried Alacritty. The setup for my different machines was a bit involved, so I posted some details on my setup at the time. Turns out that installing a new keyboard layout and modifying it via Ukelele broke during some mac os update that I didn't try to track down. The resolution was straight-forward and simplified my setup. Rather than installing a different keyboard layout for OSX, I simply remap the alphabetic keys using Karabiner Elements:

"simple_modifications": [
    {
        "from": { "key_code": "b" },
        "to": { "key_code": "v" }
    },
    {
        "from": { "key_code": "c" },
        "to": { "key_code": "m" }
    },

... and so on.

I stopped using the additional layer for typing symbols using a dead key, so simple modifications are all that I require. It simplifies my setup by cutting out the step of installing a different keyboard layout and re-using Karabiner Elements, which I already use to remap Capslock (Ctrl+Backspace) and Return (Ctrl+Return):

"rules": [
  {
    "description": "With other keys, use capslock as control else backspace.",
    "manipulators": [
      {
        "from": {
          "key_code": "caps_lock",
          "modifiers": {"optional": ["any"]}
        },
        "to": [{"key_code": "left_control"}],
        "to_if_alone": [{"key_code": "delete_or_backspace"}
                       ],
        "type": "basic"
      }
    ]
  },
  {
    "description": "With other keys, use return as control else return.",
    "manipulators": [
      {
        "from": {
          "key_code": "return_or_enter",
          "modifiers": {"optional": ["any"]}
        },
        "to": [{"key_code": "right_control"}],
        "to_if_alone": [{"key_code": "return_or_enter"}],
        "type": "basic"
      }
    ]
  }
]

You can find the whole config file here. Checkout Karabiner Elements if you haven't!