2021/03/05(金) [n年前の日記]
#2 [hsp][raspberrypi][linux] キーボードとマウスの取得をまだ実験中
HSP を Raspberry Pi Zero W + Raspberry Pi OS buster 上で動かした際にキーボードとマウスの入力を取得できない件についてまだ実験中。
src/hsp3dish/raspbian/hsp3dish.cpp を修正して、 _昨日試した処理 を入れてみた。元々は、/dev/input/by-id 以下に event-kbd が出現したらそれがキーボードのはず、として処理するところを、/proc/bus/input/devices の内容を見て、キーボードに割り当てられた event番号を取得して、それをキーボードとして扱うように変えてみた。
_hsp3dish.cpp.diff
この変更で、Logicool K400r に ―― /dev/input/by-id 以下で event-kbd を返してこないキーボードにも対応できるのでは、と予想したのだけど…当ては外れた。
おそらくだけど、Logicool K400r は、キーボードもマウスも同じevent番号に割り当てられてしまうので、そのせいで片方しか反応しないのだろうなと。
hsp3dish.cpp の中では、まずマウスの入力情報を解析・取得して、その後、キーボードの入力情報を解析・取得しているけれど。K400r は、おそらくマウスとキーボードの入力情報が混ざってしまっているので…。hsp3dish.cpp が、マウス情報を解析する際に、キーボード情報は謎データ・要らない情報として捨ててしまうのだろう…。そして、一旦空になってしまった情報を使ってキーボードの入力情報を探してみても、もう何も残ってないので、それでキーボードが無反応になるのだろう…。
であれば、キーボードとマウスの入力情報を混ぜた状態で返してくる製品用の解析処理を用意すればいいのだろうか。 *1
src/hsp3dish/raspbian/hsp3dish.cpp を修正して、 _昨日試した処理 を入れてみた。元々は、/dev/input/by-id 以下に event-kbd が出現したらそれがキーボードのはず、として処理するところを、/proc/bus/input/devices の内容を見て、キーボードに割り当てられた event番号を取得して、それをキーボードとして扱うように変えてみた。
_hsp3dish.cpp.diff
この変更で、Logicool K400r に ―― /dev/input/by-id 以下で event-kbd を返してこないキーボードにも対応できるのでは、と予想したのだけど…当ては外れた。
- キーボードの情報は相変わらず取得できない。
- ただ、「event-kbd が見当たらない」=「キーボードが無い」と認識されていたのが、キーボードとマウスがある、と認識できるようになったので、マウス(タッチパッド)だけは反応するようになった。
おそらくだけど、Logicool K400r は、キーボードもマウスも同じevent番号に割り当てられてしまうので、そのせいで片方しか反応しないのだろうなと。
hsp3dish.cpp の中では、まずマウスの入力情報を解析・取得して、その後、キーボードの入力情報を解析・取得しているけれど。K400r は、おそらくマウスとキーボードの入力情報が混ざってしまっているので…。hsp3dish.cpp が、マウス情報を解析する際に、キーボード情報は謎データ・要らない情報として捨ててしまうのだろう…。そして、一旦空になってしまった情報を使ってキーボードの入力情報を探してみても、もう何も残ってないので、それでキーボードが無反応になるのだろう…。
であれば、キーボードとマウスの入力情報を混ぜた状態で返してくる製品用の解析処理を用意すればいいのだろうか。 *1
*1: でも、そんな入力機器は、どう考えてもマイナーな機器だろうな…。フツーは、キーボードとマウスが別々の機器で、それぞれ違うevent番号が割り当てられているはず、と考えるものだろう…。この件は、これこれこういう情報を返してくる変わった入力機器には対応しません、と、どこかに明記して済ませてしまってもいいような気がしてくる…。
[ ツッコむ ]
以上です。