Macbook（US配列）とエルゴノミックキーボード（JIS配列）を併用する

MacbookにWindowsキーボード『Sculpt Ergonomic Desktop(L5V-00030)』という組み合わせを始めました。
![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/45199a11-cf39-79cf-c61c-57378e0cb98e.jpeg)
JIS配列とMacbookのUS配列のキーボードは当然差がありますが、これらをなるべく違和感なく併用でき、かつなるべくキーボードの表記通り（純正の仕様）を崩さない形でカスタマイズするのに問答したので、そんな同じようなこだわりを持つ変人な貴方へ、私の設定方法を残しておきます。

##前提
現状では色んな背景があり、Macbook Pro（US配列）のみを使用しているものの、キーボードだけ WindowsのJIS配列を使う事になったので、その前提で説明させてもらいます。

##結論：カスタマイズしたWindowsキー
- AltをCommandに
- 無変換を英字
- 変換をかなに
- 「カタカナひらがな」をCommandに


まず、基本的なキー配列のカスタマイズは、このエルゴノミックキーボード向けに書かれた記事ですが、他のキーボードでも同じかと思うので以下が参考になります。
https://qiita.com/kuniatsu/items/40e2eff0f50770b28a2a

Karabiner-Elements は以下の公式サイトからダウンロードしてください。
https://pqrs.org/osx/karabiner/

また押したキーのキーコードを調べるのは設定に使う`Karabiner-Elements`ではなく、`Karabiner-EventViewr`の方です。
<img width="648" alt="スクリーンショット 2020-02-19 18.04.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/0c9e053b-f14f-ebac-72c6-5fee0e8c32ed.png">

##Karabinerの設定値
<img width="1001" alt="スクリーンショット 2020-02-19 18.45.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/a8a0b9b3-0325-7bf3-049a-7034e26af7cd.png">


##こだわりポイント
![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/22c2b84a-27b1-324b-601b-5ede0fc8173d.jpeg)

###Commandキーを増やす
MacbookのFキーと左Commandの位置関係、Jキーと右Commandの位置関係が、Windowsキーボードでも同じようになるようにしました。

本来、Windowsキーが左Commandにもともと割り当てられているので、それを使おうとしたのですが

- Cmd + Tab: アプリケーション切り替え
- Cmd + Z,X,C,V： 元に戻す、切り取り、コピー、ペースト

この辺りの操作を頻繁に行うため、位置的に小指か薬指でしか押せないWindowsキーをCommand代わりに使うとホームポジションが崩れざるを得ないのです。

Macbook（US）のFキーと左Commandキーの位置関係的に、同じ場所に相当するのはAltキーでした。本来AltはOptionキーが標準で割り当てられており、これを変更するのは心苦しかったのですが、背に腹は変えられない（左Optionって使うのはChromeでComand+Option+iの開発者ツールを開くくらいだった）のでCommandに変更しました。

###無変換キーを英字に、変換キーをかなに
Windowsキーボードのスペースキーの左右にある`無変換`は`英字`に、`変換`は`かな`に変更。これはMacbookのJIS配列と同じ配置です。

MacのUS配列ユーザーならお馴染みのCtrl+Spaceで英字かな切り替えができるので、無変換・変換のカスタマイズはいらないかなと思ったのですが、スペースキーの打キー音がうるさかったりしますし、トグルなので押した後「今、英字とかなどっちに切り替わったんだっけ？」という思考を一瞬せねばならない時があります。

一方で「スペースの左を押したら必ず`英字`になる／右を押したら必ず`かな`になる」というのが分かっていれば、思考の邪魔が入ることはないのであえてカスタマイズしました（そもそも無変換・変換キーをどう使うか知らなかったというのは内緒です）。

これらのカスタマイズをすると特に左下がキーボード上の表記とは大きく変わります。

- 本来：Ctrl、Windows、Alt、無変換
- カスタマイズ後：Ctrl、Command、Command、英字

のようになっている訳です…。美しくないですが左下のCommandキーは効率化の主役なので止む無しです。

##キーボードの種類変更問題が発生
JISとUSキーボードを利用しているとMacのShftを押した時のキーがずれる問題が起こった。原因はMacにはJISとUS（ANSI）のどちらか一方しかキーボードの種類を選べないようだった。

これも非常に心苦しいが、Mac標準搭載の自動化ツールAutomatorで無理くり画面のクリックなどを操作して切り替えるショートカットを作成した。詳しいやり方は下記の方のブログ記事を参考にされたし。
https://kyogom.com/tech/ansi-to-jis/

