TVリモコン や AB Shutter 3 を使って Raspberry PI コンソール・アプリをリモート操作する。

AB Shutter 3 でコンソール・アプリをリモート操作するためのプログラムをHDMI-CEC対応しTVリモコンでも操作できるように改良してみた。

AB Shutter 3 を使って Raspberry PI コンソール・アプリをリモート操作する。

各イベントは下記のように、標準入力へ出力する文字列、HDMI-CEC制御アクション名、コマンドラインの3種類のパラメタが複数同時に設定可能となっている。

AB Shutter 3 ではTVの電源を入れたり入力切替も可能であるがTVリモコンの場合は入力切替後にのみ操作可能となる。

【HDMI-CEC制御】
HDMI-CEC制御はlibCECを利用しており下記ファイルについてはlibCECのファイルの一部であるが、version.hのみMakeでコンパイルできるよう若干の修正を入れている。インストールは下記のように行う。

sudo apt-get install cec-utils -y

Pulse-Eight/libcec

libcec/cec.h
libcec/cecloader.h
libcec/cectypes.h
libcec/version.h

【修正履歴】
2023-05-09
BOXPUTリモコンのOKボタン(select=)に対応。AB Shutter 3 は不安定なのでお勧めではないがBOXPUTリモコンは動作も安定していてお勧めだ。

2023-05-06
AB Shutter 3 の小さいボタンのコードの規定値をKEY_ENTERからKEY_VOLUMEDOWNに変更。あとHDMIアクション名からremote.confの[control]の設定を参照&実行できるように改良。

2023-05-05
対応デバイス名をコードで固定設定していたのをremocon.confで定義できるよう変更。これでプログラムを変更することなくlinuxで扱える様々なinputデバイスに対応することが出来るようになった。

remocon.confのデバイス定義は次のように行う。

設定は、デバイスを接続した後、cat /proc/bus/input/devicesにより表示される N: Name=… の先頭文字と最終文字を’=’で分けて指定する。
例えば、Name=”AB Shutter3 Keyboard”の場合は、

のように設定すればOKだ。

2023-05-04
Aliexpressで購入可能なBOXPUTというbluetoothリモコンに対応。

ワイヤレスリモコン,5.0 GHz,2.4インチ,ジャイロスコープ付き,Android TV,ボックス,PC用

この対応に伴いremocon.confをより汎用的な記述方法へ変更。

2023-05-01
TVの入力切替時に表示される名前が設定できるように改良。

2023-04-30
libCECの使い方が正しくなかったため修正。

2023-04-25
Bluetoothデバイスの検索を一定間隔でポーリング処理していたがCPU使用率が若干高めであったためinotify-apiを使って効率よく処理できるように改良してみた。ちなみにダイソーのAB Shutter3は2個のデバイスが作成されるがinotify-apiではそのうちの1個の名前しか返さないためinotify-apiは同期をとるためだけに利用している。またスレッドの挙動によるタイミング・バグがあったため修正。

【プログラム】