Happy Hacking Keyboardを買ってWindowsに設定したこと

# 追記（2019/12/07）

- Windows10 ver.1809以降のバージョンでは、「レジストリ書き換えによるUS配列認識」を使ってJIS/USキーボード配列を共存させることが不可になっているようです。解決方法は不明です。
- 一旦は、ULE4JIS等の代替手段で運用するのが良いかと思われます。

# はじめに
## HHKBを買いました

先日、念願のHappy Hacking Keyboard（いわゆるHHKB）を手に入れました。
早速、仕事に自宅に、使い倒してます。

買ったのは、以下の製品です。

- Happy Hacking Keyboard Professional 2
    - 墨、刻印入り
    - US配列

いろいろな環境で使う中で、HHKBを普段使いしていく上で手になじむ設定方法が固まってきましたので、自分のメモとしてここに残しておこうと思います。

## この記事が有益な人

- 複数の異なる環境でも出来るだけ同じ設定でHHKBを使いたい人
- 実行権限が与えられていない環境（会社のThinクライアントとか）でもUS配列キーボードを使いたい人
- HHKBのCtrl操作をJIS配列でも実現したい人


# 設定の方針

## 設定をする上での条件

- 実行権限を要する操作を極力行わない
    - すなわち、**レジストリ設定は極力いじらないようにします**
    - 簡便性のためにレジストリをいじる場合も、**代替策**を用意します
- HHKBの本来のキーアサインは極力崩さず、（個人的に）不便なところのみ改善する

## 設定をした結果実現すること

- ノートPC自体のJIS配列入力は残しつつ、HHKBのUS配列入力を実現
- 日本語入力の"全角/半角"キー操作を、"Ctrl + Space"で実現
- ノートPCのJIS配列キーボードも、CapsLockキーにCtrlキーをアサインすることでHHKBライクな操作を実現

# 設定内容

## HHKBの設定

DIPスイッチの設定は、以下の設定にしました。

| DIP switch       |  On/Off           |
|:-----------------:|:------------------:         |
| SW1             |              On |
| SW2           |            Off |
| SW3             |              On |
| SW4               |                On |
| SW5             |             Off |
| SW6          |           Off |

これによって、DeleteキーがBackSpaceに、左◇がFnキーに設定されます。

## PCの設定

### HHKBのUS配列を認識させる

#### レジストリ書き換えによるUS配列認識

いきなり条件を破ってしまいますが、やっぱりレジストリが書き換えられる環境ならこのやり方が安定です。
以下の設定を行います。
**レジストリを変更することになるので、自己責任でお願いします。**

1. レジストリエディタを起動
2. ¥ HKEY_LOCAL_MACHINE ¥ SYSTEM ¥ CurrentControlSet ¥ Services ¥ i8042prt ¥ Paremeters を開く
3. バックアップとして、開いたParametersの設定をエクスポートする
4. Parametersの中にあるLayerDriver JPNの内容を、kbd106.dllから kbd101.dll に変更
5. PCを再起動

これで、外付けのHHKBがUS配列のキーボードとして認識するようになります。

#### ULE4JISによるUS配列認識

ULE4JISを使うと、Windowsにキーボード入力をUS配列と認識させることができます。機能の有効／無効はタスクトレイから簡単に操作可能です。
ただし欠点は、有効化した状態だとHHKBだけでなくPCのJIS配列キーボードまでもUS配列と認識されてしまうこと。HHKBを外して使う時には、忘れずにULE4JISを無効化しましょう。
ULE4JISのインストールは以下を参照してください。

https://www.vector.co.jp/soft/winnt/util/se476294.html

### "Ctrl + Space"で全角／半角を切り替える

AutoHotkeyを導入して実現します。

1. [AutoHotkey公式](https://www.autohotkey.com/)からZip版*1をダウンロードし解凍
2. 解凍したら、exeファイルと同じ名前の設定ファイル（拡張子.ahk）を作成（後述）します。
3. exeファイルを実行し、意図した動作をしているかどうか確認
4. exeファイルのショートカットをスタートアップに作成

*1ソフトウェアのインストールが利用できない環境を想定してZip版を選択しています

#### レジストリを変更している環境の場合の設定ファイル

~~~
^Space::Send, {vkF3sc029} ; Ctrl+Spaceで"全角/半角"キー送信
~~~

#### ULE4JISを使用している環境の場合の設定ファイル

~~~
^Space::Send, !{vkF3sc029} ; Ctrl+SpaceでAlt+"全角/半角"キー送信
~~~

### KeySwapの導入

これはHHKB自体の使い勝手には関係ないので、必要ない人は飛ばしてください。

HHKBを使っていると、左手小指でCtrlを使うことに慣れてしまい、JIS配列のキーボードに戻った際に誤ってCapsLockキーを押してしまうことが起こると思います。
そこで、JIS配列でも左手小指Ctrlを実現するために、CapsLockキーとCtrlキーを入れ替えたいと思います。

1. [KeySwap for XP](https://www.vector.co.jp/soft/winnt/util/se228667.html)をダウンロードして解凍
2. KeySwap.exeを起動し、以下のキーアサインを設定
    3. CapsLockを右Ctrlに
    4. 右CtrlをCapsLockに
3. KeySwapを終了し、PCを一旦ログオフし、設定が反映されているかどうか確認

これで、JIS配列キーボードのCapsLockキーを押すとCtrlが入力されるようになります。

# 最後に

- これまで、以下のような異なる環境で異なるキーアサインを使っていたため、不要なタイプミスで作業効率が下がってしまってました。
    - 職場・業務用：JIS配列+Win7(Thinクライアント端末)
    - 職場・開発用：US配列+Linux
    - 自宅：JIS配列+Win10
- これからは、何処へ行くにもHHKBを持ち歩いて、US配列で快適なPCライフを送りたいと思います。

## 参考URL
- HHKB 公式FAQ
    - https://www.pfu.fujitsu.com/hhkeyboard/hhkb_support/faq_other.html
- ULE4JISダウンロード
    - https://www.vector.co.jp/soft/winnt/util/se476294.html
- 『AutoHotkey』の使い方メモ【ふわっとした個人メモ】
    - http://wg16.hatenablog.jp/entry/autohotkey_001
- AutoHotKeyでCtrl+Spaceを全角／半角切り替えを行う
    - https://qiita.com/chesscommands/items/bfef1fae2b21553bd5f6
- KeySwapダウンロード
    - https://www.vector.co.jp/soft/winnt/util/se228667.html