Karabiner-Elementsの英数/かな切替とCheatsheet.appを共存させる

# はじめに
Macbook Proを新調した際にUS keyboardデビューを果たしました。事前の調べでKarabiner-Elementsを使えば左右Commandキーに英数/かな切替を対応させられることは分かっていましたが、実際に導入したらCheatsheet.appが表示されなくなってしまいました。僕のようなショートカットキー覚えられないマンには辛すぎるので、それらを共存させました。

Karabiner-Elements: キーボードのカスタマイズ等ができる。
Cheatsheet: Commandキー長押しで使えるショートカットをアプリごとに表示してくれる。超便利。

# やりたいこと
Commandキーの押し方で挙動を変える

* 短押し：英数/かな入力の切替
* 長押し：Cheatsheetの表示

# Karabiner-Elementsの設定
`~/.config/karabiner/assets/complex_modifications`下に以下のjsonファイルを作成。

```json:kana-cheat.json
{
    "title": "英数/かな切替",
    "rules": [
        {
            "description": "Commandキー短押しで英数/かな切替、長押しでCheatsheet表示",
            "manipulators": [
                {
                    "type": "basic",
                    "from": {
                        "key_code": "left_command",
                        "modifiers": {
                            "optional": [
                                "any"
                            ]
                        }
                    },
                    "to": [
                        {
                            "key_code": "left_command",
                            "lazy": true
                        }
                    ],
                    "parameters": {
                        "basic.to_if_alone_timeout_milliseconds": 300,
                        "basic.to_if_held_down_threshold_milliseconds": 100
                    },
                    "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"
                            ]
                        }
                    },
                    "to": [
                        {
                            "key_code": "right_command",
                            "lazy": true
                        }
                    ],
                    "parameters": {
                        "basic.to_if_alone_timeout_milliseconds": 300,
                        "basic.to_if_held_down_threshold_milliseconds": 100
                    },
                    "to_if_alone": [
                        {
                            "key_code": "japanese_kana"
                        }
                    ],
                    "to_if_held_down": [
                        {
                            "key_code": "right_command"
                        }
                    ]
                }
            ]
        }
    ]
}
```
あとはKarabiner-Elementsを起動して`Complex Modifications`の`Add rule`から該当ruleをEnableにするだけ。

Commandキーを押す時間が300 ms以内だとかな/英数切替になり、それ以上経つとCheatsheetが表示されます(というより、単にCommandキーを長押ししている状態になる)。もちろんCheatsheetを表示したままショートカットキーの入力も可能です。時間を調整したければ上のコードで`300`となっているところを変えてください。

あと、注意点として、Cheatsheetのレスポンスは最速にしておきましょう。これはCheetsheetを表示させた状態で`右下の歯車マーク > Delay`で変更できます。これをやっておかないと、Commandキーを押して300 ms後に長押しと認識された後にさらにDelayが乗ってCheetsheet表示までの時間がやたら遅くなります。

# 最後に
Karabiner-Elementsを触ったのは初めてでしたが、色々できそうで夢が膨らみますね。
次はトラックパッドのジェスチャーを弄ってみたいなー。

# 参考

[Qiita: Karabiner-Elementsの設定項目をまとめました](https://qiita.com/s-show/items/a1fd228b04801477729c)