なお上記ブログにあるスクリプトエディタ.appでのファイルの作成はおまけで、基本はAutomatorに設定処理を登録して、それをFunction＋1で呼び出しましょうよというコンセプトだが、僕の場合はFunction＋1などにMacbookのUSキーの機能とMicrosoftのJISキーの機能が既に色々割り当てられているので、`Command+Space`でSpotlightから`ansi-keybord.script`か`jis-keyboard.script`を検索して開き、`Command+R`で実行。設定が変わったら`Comand+Q`でシステム環境設定とスクリプトエディタ.appを終了する、という方法をとった。


##その他

###Ctrlによるカーソル移動
Karabinerを使わずともMacbookにはショートカットキーが色々割り当てられていますね。

- システム環境設定＞キーボード＞修飾キー で Caps Lock をCtrlに変更
- Ctrl+P,N,B,Fの上下左右カーソル移動
- Ctrl+A,K,Y：カーソルを先頭移動、カーソル以降を切り取り、貼り付け
- Ctrl+D,H　：DeleteとBackspace
- Ctrl+Space：英字かな切り替え

ただしカーソル移動はあくまでカーソルがアクティブな時だけに有効なので、ExcelやGoogleスプレッドシートなんかでセルを上下左右に移動させるには矢印キーを使わないといけないい（泣）。CtrlやCommandによるショートカットで代用する方法を知っていたらぜひ教えて欲しいです！

##変換キー＋hjklを矢印キーに変更
上記のカーソル移動はあくまでカーソルがアクティブな時だけに有効なので、ExcelやGoogleスプレッドシートなどでセルを移動することはできない。しかしこれもKarabinerで変換キー＋hjklを矢印キーに割り当てることで解消した。

参考にしたのは[こちら](https://matsuoshi.hatenablog.com/entry/2018/12/19/000000)の記事。もともとKarabinerの`Complex Modifications`のExampleには右Command＋hjklを矢印キーの代わりに割り当てる設定があるが、これだとCommand＋○の本来のショートカット機能を殺してしまう。

そこで上記の方は英数キーに割り当てているようだが、僕の場合はそもそもMicrosoftのJISキーボードなので`変換`キーを英数に割り当てている。なので設定のJSONファイルも`japanese_eisuu`を`lang2`に書き換えた（`international5`でないことに注意）。

```
{
  "title": "Eisu Cursor",
  "rules": [
    {
      "description": "Change Lang1 + hjkl to arrow keys",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "lang1"
          },
          "to": [
            {
              "set_variable": {
                "name": "eisuu",
                "value": 1
              }
            }
          ],
          "to_after_key_up": [
            {
              "set_variable": {
                "name": "eisuu",
                "value": 0
              }
            }
          ],
          "to_if_alone": [
            { 
              "key_code": "lang1"
            }
          ]
        },
        {
          "type": "basic",
          "from": { 
            "key_code": "h",
            "modifiers":{
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            { 
              "key_code": "left_arrow"
            }
          ],
          "conditions": [
            { 
              "type": "variable_if", 
              "name": "eisuu", 
              "value": 1
            }
          ]
        },
        {
          "type": "basic",
          "from": { 
            "key_code": "j",
            "modifiers":{
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            { 
              "key_code": "down_arrow"
            }
          ],
          "conditions": [
            { 
              "type": "variable_if", 
              "name": "eisuu", 
              "value": 1
            }
          ]
        },
        {
          "type": "basic",
          "from": { 
            "key_code": "k",
            "modifiers":{
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            { 
              "key_code": "up_arrow"
            }
          ],
          "conditions": [
            { 
              "type": "variable_if", 
              "name": "eisuu", 
              "value": 1
            }
          ]
        },
        {
          "type": "basic",
          "from": { 
            "key_code": "l",
            "modifiers":{
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            { 
              "key_code": "right_arrow"
            }
          ],
          "conditions": [
            { 
              "type": "variable_if", 
              "name": "eisuu", 
              "value": 1
            }
          ]
        }
      ]
    }
  ]
}
```


###Chromeのショートカットでおすすめ
Command+[での戻るはホームポジションをずらさずに戻るができるので良さそうです。またViminiumというChrome拡張機能を入れると、jでPagedown、giでページ内のテキストフィールドをアクティブにする、fでページ内にあるリンクをマウスを使わずクリックなどができるのでおすすめです。
https://qiita.com/satoshi03/items/9fdfcd0e46e095ec68c1

##最後に
結局やりたいことはマウスや矢印キー、Backspaceキーに手を持っていくことでホームポジションが崩れて効率が落ちるのが嫌なので、これらを使わないでPCライフを送れると最高ですね！