問題タブ [keyrelease]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
55 参照

python - Raspberry Pi Python キー プレス & リリース検出の問題

どのキーが押されたのか、いつ押されたのか、どのキーが解放されたのか、このコードでいつ解放されたのかを取得しようとしています(Python 3.7);

このコードを Raspberry Pi で実行し、「r」キーを 1 秒近く押すと、次の結果が得られます。

ここに画像の説明を入力

このコードを Windows で実行し、「w」キーを 1 秒近く押すと、次の結果が得られます。

ここに画像の説明を入力

どれだけ長く押されても、通常、どのキーが押されたか、一度押されたときに情報を取得し、同様にどのキーが離され、一度離されたときに情報を取得する必要があります。

しかし、これらの写真でわかるように、Windows OS では、キー プレス イベントは何度も発生しますが、リリース イベントは 1 回しか発生しません (より良い状況では、他の制御スクリプトを実行するためにこれを制御できます)。

しかし、Raspberry Pi (Linux raspberrypi 5.10.63-v7+ #1488 SMP Thu Nov 18 16:14:44 GMT 2021 armv7l GNU/Linux) では、指をキーに置いたままでも、キーのプレスとリリースのイベントが何度も発生します。 . この状況では、キーが連続して押されたり離されたりすることをシステムが検出するため、他のスクリプトを制御できません。

最初は Python のネイティブ ライブラリとコマンドを使用しようとしているので、他のキーボード コントロール ライブラリは試していません。これほど問題になることはありません。

何が足りないの?

---------- 7時間後 -----------

Raspberry Pi でのこの問題は、VNC 接続に関するものであることがわかりました。キーボードを直接 Raspberry Pi に接続すると、Windows のように反応するので問題ありません。しかし、VNC を使用して Raspberr Pi にリモート接続すると、キーボード イベントの動作が異なります。

私もpynputライブラリを試してみましたが、VNCでも同じように動作するので問題は解決しません。

ここで、VNC リモート接続で動作する良い方法 (問題を解決するための VNC 構成) またはライブラリを見つける必要があります。

- - - - 1時間後 - - - - - -

キーボードを Raspberry Pi に直接接続し、pynput ライブラリを使用します。キーの押下とキーの解放の検出は Windows と同じです。正常と言えますが、もっと長い時間テストする必要がありました。1 ~ 5 sc で試しました。

Python ネイティブの keypress および release イベントを使用する場合、1 sc を押した後も同じ問題が発生します。キーを押すと、1回押して1回離すことを検出します:(まだ解決されていません。

---------- 1日後 -------- 回避策を見つけました。最後のキー リリース イベントの時間を保持します。約 200 ミリ秒後に新しいキー リリース イベントが発生しない場合は、キーが実際にリリースされたことを意味します。これで、VNC を介して Raspberry Pi でスクリプトを正常に制御できるようになりました。