Skip to main content

Updating Shift Touchtyping

I was pointed to Steve Losh’s blog post about helping improve touch typing by the very helpful and friendly Chris Toomey. Steve used Karabiner Elements (then KeyRemap4MacBook) to disable the “incorrect” shift key combinations (i.e. for capital “P” the left shift must be used).

His example code is now out of date, and the equivalent code must be used. I put this file under ~/.config/karabiner/assets/complex_modifications/touchtype.json:

{
  "title": "Learn to touch type",
  "rules": [
    {
      "description": "Disable incorrect shift key",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "q",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "w",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "e",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "r",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "t",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "a",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "s",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "d",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "f",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "g",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "z",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "x",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "c",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "v",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "1",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "2",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "3",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "4",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "5",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "y",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "u",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "i",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "o",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "p",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "h",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "j",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "k",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "l",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "semicolon",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "b",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "n",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "m",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "comma",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "period",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "slash",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "6",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "7",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "8",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "9",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "0",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "open_bracket",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "close_bracket",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "quote",
            "modifiers": {
              "mandatory": [
                "right_shift"
              ]
            }
          }
        }
      ]
    }
  ]
}