macでRealforceを使う karabiner-Elements設定メモ

TouchBar搭載のMacBookProでvimを使用していましたがさすがに限界だったのでキーボードを購入
HHKBはどうも好きじゃないというかファンクションキーを多様するタイプなのでRealforceを購入

HHKBの設定サンプルは多かったがRealforceの設定を残している記事は少なかったので忘れないようにメモ
~~決して年末お仕事が暇だったからではない~~
karabiner-Elementsの機能が充実したあとでよかった。

色々な記事を参考にしましたが、karabiner-Elementsのタグでだいたいはたどり着けると思います。
そっちの方がより詳しく書いてると思います。

## 環境

 - MacBook Pro (15-inch, 2017)
 - OS Sierra
 - Realforce91UBK-S NG01BS

## インストールしたもの

- karabiner-Elements
  - C++とかインストールする必要があった。環境によっても変わると思うのでインストール作業は他の記事をググろう。

## 設定手順等

コンセプトはmacの標準の日本語配列っぽくすること
とりあえず接続してkarabiner-Elementsを起動 

 - Devicesタブの上部(Modify events from this device)のRealForceにチェックを入れる
   -  Manipulate LEDはオフでいいはず（CapsLockのLEDを光らせるかどうかの設定だとおもう
 - Devicesタブの下部（Disable the build-in keyboard〜〜〜）のチェックは外す
   - チェックしたものが有効な時に他のキーボードが無効になるとかの設定だと思われる。
 - Virtual Keyboardタブ Keyboard Type:JISにチェック
 - Complex ModificationsタブのRulesでAdd ruleをクリック
   - Import More rules from Internetをクリック
   - For Japanese （日本語環境向けの設定）をインポート（rev3だった）
     - とりあえず全部enableにする
     - (2018/11/06追記) Mojaveにアップデートした後に、commandキーがうまく認識しなかったので、「コマンドキーをオプションキーに置き換える」のオプションは外した
 - Function Keys
   - Function Keyの設定 お好みで。
   - Use all F1, F2, etc. keys as standard function keysを有効にする
     - ファンクションキーを有効にするかFnキーを押した状態でファンクションキーが使えるかの切り替えだったはず 

 - Simple Modificationsタブ

| From Key            |            To Key | 
|:--------------------|------------------:|
| application         |     right_command |
| caps_lock           |      left_control | 
| PCキーボードのかなキー   |             right_command |
| PCキーボードの無変換キー |                英数キー |
| PCキーボードの変換キー   |             かなキー |
| left_alt(equal to left_option) |  left_command |
| left_gui(equal to left_command)| left_option|
| print_screen| eject |
| right_alt(equal_to right_option)| fn|

一応会社用で離席時にスリープしたいのでejectキーを追加
ワンポチでスリープを呼び出すとかにしたかったが設定するのが面倒だったのでejectキーにして
ctrl + shift + eject(Print Screen)でスリープのショートカットを呼び出しで。
なお、キーボードにする前はTouchBarにスリープボタンを設置していた。これはこれで便利。

fnキーはなんだかんだ必要なので追加。
Deleteキーあってもやはりfn + BackSpaceを使っちゃいますね。

あと、なぜかPauseキーとScrollLockキーで画面の輝度調整になっていた。
実際不要だが困ってないのでこれはそのままで。


## 設定json

設定ファイルの場所
$HOME/.config/karabiner/karabiner.json

関係ないのも含まれてるけど一応そのままコピペ
半角/全角キーがJISキーボードのように状態に応じて切り替えるようにしているのは直接jsonに追記した
半角/全角キーのキーコードは`grave_accent_and_tilde`

