HHKB Professional JPをAlternative ControllerでBluetooth化しつつJISキーを使えるようにした

全国1000万人のType-S以前のHHKBが好きな人こんばんは。今は無線かつ静音なHybridシリーズがあるので、面倒なことをしたくない人はそっちを買ってください。

自分はProfessional JPの黒(PD-KB420B)をえらい時間かけて低押下圧かつ静音に改造しているので、これを何とか無線化したかった。

このためにカスタムのキーボードコントローラーがいくつか存在し、有名なのはhasu氏作成のAlternative Controller for HHKBのBluetooth版である。

ただAlternative ControllerのBluetooth版は、搭載するBluetoothモジュールの制限でJISキーを入力できない。USB接続だと打てるが「\」と「_」、「\」と「|」という割と使うキーがBluetoothでは使えなくなってしまう。

今回のその解決法にたどり着いたのでメモがてら書いておく。今BluetoothでAlternative Contorollerを入れたHHKBでこのブログを書いているが、______とか||||||とか入力し放題だ。

Alternative Controller for HHKBのBluetooth版を買う

Alternative Controllerはhasu氏が個人製作している。下記のURLを一読し、hasu氏にメールを送る。

[TMK] Alternative Controller for HHKB
Alternative Controller for HHKB

上記のページに対応するHHKBのモデルが書いてあるので、モデル名を明記して申し込もう。USBコネクタの種類がmini-BとType-Cの2種類ある。自分は今使っているケーブルを流用できるのでmini-Bを選んだ。Type-Cは工作難度が高いので自力の修理が不可能と判断した面もある。

しばらくすると、確認メールが返ってくる。決済はPayPalだ。送付先はPayPalの住所になる。PayPalアカウントが無い場合は取っておこう。

hasu氏は日本の方のようで、割とすぐに届く。ただしやり取りは英語。

リチウムポリマーバッテリーを買う

Alternative Controllerは3.7Vの二次電池が必要だ。大きさは54×50×7mm程度に収まるものを選ぶ。となるとリチウムポリマー電池になるだろう。

[TMK] HHKB Alt Controller with Mini-B/Type-C connector
HHKB Alt Controller with Mini-B/Type-C connector

のページにいくつかおススメが書いてある。問題はリチウムポリマー電池は送料が高いこと。なのでAmazon辺りで買うのが結果的に安い。

ポイントはコネクタがJST PH2.0(ピン間隔2mm)であること。自分は適当に買ったらXHコネクタで泣いた。

ケーブル付きのコネクタが売っていたので、元のバッテリーのコネクタを半田付けしなおした。そもそもケーブルの長さが足りず、Alternative Controllerのメスコネクタまで届かなかったし。

そもそも最初に紹介したバッテリーもケーブル長が足りない気がする。ポリイミドフィルム切ってバッテリーの真ん中からケーブル引き出せば足りるのかもしれない。

自分はケーブルを延長したので、熱収縮チューブでつなぎ目は保護しておいた。

HHKB JPにAlternative Controllerを組み込む

Alternative Controllerとバッテリーが揃ったらHHKBに組み込む。ここでケースの加工が必要になってくる。見栄えを重視するなら、なるべく最小限に留めたい。

ケースをピンバイスで加工

ケースと干渉するのは、USBとBluetoothの切り替えスイッチ、状態表示用のLEDが二つだ。写真で一番右のタクトスイッチはDFUモードでブートする機能がある。一応、元はDIPスイッチが付いているカバーにも穴を開けたが、ファームウエアの書き換えの時にしか使わないのであまり必要なかった。

自分のPD-KB420の場合、下部ケースにピンバイスで穴を開けて取り付けた。

バッテリーは適当なところに両面テープか何かで固定しておく。

ファームウエアをビルドしてキーマップを変更

USBケーブルをつなげば、HHKB JPなのでJIS配列のキーも使える状態で起動する。問題はBluetoothでペアリングして接続した途端に「_」とか「|」が打てなくなることだ。

これはBluetoothコントローラのRN-42の仕様で、0x65以上のキーコードは転送されない。日本語入力に支障は出ないものの、割と多用するキーなのでつらい。ちなみにこれは注意書きに書いてあるので、分かった上で買っている。やりようはあるからだ。

まず、0x65未満のキーコードで普段は絶対使わないキーを二つ見つける。自分はテンキーの「+」と「-」に目を付けた。これをWindows側で受け取った上で、別のキーに割り当てる。

ファームウエアはWSLのUbuntuでビルドした。

git clone https://github.com/tmk/tmk_keyboard
git submodule update --init
cd tmk_keyboard/hhkb
nano keymap_jp.c

ここでキーマップを

KEYMAP_JP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, PPLS,BSPC, \
          TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC, \
          LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,ENT, \
          LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,PMNS,  UP,  RSFT, \
          FN0, ZKHK,LGUI,LALT,MHEN,     SPC,      HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),

と編集する。PPLSが|のため、PMNSが_のためのコードだ。

編集してからビルドしてファームウエアを生成する。

make -f Makefile.rn42.jp KEYMAP=jp

「hhkb_rn42.hex」というファイルができているはずなので、これをWindows側にコピーする。

Releases · qmk/qmk_toolbox
A Toolbox companion for QMK Firmware. Contribute to qmk/qmk_toolbox development by creating an account on GitHub.

から「QMK Toolbox」をダウンロードし、先ほどのhexファイルをHHKBに書きこむ。

書き込み終わると、Bluetoothでは使えなかったキーで+や-を打ち放題になる。これだけだと意味がないどころかUSB接続でも使えないキーになってしまうので、次の作業に移る。

Windowsのキーバインドを換える

Windowsのキーバインドを換えるツールはいくつかあるが、最近あのPowerToysが純正ツールを出してきた。しかもGitHubからダウンロードできる。いや、GitHubはMS様のものですけど、未だに違和感がある。

Releases · microsoft/PowerToys
Windows system utilities to maximize productivity. Contribute to microsoft/PowerToys development by creating an account on GitHub.

ここでPowerToysを入手してインストールし、Keyboard Managerをメニューから選ぶ。

Fn+Nを¥(Yen)に、Fn+Mを¥(バックスラッシュ)に割り当てる。文字面だと意味不明だなこれ。

さて、当然先ほどキーマップは変えてしまったので、Yenやバックスラッシュは別の手段で入れてあげる。別のキーボードでもスクリーンキーボードでも用意して入力する。自分はOS標準のスクリーンキーボードを使った。

仮想マシンでちょっと不便

これでWindowsの世界であれば問題なくBluetoothでバーティカルバーやアンダースコアを打てるようになる。

ただOS側のキーバインドを換える必要があるので、仮想マシンでUbuntuなりWindowsなりの別OSを使うと当然のように+と-が入力されてしまう。面倒なのでRDPなりSSHなりでリモートアクセスした方がいいかもしれない。

コメント

タイトルとURLをコピーしました