(メモ)Linuxで接続したjoystickが抜けてしまったことを検出する方法
Linux上のプログラミングでjoystickの情報を取ることは、joystick-apiを使って大体全部簡単にできますが、ひとつだけ、取り外されたことだけは通知してくれません。
ゲーム用途なら途中で抜けてしまっても、たいした問題にはならないと思いますが、ロボットやドローンの制御をしている際にコントローラが抜けてしまうと、暴走の原因にもなりかねません。
そこで、ちゃんとコントローラが刺さっているかどうかをチェックしたい、という需要があると思います。
ここでは、その方法のメモをまとめます。
結論としては、時々sys/stat関数を使ってデバイスの存在を確認する、です。
#include <sys/stat.h> #define JOY_DEV "/dev/input/js0" int joy_connection_check() { struct stat buf; int ret = stat(JOY_DEV, &buf); return ret; // 0: connected, -1: disconnected }