```
{
    "global": {
        "check_for_updates_on_startup": true,
        "show_in_menu_bar": true,
        "show_profile_name_in_menu_bar": false
    },
    "profiles": [
        {
            "complex_modifications": {
                "parameters": {
                    "basic.to_delayed_action_delay_milliseconds": 500,
                    "basic.to_if_alone_timeout_milliseconds": 1000
                },
                "rules": [
                    {
                        "description": "JISキーボードの全角/半角キーをIMEのON/OFF切り替えキーに変換。",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "language": "en"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "grave_accent_and_tilde"
                                },
                                "to": [
                                    {
                                        "select_input_source": {
                                            "input_source_id": "^com\\.apple\\.inputmethod\\.Kotoeri\\.Japanese$"
                                        }
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "language": "ja"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "grave_accent_and_tilde"
                                },
                                "to": [
                                    {
                                        "select_input_source": {
                                            "input_source_id": "^com\\.apple\\.inputmethod\\.Kotoeri\\.Roman$"
                                        }
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "コマンドキーを単体で押したときに、英数・かなキーを送信する。（左コマンドキーは英数、右コマンドキーはかな） (rev 2)",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "left_command",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_command",
                                        "lazy": true
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "from": {
                                    "key_code": "right_command",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "right_command",
                                        "lazy": true
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_kana"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "英数・かなキーを他のキーと同時に押したときに、Optionキーを送信する",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "japanese_eisuu",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_option"
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "from": {
                                    "key_code": "japanese_kana",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "right_option"
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_kana"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "escキーを押したときに、英数キーも送信する（vim用）",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "escape"
                                },
                                "to": [
                                    {
                                        "key_code": "escape"
                                    },
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Ctrl+[を押したときに、英数キーも送信する（vim用） (rev 2)",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "keyboard_types": [
                                            "ansi",
                                            "iso"
                                        ],
                                        "type": "keyboard_type_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "open_bracket",
                                    "modifiers": {
                                        "mandatory": [
                                            "control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "open_bracket",
                                        "modifiers": [
                                            "control"
                                        ]
                                    },
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "conditions": [
                                    {
                                        "keyboard_types": [
                                            "jis"
                                        ],
                                        "type": "keyboard_type_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "close_bracket",
                                    "modifiers": {
                                        "mandatory": [
                                            "control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "close_bracket",
                                        "modifiers": [
                                            "control"
                                        ]
                                    },
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
            },
            "devices": [
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "fn_function_keys": [],
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 632,
                        "vendor_id": 1452
                    },
                    "ignore": true,
                    "manipulate_caps_lock_led": true,
                    "simple_modifications": []
                },
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "fn_function_keys": [],
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 512,
                        "vendor_id": 2131
                    },
                    "ignore": false,
                    "manipulate_caps_lock_led": false,
                    "simple_modifications": []
                }
            ],
            "name": "Default profile",
            "selected": true,
            "simple_modifications": [
                {
                    "from": {
                        "key_code": "application"
                    },
                    "to": {
                        "key_code": "right_command"
                    }
                },
                {
                    "from": {
                        "key_code": "caps_lock"
                    },
                    "to": {
                        "key_code": "left_control"
                    }
                },
                {
                    "from": {
                        "key_code": "japanese_pc_katakana"
                    },
                    "to": {
                        "key_code": "right_command"
                    }
                },
                {
                    "from": {
                        "key_code": "japanese_pc_nfer"
                    },
                    "to": {
                        "key_code": "japanese_eisuu"
                    }
                },
                {
                    "from": {
                        "key_code": "japanese_pc_xfer"
                    },
                    "to": {
                        "key_code": "japanese_kana"
                    }
                },
                {
                    "from": {
                        "key_code": "left_alt"
                    },
                    "to": {
                        "key_code": "left_command"
                    }
                },
                {
                    "from": {
                        "key_code": "left_gui"
                    },
                    "to": {
                        "key_code": "left_option"
                    }
                },
                {
                    "from": {
                        "key_code": "print_screen"
                    },
                    "to": {
                        "key_code": "eject"
                    }
                },
                {
                    "from": {
                        "key_code": "right_alt"
                    },
                    "to": {
                        "key_code": "fn"
                    }
                }
            ],
            "virtual_hid_keyboard": {
                "caps_lock_delay_milliseconds": 0,
                "keyboard_type": "jis"
            }
        }
    ]
}

```

## 使用感等

最初はどれがどのキーマッピングかわからなかったが少し調べれば設定できたので楽だと思います。
Realforceはキーがスコンスコンはいるので気持ちいですね。買ってよかったです。
難点としては物理的に重いことですかね。
あとMacBookProに強引に乗せて使っているので少し心配です。