フットスイッチを買ってPCにつないでみた話(インストール+使用感)

こんにちは。
最近 Amazon でこんな商品を買いました↓
www.amazon.co.jp
普通パソコンを操作するときって手で操作しますけど、足も使えるとなんかいい感じなんじゃね?という発想です。

インストール

Ubuntu 向けのドライバインストール手順がない。。。

商品が届いたのでさっそくPC(Ubuntu 20.04.2 LTS)に接続してみました。説明書を見ると、windows 用のインストーラが用意されていましたが、(案の定)Ubuntu 用のセットアップ方法は書いてありませんでした。

wine を使ってインストールを試みるが・・・

インストーラはオンラインでも落とせるとのことだったので、以下ページにあるリンクから落としてみました。
route-r.co.jp
落としたものを解凍すると出てきたファイルは *.msi 形式で、完全に windows 向けのインストーラだなぁ・・・という感じです。Ubuntuwindows 向けのものを動かす定番といえば wine です。インストールする場合は例えば↓のサイトが参考になると思います:
kazuhira-r.hatenablog.com
*.msi ファイルのディレクトリに行き、wine を使って実行してみます(*.msi を実行するには msiexec /i のおまじないが必要なようです):

$ wine msiexec /i 'Footswitch V6.9.1R.msi'

すると「.NET Framework 2.0 が必要ですがありません」といったエラーが出てしまいます。親切にもインストールページへのリンクがあるのでそちらに飛ぶと、なぜか .NET Framework 4 のダウンロードページが開きました。なんでやねん。
気を取り直して 「.NET Framework 2.0 download」などで検索すると、以下の公式のページがヒットしました:
www.microsoft.com
これをダウンロード・解凍し、実行ファイルがあるディレクトリで wine で実行します:

$ wine NetFX64.exe

数分かかりましたが、インストールは完了しました。気を取り直して、footswitch の *.msi ファイルのところに移動してもう一度:

$ wine msiexec /i 'Footswitch V6.9.1R.msi'

するとインストールが完了した旨が表示されました。やったね!
商品に付属した説明書によると「デスクトップにある FootSwitch アイコンをダブルクリックせよ」とあるのでデスクトップを見てみると・・・
f:id:mat_der_D:20210523123853p:plain
かなり不安になる見た目をしています。見た目どおり、ダブルクリックしても起動しません。なにか情報がないかなと FootSwitch_V6.9.1R.desktop をエディタで開いてみると、中には↓のような内容が書いてありました:

[Desktop Entry]
Name=FootSwitch_V6.9.1R
Exec=env WINEPREFIX="/home/pudding/.wine" wine-stable C:\\\\Program\\ Files\\ \\(x86\\)\\\\Router\\\\FootSwitch_V6.9.1R\\\\FootSwitch.exe 
Type=Application
StartupNotify=true
Path=/home/pudding/.wine/dosdevices/c:/Program Files (x86)/Router/FootSwitch_V6.9.1R/
Icon=C58B__131D314352468BD8C68692.0
StartupWMClass=footswitch.exe

なんらかのパラメータを設定しているファイルのように見えます。とりあえず「FootSwitch.exe というのを叩けばいいかな?」と予想し、Path のディレクトリに移動して実行してみました:

$ wine FootSwitch.exe

すると↓のような画面がでました:
f:id:mat_der_D:20210523124404p:plain
ここまで来てやっと「あっ、これは無理なやつだ」と悟りました。

助けて!グーグル先生

せっかく買ったのに動かせないのは残念なので、google で「フットスイッチ Ubuntu」などで検索してみると・・・なんとちょうどピッタリの内容がありました:
www.clear-code.com
どうやら github で公開されているプログラムを利用すると、簡単にキー割当ができるということでした。
まずフットスイッチを指した状態と抜いた状態で lsusb を端末で実行し、そのデバイスがどれなのかを調べました:

$ lsusb

〜略〜
Bus 001 Device 010: ID 413d:2107 
〜略〜

こいつがデバイス本人のようです。この ID を控えた上で件の github のページに行ってみます:
github.com
README.md を眺めてみると・・・さきほどのIDがあります!つまりこのプログラムを利用すれば設定できる可能性大です。早速ビルドしてみます:

$ sudo apt install libhidapi-dev
$ git clone https://github.com/rgerganov/footswitch.git  # 今いる場所にクローン
$ cd footswitch
$ make

メイクファイルの実行は一瞬で終わります。まずは現在どう割り当てられているか確かめてみます:

$ sudo ./footswitch -r

[switch 1]: a
[switch 2]: b
[switch 3]: c

スイッチは3つ無いはずですが、とりあえず a か b か c が割り当てられているんだなぁと分かります。実際このタイミングで端末を開いてフットスイッチを押して見ると、「b」と表示されていました。ということは switch2 のデバイスとして認識されていることが分かります。いつからそうなっていたかは不明ですが。。。
あとは設定を直せば自由に割り当てられます。例えば shift キーとして割り当てたい場合は

$ sudo ./footswitch -2 -m shift

とし、ctrl+v を割り当てたい場合は

$ sudo ./footswitch -2 -m ctrl -k v

とし、shift+alt+F9 としたい場合は

$ sudo ./footswitch -2 -m shift -m alt -k F9

とすれば設定できます。

使ってみて

まずは試しに Shift キーや Ctrl キーとして割り当ててみました。しかし案外使い勝手が悪いことが分かりました。というのも、踏みながら指で押すという操作をするときに一瞬でも足が遅いとミスタイプになるので、足と指をうまく同期させるのが難しいのです。まあこれは慣れの問題かもしれないので、一旦設定してしばらく使ってみるのもありかもしれません。
他にも PyCharm の実行ショートカットである Shift+Alt+F10 やデバッグのショートカットである Shift+Alt+F9 などを試してみました。こちらは必要なタイミングでポチっと押せば完了するタイプなので、かなり使い勝手がよさそうです。同様に他のエディタでもビルドや実行用のショートカットキーがあるので、その都度エディタに合わせてキー割当をすれば便利そうだと思いました。ただいろんなエディタを使っているなら毎回切り替えるのが面倒なので、なにかしらの方法(footswitch の設定切り替えを簡単にできるコマンドを準備しておくとか)で楽をしたいです。

蛇足

github で公開されているツールは C で書かれているようなので(デバイスの設定をいじるので薄々そうかなと思っていましたが)、Rust に慣れてきたら Rust で同じコードを書いてみるのも楽しそうだなと思いました。