macでホームポジションのままキー操作しよう！

## はじめに
WIndowsをメインで使用していた期間が長く、macメインで作業するようになったのはこの1年くらいです。キーボードでガシガシ入力するのが好きで、マウス操作かキーボード操作かといったら迷わずキーボード操作をとります。コマンドランチャーを使用しているあたりに強く出ていると思います。
キーボード操作していて思うのが、なるべく多くキー操作をしたいということ。そのためには基本的には手を移動させることなくタイピングできるのがいい！ということで本題へ入ろうと思います。

## Windowsのときに行き着いたところ
SEとしてやっている人の中ではいろんなキーボードを使ってきたと思います。優先、無線、メカニカルキーボード、magic keyboardもWindowsで使いましたね。打鍵感ではmagic keyboardが一番快適だというのが自分の感想です。
magic keyboardだとWindowsではかゆいと感じるところもあり、気分によって他のキーボードを使い分けをしていました。使い分けていたうちの一つがこちらの製品で、Windowsのときに行き着いたキーボードです。

[Majestouch MINILA Air US67キー](https://www.diatec.co.jp/products/det.php?prod_c=1471)

メカニカルキーボードという時点でマニアックだと思いますが、それに加えてUS配列で60%キーボードです。

スペースキーの両隣にファンクションキーがあり、同時押しすることで60%サイズでも通常のキーボードと同じ役割をカバーしています。例えば、ファンクションキーと"E"を同時押しすると矢印キーの上、ファンクションキーと"M"を同時押しするとDELETEみたいな感じです。

**これが標準でできるのです！**
**素晴らしい！**

キーストロークが少し深めではありますが、気分よくキー操作することができます。いいですね。

## macをメインマシンにしてから
mac(macbook 12インチ)をメインマシンとして使うようになってから、外付けのキーボードは使いませんでした。ノートPCのディスプレイとキーボードの一体感がいい、macのキーボードは打鍵感は好きというのが理由です。
矢印キーは手を右下へ移動させる必要があり、Windowsのときのようにガシガシとタイピングしたいと思っていたところ、いい出会いがありました。それがこちら。

[Karabiner-Elements](https://karabiner-elements.pqrs.org)

私はホームポジションから動かさずにタイピングをするためだけに使用しています。他にも機能がありそうですが、目的外なのであまり気にしていない．．．

では具体的な設定に入っていきましょう。

## Karabiner-Elementsで設定した内容
設定はそれほど多くないです。
標準で用意されているキーバインディングと、もう少しなんとかしたいってところを個別に追加しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48817/b66e6227-4a19-b5e2-c5b2-8fb87572e93e.png)

- 右commandとi/j/k/lで矢印キー
- 右commandと;でbackspace
- 右commandとmでdeleteキー
- 左command単独押下で英数入力モード
- 左command単独押下でかな入力モード

設定ファイルのルールのところだけ抜粋します。
```json
{
  "rules": [
    {
        "description": "Change right_command + i/j/k/l to Arrows",
        "manipulators": [
            {
                "from": {
                    "key_code": "j",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "left_arrow"
                    }
                ],
                "type": "basic"
            },
            {
                "from": {
                    "key_code": "k",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "down_arrow"
                    }
                ],
                "type": "basic"
            },
            {
                "from": {
                    "key_code": "i",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "up_arrow"
                    }
                ],
                "type": "basic"
            },
            {
                "from": {
                    "key_code": "l",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "right_arrow"
                    }
                ],
                "type": "basic"
            }
        ]
    },
    {
        "description": "original command, right_command + m/l to delete, backspace",
        "manipulators": [
            {
                "from": {
                    "key_code": "m",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "delete_forward"
                    }
                ],
                "type": "basic"
            },
            {
                "from": {
                    "key_code": "semicolon",
                    "modifiers": {
                        "mandatory": [
                            "right_command"
                        ],
                        "optional": [
                            "any"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "delete_or_backspace"
                    }
                ],
                "type": "basic"
            }
        ]
    },
    {
        "description": "コマンドキーを単体で押したときに、英数・かなキーを送信する。（左コマンドキーは英数、右コマンドキーはかな） (rev 3)",
        "manipulators": [
            {
                "from": {
                    "key_code": "left_command",
                    "modifiers": {
                        "optional": [
                            "any"
                        ]
                    }
                },
                "parameters": {
                    "basic.to_if_held_down_threshold_milliseconds": 100
                },
                "to": [
                    {
                        "key_code": "left_command",
                        "lazy": true
                    }
                ],
                "to_if_alone": [
                    {
                        "key_code": "japanese_eisuu"
                    }
                ],
                "to_if_held_down": [
                    {
                        "key_code": "left_command"
                    }
                ],
                "type": "basic"
            },
            {
                "from": {
                    "key_code": "right_command",
                    "modifiers": {
                        "optional": [
                            "any"
                        ]
                    }
                },
                "parameters": {
                    "basic.to_if_held_down_threshold_milliseconds": 100
                },
                "to": [
                    {
                        "key_code": "right_command",
                        "lazy": true
                    }
                ],
                "to_if_alone": [
                    {
                        "key_code": "japanese_kana"
                    }
                ],
                "to_if_held_down": [
                    {
                        "key_code": "right_command"
                    }
                ],
                "type": "basic"
            }
        ]
    }
  ]
}
```

## おわりに
macを快適に使うためにKarabiner-Elementsを使ってみました。これを無料で使えてしまうのがすごい！
開発者の方々に感謝です。