Karabiner-Elementsでテンキーを左手デバイスにする


自分用の備忘録です。
研究発表スライドに使用するイラストを書くのにも便利なAffinity Designer。
ショートカットがたくさんあるけど、キーボード上で打ちにくい設定もあるでしょう。
ショートカットキーを変更することもできますが、
今回は左手デバイス様のものを設定しました。
**方法**
* プログラマブルテンキーでショートカットを割り当てる
* 外付けテンキーにKarabiner-Elementsを利用して、ショートカットを割り当てる

プログラマブルテンキーは価格が高いので今回は後者を用います。


# 機材など
* OS 
    * MacOS Catalina 10.15.4
    

* 外付けテンキー
    * iClever テンキー IC-KP08
    * AMAZONで購入。
    * Bluetooth接続なので好きなところに置けて便利。
    * USB typeBで充電できる。
* Karabiner-Elements
    * キーボードをカスタマイズするmac用のフリーソフト。
    * 公式：https://karabiner-elements.pqrs.org
    * 使用したバージョン：v12.9.0
* Affinity Designer
    * 2020/6/20まで半額セール中。
    * ベクター画像の作成などができる。
    * PowerPointで図を細かく自作するタイプは導入を検討するべき！

# Karabiner-Elementsでのショートカット割当て

自分の好きなように割り当てを考えていきます。
今回は下のように。

　1：戻る（command+z）
　2：もとに戻す(command+shift+z)
　4：ペン (P)
　5：鉛筆 (N)
　6：ブラシ (B)
　7：選択ツール (V) 
　8：ノードツール (A)
　9：コーナーツール (C)
　/：シンボル (注1)
　*：複製 (command+J)

注1：
シンボルのように初期設定でショートカットキーが割り当てられていないものを設定する際、コードを書くのが簡単になるようにショートカットキーを設定します（今回のシンボルは”S”にしました。）

### （Affinity Designer ショートカットキーの設定）
環境設定＞ショートカットキー
タブからペルソナとツールを選び、ショートカットキーにしたいキーを入力

例）
デザイナーペルソナ＞表示＞スタジオ 右にある入力部分をクリック→Sを入力

###外付けテンキーの入力キー名の確認
1. Karabiner-Elementsと同時にインストールされるKarabiner-EventViewerを開く
2. Mainタブを選択して確認したいキーを入力
3. Nameカラムに表示される

今回、数字は "keypad_(数字)"、/は"keypad_slash"のように表示されました。


### コードの作成
コードについては他に詳しい記事があるためググってみてください。
公式サイトにも解説がある（英語）

jsonファイルを　~/.config/karabiner/assets/complex_modifications　内に保存すると、
Karabiner-ElementsのComplex modificationsタブ＞Rules＞Add rules
に自身で作成したファイル内のタイトルが表示されるようになります。


**Add Rulesに表示されない**
コードに誤りがあると表示されない
カンマや括弧などを始めとして確認する

**簡単な説明**
"title"： Add Rulesに表示されるタイトル。
"description"：タイトルのトグルを開くと現れる。個々の設定の名前。
"from" が 実際に打ち込むキー
"to" が打ち込んだことになってほしいキー
"key_code" には外付けテンキーの入力キー名の確認で表示されたNameで入力。

```json:基本形
{
  "title": "Affinity designer Short cut",
  "rules": [
    {"description": "１→com+Z (戻る)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_1"
          },
          "to": [
              {"key_code": "z",
               "modifiers": ["left_command"]
          }]
        }
      ]
    }
  ]
}
```

以上の基本形を基本として、 {"description":〜　を繰り返せばよい。
以下の3点を変更しながら繰り返していく。

```json:変更点1　description
{"description": "１→com+Z (戻る)",
```

```json:変更点2　from_keycode
"from": 
  "key_code": "keypad_1"},
```

```json:変更点3　to_keycode
 "to": [
   {"key_code": "z",
    "modifiers": ["left_command"]
  }]
```

# 完成コード
本当は起動するソフトごとに設定することもできるようだけど、
私の手にあまるので、今回はこれで終了します。

作成したショートカットキーの設定をすべて有効にしたものをProfileとして保存しておきます。
Karabiner-Elementsを常駐させておけば、メニューバーからProfileをワンタッチで変更できるので今のところ不便はありません。

```json:完成コード
{
  "title": "Affinity designer Short cut",
  "rules": [
    {"description": "１→com+Z (戻る)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_1"
          },
          "to": [
              {"key_code": "z",
               "modifiers": ["left_command"]
          }]
        }
      ]
    },

    {"description": "2→com+shift+Z (進む)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_2"
          },
          "to": [
              {"key_code": "z",
               "modifiers": ["left_command","left_shift"]
          }]
        }
      ]
    },

    {"description": "7→V (選択)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_7"
          },
          "to": [
              {"key_code": "a"
          }]
        }
      ]
    },

    {"description": "8→A (ノード)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_8"
          },
          "to": [
              {"key_code": "a"
          }]
        }
      ]
    },

    {"description": "9→C (コーナー)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_9"
          },
          "to": [
              {"key_code": "c"
          }]
        }
      ]
    },

    {"description": "4→P (ペン)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_4"
          },
          "to": [
              {"key_code": "p"
          }]
        }
      ]
    },

    {"description": "5→N (鉛筆)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_5"
          },
          "to": [
              {"key_code": "n"
          }]
        }
      ]
    },

    {"description": "6→B (ベクトルブラシ)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_6"
          },
          "to": [
              {"key_code": "b"
          }]
        }
      ]
    },

    {"description": "/→s (シンボル)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_slash"
          },
          "to": [
              {"key_code": "s"
          }]
        }
      ]
    },

    {"description": "*→com+J (複製)",
      "manipulators": [
        {"type": "basic",
          "from": {
            "key_code": "keypad_asterisk"
          },
          "to": [
            {"key_code": "j",
             "modifiers": ["left_command"]
          }]
        }
      ]
    }
  ]
}

```