dpmsまたは画面ウェイク時に最初のクリックイベントを無視する

dpmsまたは画面ウェイク時に最初のクリックイベントを無視する

ユーザーの要求に応じて画面を空にし、ユーザーのタッチ入力で目覚めさせるスクリーンセーバー機能(または画面を空にする)を作成しようとしています。私が経験している問題は、覚醒時に最初の「クリック」イベントを処理しようとすることです。これはタッチスクリーンのみの内蔵タブレットデバイスなので、ユーザーは画面がオフになっているときにどこをクリックしたのかわかりません。キャンセルして不要なコンテンツをクリックしてください。)

既存の問題があると判断されます。Xorg - スクリーンスペースから回復するときの最初のクリックイベントを無視するこの質問は約3年前に提起された質問であり、アップデートがあったかどうか疑問に思います。 dpmsのxsetを有効にし、さまざまなタイムアウトを設定し、画面スペースを設定しようとしましたが、すべてがユーザーが最初のタッチイベントですぐに下のボタンをクリックするようにトリガされます。

私はPoky 1.8(Fido)、Kernel 3.19.5を使用しており、誰かがC ++でこれらのイベントを処理する方法を知っている場合は、ソースコードへのフルアクセス権を持っています。このプログラムにはロック画面がなく、rootとして実行されます。私はこれが役に立つのか、単に失われた原因であるのかを判断するためにXScreensaverを構築しています。

答え1

私は同じ問題がありました(yocto fidoも使用しました)。 xscreensaverをビルドできなかったため、提案された回答は利用できません(依存関係が多い)。

xssstart画面ロックを有効にして修正して、ついにslock問題を解決しました。私はそれをクリックロックと呼びます。

https://github.com/zpfvo/clicklock

また、より簡単なクロスコンパイルのために、autotoolsビルドファイルを使用してxssstartフォークを作成しました(inherit autotoolsレシピでのみ使用)。 https://github.com/zpfvo/xssstart

xssstartスクリーンセーバーが有効になると、コマンドが実行され、クリックロックは、最初のタッチまたはキーイベントの後に閉じる黒いフルスクリーンウィンドウです。

だから走らなければなりません。xssstart clicklock

答え2

これはかなり古い質問です。しかし、私はこの問題に直面する最後の人ではありません。

要するに:私は解決策を見つけました。

私はキオスクモードでChromeを実行しており、FluxboxをWMとして使用しています。画面をスリープモードに切り替えるためにXorgを使用する代わりに、ブランキング機能のみを持つxscreensaverを使用しています。

これにより、小さなPerlスクリプトを使用して画面状態の変更を受け取ることができます。 http://pastebin.com/uwFsvG87

wmctrlこのスクリプトは、画面がオフになると別の(空の)仮想デスクトップに切り替え、画面がオフになると再び切り替えます(100ms遅延)。

ユーザーが見えないようにフラックスボックスツールバーを無効にし、背景を完全に黒に設定しました。

それは非常にうまく動作します。 :-)

関連情報