MacでWindows外付けキーボード(RealForce)を使う際のキーマッピング


## 背景
Macをメインで使い出して1年弱、純正のBluetoothキーボードを多用していたのですが、どうも使い心地が気になる。

押し心地が良いキーボードが欲しい、とネットを漁っていたところ、以前から目にしていた、東プレRealForceかPFU HHKBが欲しくなってしまった。
長い付き合いができるから、と自分を納得させて、奮発して[RealForce91UBK](http://www.amazon.co.jp/%E6%9D%B1%E3%83%97%E3%83%AC-NG01B0-REALFORCE91UBK/dp/B000EQHU6M)を購入しちゃいました。

ただ、MacbookProをノートで使う場面、Macの純正外付けキーボードも引き続き使う場面、そしてRealForceを使う場面と3パターンが発生するため、KarabinerとseliというソフトとMacの設定を駆使しました。

その際に、ピンポイントな記事がなかなか見つからなかったので記載しておきます。

## 前提
- PCはmacbookPro
- apple bluetooth keyboardはそのままのキーマップで使いたい
- RealForce(JIS)を使う際は、Macに合ったマッピングしたい

## Realforceで変更したキー
- CapsLockはCtlに変更
- E/Jはescに変更
- 左のAltと左のCommand(キーボード上はウィンドウボタン)を入れ替え
- 変換/無変換を、それぞれ、英数/かなに変更
- KANAをCommandに変更
- 右AltをFnに変更
- ApplicationもFnに変更
- PrintScreen, ScrollLock, Pauseをそれぞれ、VolumeOff, VolumeDown, VolumeUPに変更

## 使ったソフト
- Karabiner(https://pqrs.org/osx/karabiner/index.html.ja)
- Seli(https://pqrs.org/osx/karabiner/seil.html.ja)

非常に高機能です。
自分でxmlファイルを編集してマッピングできます。

## 1.Macの設定
### 1-1.CapsLockを一旦off
元々Macでも使ってなかったし、後ほどSeliでCtlを割り当てる際にその方が良いらしい。  
MacのConfig -> Keyborad -> CapsLockをNoActionにする。  
![Screen Shot 2016-04-14 at 18.04.44.png](https://qiita-image-store.s3.amazonaws.com/0/87650/1a8c2138-3299-2c09-6b49-1a0ab3055515.png "Screen Shot 2016-04-14 at 18.04.44.png")

## 2.Seliの設定
### 2-1.CapsLockをCtlに
Change the caps lock key -> Change the caps lock keyにチェック, keycordを59に

### 2-2.変換/無変換を、それぞれ、英数/かなに変更
- For Japanese -> Enable NFER Key on PC keyboard を102
- Enable XFER Key on PC keyboard を104
にそれぞれ設定

### 2-3.KANAをCommandに
- For Japanese -> Enable KATAKANA Key on PC keyboardを54に

### 2-4.設定後の画像は下記の通り
![Screen Shot 2016-04-14 at 18.09.00.png](https://qiita-image-store.s3.amazonaws.com/0/87650/df4b533a-5727-8e68-caf8-472bb7c55771.png "Screen Shot 2016-04-14 at 18.09.00.png")

## 3.Karabinerの設定
### 3-1.ApplicationをFnに
Preference -> Change Key -> For PC Users -> Application Key to Fn にチェック

### 3-2.E/Jをescに変更
Preference -> Change Key -> Change Backquote Key -> Backquote to Escape にチェック

### 3-3.PrintScreen, ScrollLock, Pauseをそれぞれ、VolumeOff, VolumeDown, VolumeUPに
Preference -> Change Key -> Change PC Printcsreen Key, ... -> Right-hand function key block to system volume controls にチェック

### 3-4.左のAltと左のCommand(キーボード上はウィンドウボタン)を入れ替え / ApplicationもFnに変更 
Realforceを使う場合だけ有効にしたので、private.xmlを使います。
Preference -> Misc & Uuinstall -> Custom Setting -> Open private.xml で、xmlファイルを編集していきます。
private.xmlの基本的な書き方はココ([private.xml Reference Manual](https://pqrs.org/osx/karabiner/xml.html.ja))を参照。

最終的なコードは下記の通りです。

```private.xml
<?xml version="1.0"?>
<root>
  <devicevendordef>
    <vendorname>TOPRE</vendorname>
    <vendorid>0x0853</vendorid>
  </devicevendordef>
  <deviceproductdef>
    <productname>RealForce</productname>
    <productid>0x0200</productid>
  </deviceproductdef>

  <item>
    <name>Change keymapping in my RealForce</name>
    <identifier>private.realforcemapping</identifier>
    <device_only>DeviceVendor::TOPRE, DeviceProduct::RealForce</device_only>
    <autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
    <autogen>__KeyToKey__ KeyCode::COMMAND_L, KeyCode::OPTION_L</autogen>
    <autogen>__KeyToKey__ KeyCode::OPTION_R, KeyCode::FN</autogen>
  </item>
</root>
```

#### `private.xml` について簡単な解説
- devicevendordef, deviceproductdefで、Realforceのidを設定(これは、Launch Event Viewer -> Device でidを確認する。vendornameとproductnameは何でも良い)
- identifierは、private.{hogehoge} という記載をする(hogehogeはなんでも良い)
- device_onlyは、このデバイスだけのキーマップという記載
- autogenに、マッピングを書いていく(割と見たまんま。KeyCodeは[ココ](https://github.com/tekezo/Karabiner/blob/version_10.18.0/src/bridge/generator/keycode/data/KeyCode.data)で確認可能)
- ちなみに上記には書いてないですが、私は特定のマウスの動作設定もprivate.xmlで設定しています
- 特定のアプリケーションに限ったキーマッピングも簡単に記載できます


以上。

初めての高級キーボードは使っていてとても気持ちが良いものです。
かわいがって長い付き合いをしようと思います。