どのキーをショートカットに割り当てたらいいのかわからない問題(for Mac)

**注意: この記事はmacOS Sierra以降を使っている方が対象です**

---

生産性向上といえばショートカットキーの活用です。　　
しかし問題になるのが`どのキーをショートカットに割り当てたらいいのかわからない問題`です。
みんな大好きVSCODEでは簡単にショートカットを追加できます。追加しようと思ったキーが既に割り当てられていたら警告が出る安心設計です。しかし結局「どのキーが空いてるんだよ(´；ω；｀)」となります。

この問題を解決する方法は`Karabiner-Elements`と`Casplock`の導入です。

---

> Karabiner-Elementsは、macOS Sierra以降でキーボードをカスタマイズするための強力なユーティリティです。
> ([公式GitHub](https://github.com/pqrs-org/Karabiner-Elements)より直訳)

Karabiner\-Elementsはこちらからダウンロードできます。
[Karabiner\-Elements](https://karabiner-elements.pqrs.org/)

CapslockはこちらにREADMEがあります。
[Vonng/Capslock: Make Capslock Great Again\!](https://github.com/Vonng/Capslock)

敬虔なmac信者の方なら当たり前に使っているツールですが、Capslockを活用すればさらに便利です。
ざっくり言うと、`capslock`を押すことが`cmd+shift+ctrl+opt`の4キーを同時押ししたことになります。
例えばVSCODEのショートカット設定で`cmd+shift+ctrl+opt+x`というショートカットを登録すれば、実際には`capslock+x`で使えるというわけです。

## 基本設定の方法

まずKarabiner-Elementsをインストールしていない方は[こちら](https://karabiner-elements.pqrs.org/)からどうぞ。

次に[karabiner\-elements\-complex\_modifications](https://ke-complex-modifications.pqrs.org/?q=vonng)から`Capslock Enhancement`をインポートします。右のimportボタンを押すとお手軽に入れられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/870772/1817edad-86b5-1513-d7c8-88608d44eee9.png)

次にKarabiner-Elementsを開き、Profilesタブをクリックします。

初めての方は`Default profile`でOKですが、再設定したい場合は新しいprofileを作成すれば現在のprofileに手を加えずに安全に作業できます。

`selected`でチェックが入っているのが現在の設定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/870772/5be0058a-e14e-2f45-d1c6-5942193e1ea0.png)

`complex_modifications`のタブを開いて左下の`+Add rule`から機能を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/870772/4337dad5-0bbf-84fb-f38a-06656f3cdbdd.png)


`CapsLock to Hyper/Escape`の右にある`Enable`を押すと有効化されます。(他のHyper...はここでは有効化しません)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/870772/512b6fd9-8567-8627-4160-c217041ba702.png)


これで`capslock`が`cmd+shift+ctrl+opt`の4キー同時押しになります。また、単独で押すと`esc`キーとして動作します。

お好きなアプリケーションのショートカットを設定をして効率的な環境を作って下さい。


## 独自設定の方法

「便利そうだけど、もう`capslock`は`ctrl`にアサインしてて慣れちゃってるんだよなー」という方。
自分もそうでしたが、今は頻繁に使う`ctrl+a`と`ctrl+e`だけ`capslock`にアサインしています。`ctrl+c`も結構使うけどそれはそのまま元の`ctrl`キーを使っています。
なので一度、独自の設定をしてみることをオススメします。


独自設定の方法はこちらに詳しく書いてあるので参照して下さい。

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

ただし、記事にも書いてあるのですが、`karabiner.json`ではなく`/assets/complex_modifications/`の中に新しいjsonファイルを作ったほうがわかりやすくて失敗しませんのでオススメです。

### 設定例

以下は私が実際に使用している`Karabiner-Elements`の設定です。

#### コマンドキーを単体で押したときに、英数・かなキーを送信する

USキーボードの場合、英数とかなを切り替えるのに左右のcmdキーで切り替えます。

#### Quit application by pressing command-q twice

うっかり`cmd+q`を押してしまうとアプリが終了してしまうのを防止します。`cmd+q`を2回押すことで終了できるようになります。

#### Hyper Navigation

> ここからは私の独自設定です。[こちらのgist](https://gist.github.com/atu4403/683f580f8464a0b9f8eefd1e13300604)に設定方法が書いてありますので、同じ設定にしたい場合はダウンロードして使うことができます。

vimに慣れている方は`hjkl`でカーソル移動を行いますが、私は何回も挫折しました。感覚的に上と下が横並びというのが慣れません。なので`jikl`をアサインしています。もちろん`capslock`との同時押しです。さらに`左shift`同時押しで選択もできます。

#### Hyper Control

`ctrl+a`と`ctrl+e`だけ`capslock+a`と`capslock+e`にアサインしています。


#### Hyper ScreenShot

`capslock+3`で全画面スクリーンショット、`capslock+4`で選択範囲スクリーンショットを取ります。保存ではなくクリップボードにコピーされますので、そのままqiitaやtwitterの投稿画面でpasteできます。

## まとめ

お気づきの方も多いと思いますが、[Capslock Enhancement](https://github.com/Vonng/Capslock)をimportすると色んな`Hyper〇〇`が一緒に入ります。　　
便利なものもありますが、何でもかんでも有効化してしまうと結局はアプリごとに使えるショートカットが減ってしまいます。

あまり使わないものはできるだけ有効化しないことが便利な環境を作り上げるコツだと思います。

---

[Karabiner\-Elements 設定項目](https://gist.github.com/atu4403/683f580f8464a0b9f8eefd1e13300604)

こちらに私の設定ファイルを置いていますので参考にして下さい。(ついでにstarもお願いします)
また、「便利な設定ファイル作ったよ！」という方はコメント欄から教えて下さい。