WebDesigner's Memorandumウェブデザイナーの備忘録

Karabiner-Elementsでcaps lockで修飾キー全押し、caps lock + 修飾キーで押したキー以外の修飾キーを押す方法(reverseキー)

タイトルだけだと、理解できない人もいるかもしませんが、下記の挙動をするキーをKarabiner-Elementsで作成します。

押すキー押されたことになるキー
caps lockcontrol + option + shift + command
caps lock + controloption + shift + command
caps lock + optioncontrol + shift + command
caps lock + shiftcontrol + option + command
caps lock + commandcontrol + option + shift

本来であれば、control + option + shift + commandは4つのキーを同時に押す必要がありますが、caps lockを1つ押すだけで済みます。

さらに、caps lockと他の修飾キーを一緒に押すと、4つの修飾キーの中から押されたキーを引いたキーが押されたことになります。
この挙動も本来は3つのキーを同時に押す必要があるところを2つで済むようになります。

このような挙動をするキーを勝手に「reverseキー」と呼んでいます。

Karabiner-Elementsの設定

下記のパスに新しい.jsonを作成して、Karabiner-Elementsに独自ルールを追加します。

/Users/ユーザ名/.config/karabiner/assets/complex_modifications

かなり長いですが、ファイルの中身は下記のJSONを貼り付けて保存します(もっとスマートなやり方があるかもしれません)。

{
  "title": "reverse key",
  "rules": [
    {
      "description": "Change caps_lock key to reverse key",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock"
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_command",
                "left_control",
                "left_option"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "shift"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_command",
              "lazy": true,
              "modifiers": [
                "left_option",
                "left_control"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_control",
                "left_option"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "option"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_command",
                "left_control"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "control"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_command",
                "left_option"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "shift",
                "command"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_option",
              "lazy": true,
              "modifiers": [
                "left_control"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "shift",
                "option"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_command",
              "lazy": true,
              "modifiers": [
                "left_control"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "shift",
                "control"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_command",
              "lazy": true,
              "modifiers": [
                "left_option"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command",
                "option"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_control"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command",
                "control"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_option"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "control",
                "option"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "lazy": true,
              "modifiers": [
                "left_command"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command",
                "option",
                "control"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": {
            "key_code": "left_shift",
            "lazy": true
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command",
                "option",
                "shift"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": {
            "key_code": "left_control",
            "lazy": true
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "command",
                "control",
                "shift"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": {
            "key_code": "left_option",
            "lazy": true
          }
        },
        {
          "type": "basic",
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "mandatory": [
                "option",
                "control",
                "shift"
              ],
              "optional": [
                "caps_lock"
              ]
            }
          },
          "to": {
            "key_code": "left_command",
            "lazy": true
          }
        }
      ]
    }
  ]
}

保存したら、Karabiner-Elementsを起動して[Complex modifications]→[Rules]の「Add rule」で「Change caps_lock key to reverse key」を追加(Enable)します。

キーを押す順番

caps lockは他の修飾キーとは違う特殊なキーのため、ショートカットキーを押す順番が制限されてしまいます。

具体的には「修飾キー → caps lock → 他のキー」と入力しないとreverseキーの挙動になりません。
逆に「caps lock → 修飾キー → →他のキー」の場合は修飾キー全押し判定になってしまいます。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね