Xorg - Ignoriere das erste Klickereignis, wenn du von Screen Blanking fortfährst


7

Ist es möglich, xorg so zu konfigurieren, dass der erste Mausklick ignoriert wird, wenn die Bildschirmausblendung aktiviert ist?

Der Grund dafür ist, dass ich einen Touchscreen in einer Embedded Arch Linux-Anwendung habe, der während des Ausblendens des Bildschirms aktiv bleibt. Beim ersten Berühren eines Benutzers sollte das Ausblenden des Bildschirms deaktiviert werden, und das Klick- / Berührungsereignis selbst muss ignoriert werden, da der Benutzer keine Ahnung hat, was Taste drücken sie, da der Bildschirm leer ist?

Oder irgendwelche cleveren Hack / Workaround-Methoden?

Antworten:


2

Ich weiß, dass dies eine alte Frage ist, aber ich hatte das gleiche Problem und löste es schließlich, indem ich ein Screen Locker verwendete xssstartund modifizierte slock. Ich nannte es Clicklock

https://github.com/zpfvo/clicklock
https://github.com/unixdj/xssstart

xssstart Führt einen Befehl aus, sobald der Bildschirmschoner aktiviert wird und Clicklock nur ein schwarzes Vollbildfenster ist, das nach der ersten Berührung oder dem ersten Tastenereignis geschlossen wird.

Also musst du rennen xssstart clicklock


0

Xorg unterstützt eine solche Konfiguration nicht.

Ein weiteres Problem bei der Verwendung eines "Hacks" wäre, dass Xorg den Status offenlegen kann, dass er ausgeblendet ist, dies aber nicht muss.

Benötigen Sie wirklich das Xorg Blankout? Wenn nicht, kann es über deaktiviert werden xset s off.

Haben Sie versucht, DPMS zu verwenden? Dies ist die native Energieeinsparung des Monitors. Dies ist möglicherweise keine Option, da Sie ein Touch-Gerät verwenden, aber vielleicht ist es einen Versuch wert :-)

Wenn Sie nicht verpflichtet sind, Xorgs Blanking zu verwenden, können Sie einen anderen Bildschirmschoner-Daemon verwenden.


0

Ich hatte das gleiche Problem und fand diese Diskussion.

Meine Lösung für X11 (Matchbox Window Manager) mit qt5 lautet wie folgt.

Optional schalte ich das Display nicht vollständig aus, sondern reduziere stattdessen die Helligkeit. Ich möchte jedoch weiterhin vermeiden, dass der erste Klick auf die Anwendung erfolgt, da die abgeblendete Anzeige etwas dunkel ist und der Benutzer möglicherweise nicht gesehen hat, was er berührt hat.

Erstens habe ich ein Skript, das für eine bestimmte Zeit (zur gleichen Zeit wie für den Bildschirmschoner) auf ein Touchscreen-Ereignis wartet. Nach Ablauf der Zeit wird die Helligkeit des Displays verringert und eine Animation gestartet, die beendet wird, wenn jemand auf den Touchscreen drückt. Wenn diese Anwendung beendet wird, wird die Helligkeit auf den ursprünglichen Wert eingestellt.

Zweitens ist die Animationsanwendung eine Qt5 QuickScript Qml-Anwendung.

Erstens: das Skript, das im Hintergrund ausgeführt wird:

device = / dev / input / mouse0
timeout = $ screentime

während [1]; tun
  Lesen Sie -t $ timeout -n 1 <$ device
  notread = $?

  if [$ notread == 0]; dann
     Echo $ Helligkeit> / sys / Klasse / Hintergrundbeleuchtung / PWM-Hintergrundbeleuchtung / Helligkeit
  sonst
     Echo niemand hat den Bildschirm berührt, Bildschirm dunkler eingestellt
     Echo $ Dunkelheit> / sys / Klasse / Hintergrundbeleuchtung / PWM-Hintergrundbeleuchtung / Helligkeit
     / usr / bin / qt5 / qml /usr/local/bin/darkshow.qml
  fi
erledigt

Zweitens - das Skript darkshow.qml:

 QtQuick importieren 2.2
 QtQuick.Window importieren 2.1

 Artikel {

 Fenster {id: Hauptfenster
    Breite: 1024
    Höhe: 600
    sichtbar: wahr
    Sichtbarkeit: Window.Maximized
    Opazität: 0,5

    Modalität: Qt.ApplicationModal
    // wenn es oben bleiben soll: flags: Qt.SplashScreen


    MouseArea {
        onClicked: Qt.quit ();
        anchor.fill: Eltern
    }}

    onActiveChanged: {
         console.log ("onActiveChanged");
         if (active == 0) Qt.quit ();
    }}

 AnimatedSprite {
        id: Sprite
        Breite: 1024
        Höhe: 600
        anchor.centerIn: Eltern
        Quelle: "content / awibuben_spritesheet.png"
        frameCount: 5
        frameSync: true
        Rahmenbreite: 1024
        Rahmenhöhe: 600
    }}
  }}
 }}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.