HID Remapperを使ってみる

今回はHID Remapperを作って、使ってみたいと思います。

最近ELECOMのハンディトラックボール Relacon(リラコン)が販売終了と知り、これを機に購入してみました。(bitraも販売終了のようですね。)
しかし、ELECOMのマウス用設定ソフトウェア(エレコム マウスアシスタント)では1つのマウスしか設定を反映できません。
都度使用するマウスをソフトウェア側で切り替える必要があり、ほかのELECOM製マウスとは同時使用できませんでした。RelaconをサブマウスとしてHUGEとの併用したいと考えていました。
ELECOM製のマウスを同時使用するためにHID Remapperを試してみたいと思います。

HID Remapper

github.com
HID Remapperはマウスやキーボードなどのデバイスの入力をリマップするものです。
多ボタンマウス等はデバイスメーカーから提供されている常駐ソフトウェアやWindowsで5ボタンまでなら「X-Mouse Button Control」でボタン設定をすることが多いと思いますが、HID Remapperはハードウェアにボタン設定を保存します。そのため、設定ソフトウェアが提供されていないOSでも利用できます。使用するパソコンを切り替えるときもHID Remapperごと差し替えれば設定を引き継ぐことができます。
しかし、常駐ソフトウェアのように使用するアプリケーション(アクティブになっているウィンドウ)によって自動でボタン設定を切り替えることはできません。
同じような製品に「TracXcroll」がありますが、こちらはハードウェアに設定を保存し、常駐アプリケーションでの自動切り替えもできるようです。
bit-trade-one.co.jp

作ってみる

USBデバイスに対応するHID RemapperはRaspberry Pi Picoを使用して、自作することができます。
(Bluetoothやシリアル通信を使用するデバイスに対応したHID Remapperもあります。)
hid-remapper/HARDWARE.md at master · jfedor2/hid-remapper · GitHub
今回はRaspberry Pi Picoを1つ使用したシングルバージョンを作成したいと思います。
おそらくシングル、デュアルの違いは接続するUSBデバイスを認識するの仕組みの違いではないかと思います。
シングルの場合はPico-PIO-USBのUSBホストの機能を使用し、デュアルの場合はTinyUSBのUSBホストの機能を使用しているようです。
github.com
github.com

今回はRaspberry Pi Picoの代わりにWaveshare RP2040-Zeroを使います。
配線は4本接続するだけです。

USB RP2040
5V 5V
GND GND
D+ GPIO0
D- GPIO1

空中配線でも良いですが、今回はPCBGOGOさんよりプリント基板のご提供を頂いたので以下のようなマイコンボードとUSBコネクタを接続する基板を作成してみます。RP2040-Zeroの7, 8, 14, 15ピンに対応するスルーホールは基板固定用で配線はしていません。

PCBGOGOは低価格&高品質の基板試作と試作実装サービスを提供し、5枚からの注文を受け付けています。PCBの製作期間は通常2〜3日間で、急ぎの場合には12時間特急または24時間特急サービスもあります。
日本語のウェブサイトが用意されており、注文やその後のサポートも日本語で行うことができます。
www.pcbgogo.jp

今回はじめてPCBGOGOさんのサービスを使用しました。
私の場合、10/31の夕方から製造がはじまり11/1の夕方に終了し11/5午前に手元に届きました。

100mmx100mmの基板が5枚5ドルで別途送料がかかります。OSC(16ドル), DHL(20ドル)となります。

現在、新規ユーザーに向けて、$1プリント基板試作&送料無料の特典があります。
www.pcbgogo.jp
また、11月6日よりPCBGOGO感謝祭キャンペーンを開催しています。(~11月30日)
www.pcbgogo.jp

単純で小さな基板ですが、空中配線と違いしっかり部品が固定されるので安定感があります。
私は電子工作は素人ですが、もし基板作成に興味のある方は単純な基板から作成を始めてみるのがよいかと思います。(HID Remapperは実用性のあるのでオススメです。)
キャンペーンを利用して、基板の作成にチャレンジしてみてはいかがでしょうか。

USBコネクタとRP2040-Zeroを実装して、完成です。保護ケースもプリントしました。


HID Rmapperのファームウェアを書き込みます。
シングルの場合は、 「remapper.uf2」をRP2040-Zeroに書き込みます。
github.com

HID Remapperにマウス(または、ワイヤレスレシーバー)を差し込み、PCと接続するとマウスが動作します。

使ってみる

基板のUSBコネクタにデバイスを接続し、RP2040-ZeroをPCに接続します。
HID Remapperにはブラウザから設定が行えるツールがあります。
WebHIDに対応したブラウザ(Chrome等)でアクセスします。
www.jfedor.org

Open Deviceをクリックし、設定を変更するHID Remapperを選択し、接続します。
Monitorタブを表示して、マウスのボタンを押したり、カーソルを移動させるとマウスの動作を確認することができます。
Mappingsタブでボタンの設定を行います。設定は簡単でAdd mappingでマッピングを追加し、InputとOutputを割り当てます。InputはHID Remapperに入力されるマウス側からのデータでOutputはHID RemapperからPC側へ出力されるデータです。
例えば、戻ると進むを入れ替える場合は、以下のように設定します。

Tap/Holdの機能やレイヤーの機能もあります。
例えば、右クリックをHold(長押し)でレイヤー1に切り替えて、スクロールホイールに音量調節を割り当てる場合は、以下のように設定します。
スクロールホイールの設定項目はV scrollの1つですが、音量はVolume up, Volume downの2つあります。
その場合はScalingの正の値、負の値でスクロール方向を指定することができます。

カーソルの移動をスクロールに割り当てることもできます。
カーソル、スクロール移動量はScalingの値を変更することで変更できます。また、移動方向は負の値に設定することで反転できます。

Stickyを有効にするとOutputの状態が維持されます。レイヤーをTap(短押し)でトグルする場合などに使用できます。
SettingsタブではTap-hold thresholdでHoldと判定されるまでの時間を設定できます。
有線マウスの場合はポーリングレートを1000Hzまで上げることができますが、私はワイヤレスのマウスしか使わないので効果は分かりません。

まとめ

マウス等のUSBデバイスのボタン設定を変更するためのハードウェア HID Remapperを使ってみました。
HID Remapperを使うことでELECOM製のマウスを複数使うという目標が達成できました。
RP2040のマイコンボードとUSBコネクタ(または、ケーブル)という低予算で作成できることも魅力だと思います。

ただ、私の環境ではシングルバージョンのHID RemapperではPCの休止から復帰時や再起動後にマウスが認識しないことがあります。マイコンのリセットボタンを押すか、HID Remapperを再接続すると認識します。すべてのマウスではなく、特定のマウス(手持ちではRelacon, bitra)は認識せず、Hugeは認識しました。
このような挙動はデュアルバージョンのHID Remapperでは発生しませんでした。
デュアルバージョンについても、後日記事にしたいと思います。

yyoshisaur.hatenablog.com