HB-F500 で USB無線キーボードを使う

 HB-F500では付属のキーボードを持ってなくて、PS/2変換器を使っていたのだけど、X68やPC98でUSB変換器を一部導入したのに合わせ、HB-F500のもUSB変換器にしたくなった。
 PS/2変換 hbf500_ps2  USB変換hbf500_usb1

HRA!さん(@thara1129)が Raspberry Pi Pico を使った変換器を公開してくれています。感謝!
usb_keyboard_bridge_for_msx (msx_tools)     GitHub

自分でビルドせずに、とりあえず 無線キーボードに対応したHB-F500用のバイナリ(uf2)が欲しい人は「2.USB無線キーボード対応」にあるファイルをダウンロードしてください。

1.HB-F500用にビルド
 公開されてるビルド済みのファームウェアはHB-F500では使えないので設定を変えて自分でビルドします。
こちらのプログを参考にさせてもらいました。と言うか同じことやってます。
KZ80-USBKBD用 RaspberryPi Picoオブジェクトビルド方法    KUNINET BLOG

環境はWindows 11 で Microsoft Store からインストールした Ubuntu 22.04.5 LTSです。

コンパイラ等のインストール
 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
 ※詳細は詳しいサイトがいっぱいあるのでそちらで。。

msx-tools のソースを取得
 git clone https://github.com/hra1129/msx_tools.git

ソースをHB-F500用に修正
 usb_keyboard_bridge_for_msx.c (msx_tools/usb_keyboard_bridge_for_msxフォルダ内)のパラメータをテキストエディタで以下のように修正
 #define MSX_KEYMATRIX_ROW_TYPE 2

pico-SDK と cmake環境用にサンプルの取得
 とりあえずSDKのバージョンが判るようにフォルダ作って バージョンを指定して取得
 mkdir pico_sdk120
 cd pico_sdk120
 git clone --recursive https://github.com/raspberrypi/pico-sdk.git -b 1.2.0 --depth 1
 git clone https://github.com/raspberrypi/pico-examples.git -b sdk-1.2.0 --depth 1

ビルド環境を作ってサンプルファイルをビルドしてみる
 cd pico-examples
 mkdir build
 cd build
 export PICO_SDK_PATH=../../pico-sdk
 cmake ..
 cd blink
 make -j4

 フォルダ(blink)内に blink.uf2 が出来ていればOK

 usb_keyboard_bridge_for_msx のビルド環境の設定
  ソースを pico-example にコピー
 cd ~/pico_sdk120/pico-examples
 cp -a ~/msx_tools/usb_keyboard_bridge_for_msx .

 テキストエディタでpico-examples の中の CMakeLists.txt に下記を追記(一番最後で良い)
 add_subdirectory(usb_keyboard_bridge_for_msx)

Makefileを作ってビルドする
 cd ~/pico_sdk120/pico-examples/build
 make rebuild_cache
 cd usb_keyboard_bridge_for_msx
 make -j4

 フォルダ(usb_keyboard_bridge_for_msx)内に、usb_keyboard_bridge_for_msx.uf2 が出来るので、Pico のボタンを押しながら USBケーブルを接続して、出てくるストレージに usb_keyboard_bridge_for_msx.uf2 をコピーすると、ストレージが自動的に切断され書き込み完了。


2.USB無線キーボード対応
 usb_keyboard_bridge_for_msx フォルダ内の readme.txt にあるように、無線キーボードのUSBレシーバーは使えませんでした。調べてみると tinyusbを新しいバージョンにすれば使えそう、と言うことでソースを最新のライブラリ用に書き換えてビルドしたところ、USB無線キーボードが使えるようになりました。
 hbf500_usb2 hbf500_gamen

変更したソースとバイナリはこちら。usb_keyboard_bridge_for_msx.uf2 は HB-F500用になっているので HB-F500では そのまま使えます。
usb_keyboard_bridge_for_msx mod.zip

自分でビルドしたい場合は、上の手順でライブラリの取得バージョンを下記のように 2.1.0 にして、ダウンロードしたソースファイルを同じようにビルドしてください。
 git clone --recursive https://github.com/raspberrypi/pico-sdk.git -b 2.1.0 --depth 1
 git clone https://github.com/raspberrypi/pico-examples.git -b sdk-2.1.0 --depth 1

その他に自分で使いやすいように少し改造してあります
Num Lock(または Scroll Lock) で keymap_1st.h と keymap_2nd.h のキー設定が切り替わる
普段、テンキーがないキーボードを使っているので Num Lock(または Scroll Lock)で文字通り、Num Lock配列(っぽく)なるようにしてあります。
 
hbf500_key

まぁ、好みでキーマップは変更してビルドしてください。

※十分にテストしたわけではないので意図しない動作になるかもしれません。また、HB-F500以外での動作確認はできていません。


コメント