キーボードイベントのブロックと削除

キーボードイベントのブロックと削除

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 ------------

おすすめ記事