BluetoothキーボードをヘッドレスRaspberry Piに接続し、何らかの方法でキーストローク(Ctrl + Shift + Xの組み合わせを含む)を傍受してシステムから削除し、システムとやり取りしないようにしたいと思います。
私はラズベリーパイにキーボードを接続したことがなく、SSHを介してしか対話しませんでした。ハードウェアキーボードが接続されている場合にのみ、キーボードをホームオートメーション機能、制御インターフェイスとして使用するために、そのハードウェアのキー押し(およびリリース)をPythonスクリプトにリダイレクトしたいと思います。
また、これらのデバイスにはXサーバーがインストールされていないため、そのままにしておく必要があります。
どうすればいいですか?
答え1
キーボードは最終的に標準のHID(Human Interface)デバイスとして認識され、以下のデバイスとして表示されます/dev/input/
。次のコマンドを使用してデバイスからイベントを読み取るevtest
か、ライブラリを介してPythonからイベントを読み取ることができます。Python-evdev。他の同様のライブラリがあるかもしれません。 Raspian用のパッケージがあるかどうかはわかりませんが、Fedora用のrpmは確かにありますpython-evdev
。
evtest
パラメータがない場合は、デバイスが一覧表示され、イベントを監視するデバイスを選択するように求められます。同様のツールを使用して、inotifywait
に表示される新しいデバイスを見つけることができます/dev/input/
。 Pythonライブラリはデバイスを一覧表示して監視することもできますが、ポーリングなしで新しいデバイスを検出することはできないようです。ある端末からリクエストすると、grab
他の端末からイベントを受け取ることはできません。
evtest
定時出力enter
:
Event: time 1509452892.590022, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452892.590022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1509452892.590022, -------------- SYN_REPORT ------------
Event: time 1509452894.005980, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452894.005980, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1509452894.005980, -------------- SYN_REPORT ------------