全国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氏にメールを送る。
上記のページに対応するHHKBのモデルが書いてあるので、モデル名を明記して申し込もう。USBコネクタの種類がmini-BとType-Cの2種類ある。自分は今使っているケーブルを流用できるのでmini-Bを選んだ。Type-Cは工作難度が高いので自力の修理が不可能と判断した面もある。
しばらくすると、確認メールが返ってくる。決済はPayPalだ。送付先はPayPalの住所になる。PayPalアカウントが無い場合は取っておこう。
hasu氏は日本の方のようで、割とすぐに届く。ただしやり取りは英語。
リチウムポリマーバッテリーを買う
Alternative Controllerは3.7Vの二次電池が必要だ。大きさは54×50×7mm程度に収まるものを選ぶ。となるとリチウムポリマー電池になるだろう。
のページにいくつかおススメが書いてある。問題はリチウムポリマー電池は送料が高いこと。なので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側にコピーする。
から「QMK Toolbox」をダウンロードし、先ほどのhexファイルをHHKBに書きこむ。
書き込み終わると、Bluetoothでは使えなかったキーで+や-を打ち放題になる。これだけだと意味がないどころかUSB接続でも使えないキーになってしまうので、次の作業に移る。
Windowsのキーバインドを換える
Windowsのキーバインドを換えるツールはいくつかあるが、最近あのPowerToysが純正ツールを出してきた。しかもGitHubからダウンロードできる。いや、GitHubはMS様のものですけど、未だに違和感がある。
ここでPowerToysを入手してインストールし、Keyboard Managerをメニューから選ぶ。
Fn+Nを¥(Yen)に、Fn+Mを¥(バックスラッシュ)に割り当てる。文字面だと意味不明だなこれ。
さて、当然先ほどキーマップは変えてしまったので、Yenやバックスラッシュは別の手段で入れてあげる。別のキーボードでもスクリーンキーボードでも用意して入力する。自分はOS標準のスクリーンキーボードを使った。
仮想マシンでちょっと不便
これでWindowsの世界であれば問題なくBluetoothでバーティカルバーやアンダースコアを打てるようになる。
ただOS側のキーバインドを換える必要があるので、仮想マシンでUbuntuなりWindowsなりの別OSを使うと当然のように+と-が入力されてしまう。面倒なのでRDPなりSSHなりでリモートアクセスした方がいいかもしれない。
コメント