web-dev-qa-db-ja.com

dpmsまたは画面ウェイクアップのファーストクリックイベントを無視する

ユーザーの要求からスクリーンセーバー機能(または画面ブランキング)を作成して、ユーザーのタッチ入力を介して画面を空白にしてウェイクアップできるようにしようとしています。私が抱えている問題は、ウェイクアップ時の最初の「クリック」イベントを処理しようとしていることです。これは、タッチスクリーンしかない組み込みパネルのPCデバイスであり、ユーザーは画面がオフのときにどこをタップしているのかわからないためです(つまり、ユーザーは意図しないものをキャンセルしてタップすることができます)。

既存の質問があるようです Xorg-画面ブランキングから再開するときにファーストクリックイベントを無視します 約3年前に、更新があるかどうか疑問に思っている質問がありました。 xsetでdpmsを有効にしたり、さまざまなタイムアウトを設定したり、画面を空白にしたりしてみましたが、すべてが最初のタッチイベントで終了し、ユーザーがクリックした場所の下のボタンがすぐにトリガーされます。

私はPoky1.8(Fido)、Kernel 3.19.5を使用しており、C++でこれらのイベントを処理する方法を誰かが知っていれば、ソースコードに完全にアクセスできます。プログラムにはロック画面がなく、rootとして実行されています。私は、これが役立つかどうか、またはこれが単に失われた原因であるかどうかを確認するために、XScreensaverの構築に取り組んでいます。

3
medee88

私も同じ問題を抱えていました(yocto fidoも使用しています)。 xscreensaverを構築できなかったため、提案された回答を使用できませんでした(多くの依存関係への道があります)

xssstartを使用し、画面ロッカーであるslockを変更することで、ようやく解決しました。私はそれをクリックロックと呼んだ

https://github.com/zpfvo/clicklock

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

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

したがって、xssstart clicklockを実行する必要があります

3
Fl0v0

これはかなり古い質問です。しかし、私はこれを解決するのに苦労している最後の人ではありません。

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

WMとしてfluxboxを使用してキオスクモードでクロムを実行しています。画面をスリープ状態にするためにXorgに依存する代わりに、ブランキングのみのxscreensaverを使用しています。

これにより、小さなPerlスクリプトで画面の状態変化をリッスンできます。 http://Pastebin.com/uwFsvG87

このスクリプトは、画面が空白になるとwmctrlを使用して別の(空の)仮想デスクトップに切り替わり、空白以外の状態に戻ります(100ミリ秒の遅延あり)。

これをユーザーに見えないようにするために、fluxboxツールバーを無効にして、完全に黒い背景を設定しました。

それは非常にうまく機能します。 :-)

2
Hypfer