macOS Sierra で外付けキーボード設定ツール Karabiner と Seil が使えなくなった際の対処法

この記事は、 OS X El Capitan から macOS Sierra にアップデートした際に、キーボード設定を行うためのツール [Karabiner](https://pqrs.org/osx/karabiner/index.html.ja) と [Seil](https://pqrs.org/osx/karabiner/seil.html.ja) が動かなくなり、外付けキーボードがお気に入りの設定で使えなくなってしまった際の対処法を記したものです。

Karabiner の作者さんにより macOS Sierra 対応が行われいているようなので、本記事は Karabiner アップデートまでの暫定措置になることと思います。

# 更新履歴
- 2016/11/06: Karabiner-Elements v0.90.61 にてUS配列として認識される問題が解決しました！JIS配列として認識させる方法を追記しました。コメントを下さったmono0926さんありがとうございます！
- 2016/10/15: Karabiner-Elements v0.90.50 が公開されましたが、このバージョンでもUS配列として認識される問題は解決していないようです。筆者は[当該Issue](https://github.com/tekezo/Karabiner-Elements/issues/278)に添付されている 0.90.46 を利用して問題を回避しています。
- 2016-10-11: Karabiner-Elements v0.90.48 が公開されました。このバージョンではキーボードが自動的に英字配列として認識されてしまうのでご注意下さい。GUIによるキーバインド設定が可能になったのは良いのですが・・・。

# やりたいこと
1. 外付けキーボード（筆者は [REALFORCE91UBK-S](http://amzn.to/2cYwTwl) を使用)を以下のキーバインドに設定すること
  - 半角/全角(E/Jキー) → かな/英数をトグル切替
  - Caps Lockキー → Ctrlキー
  - Windowsキー → Optionキー
  - Altキー → Commandキー
  - 無変換キー → 英数キー
  - 変換キー → かなキー
2. Mac Book Pro のキーボードでは標準のキーバインドで操作が行えること


![IMG_2263.png](https://qiita-image-store.s3.amazonaws.com/0/95337/54e0ad4d-a332-e520-5a4f-1ec9e68659cc.png)



# 設定手順
## Karabiner と Seil のアンインストール
Karabiner と Seil を開いて "Misc" → "Launch uninstaller" を選択します。

## Karabiner-Elements のインストール
[Karabiner-Elements のGitHub](https://github.com/tekezo/Karabiner-Elements) から Karabiner-Elements の最新版をダウンロードしてインストールします。([.dmgファイルへのリンク](https://pqrs.org/latest/karabiner-elements-latest.dmg))

## Karabiner-Elements 設定ファイルの作成
~~Karabiner-Elements を起動すると設定ファイルの作成手順が書かれているので、説明に従います。~~
2016/10/11 追記: Karabiner-Elements v0.90.48 から、GUIによってキーバインドを設定できるようになりました！ 筆者の設定は以下の通りです。
![設定画面.png](https://qiita-image-store.s3.amazonaws.com/0/95337/d8d3b494-c09e-7def-aeda-6cd312fa4716.png)

## Karabiner-Elements 設定ファイル(karabiner.json)の設定
ここまで手順通りに実施すると、 ~/.karabiner.d/configuration/karabiner.json が作成されているかと思います。
2016/10/11 追記: GUIで設定できるようになったので、jsonファイルを弄る必要はありませんね。

筆者の karabiner.json の設定は以下の通りです。

```json:karabiner.json
{
    "profiles": [
        {
            "name": "Default profile",
            "selected": true,
            "simple_modifications": {
              "caps_lock": "left_control", // Caps Lockキー → Ctrlキー
              "left_command": "left_option", // Windowsキー → Optionキー
              "left_option": "left_command", // Altキー → Commandキー
              "japanese_pc_nfer": "japanese_eisuu", // 無変換キー → 英数キー
              "japanese_pc_xfer": "japanese_kana", // 変換キー → かなキー
              "grave_accent_and_tilde": "f13" // 半角/全角(E/Jキー) → かな/英数をトグル切替
            }
        }
    ]
}

```

Karabiner-Elements をインストールすると、自動的に Karabiner-EventViewer がインストールされます。 Karabiner-EventViewer を開きながら外付けキーボードのキーを押下すると、変更対象となるキーを簡単に知ることができます。

![スクリーンショット 2016-10-08 18.29.54.png](https://qiita-image-store.s3.amazonaws.com/0/95337/80dc9b4f-8ef7-227b-9cab-b878645cbdfc.png)

キーコードと、 karabiner.json に記入するキーを表す文字列("caps_lock"等) がわからない場合は、[Karabiner-Elementsのソースコード](https://github.com/tekezo/Karabiner-Elements/blob/master/src/share/types.hpp#L177-L369) を開いて、16進数のキーコードで検索をかければ簡単に見つけられます。


## 半角/全角(E/Jキー) を かな/英数 のトグルに設定する

最後に、半角/全角キーでかな/英数のトグル切替を行うための設定方法です。
karabiner.json では、"grave_accent_and_tilde"キーを"F13"に設定しました。
筆者のキーボードの場合、半角/全角キーのキーコードが 0x32 で、 "grave_accent_and_tilde" というキーがそれに当たります。
また、F13キーについては、他にショートカットキーとして設定していなかったため、このキーを選びました。

システム環境設定 > ショートカット > 入力ソース > 前の入力ソースを選択 のキーを F13 に設定してあげればOKです。

![スクリーンショット 2016-10-08 18.39.27.png](https://qiita-image-store.s3.amazonaws.com/0/95337/ea7b3b69-94af-6c54-e4c1-ff973b28f8fd.png)

## JIS配列として認識させる方法

Karabiner-Elements のインストール後、キーボードがUS配列として認識されてしまいます。 Devices タブの該当キーボードの Keybord Type を "JIS" に設定することによって、JIS配列として認識させることができます。

![スクリーンショット_2016-11-06_23_34_25.png](https://qiita-image-store.s3.amazonaws.com/0/95337/30015d27-17d4-c9bf-9c93-7ecff264b7c9.png)


## 上記キーバインドを無効にしてデフォルトに戻す方法

キーボードの接続を解除した時など、Mac本体のキーボードではデフォルトのキーバインドで制御したいことがあります。
そういった場合は Karabiner-Elements を開き、左下の "Quit Karabiner-Elements" ボタンを押下すると Karabiner-Elements が終了し、設定が無効化されます。


# まとめ
本記事では、 macOS Sierra でも外付けキーボードを快適に使用するために、Karabiner-Elements を用いて設定を行う方法を記載しました。
mac でもお気に入りのキーボードで気持ちよく仕事がしたいものですよね。