Xorg - ignora o primeiro evento de clique quando retoma da Tela Blanking

7

É possível de alguma forma configurar o xorg para ignorar o primeiro clique do mouse quando a supressão de tela estiver ativada ??

O motivo é que eu tenho uma tela sensível ao toque em um aplicativo Linux de arco incorporado que permanece ativo durante a supressão de tela, e o primeiro toque de um usuário deve desabilitar a tela em branco e o próprio evento click / touch precisa ser ignorado. não tem ideia de qual botão eles estão pressionando desde que a tela está em branco?

Ou qualquer método de hack / work around inteligente?

    
por Gilles 25.08.2013 / 12:03

3 respostas

2

Eu sei que essa é uma pergunta antiga, mas tive o mesmo problema e finalmente resolvi usando xssstart e modificando slock , que é um bloqueio de tela. Chamei de clicklock

link
link

xssstart executa um comando assim que o protetor de tela é ativado e o clicklock é apenas uma janela em tela cheia preta que é fechada após o primeiro toque ou evento principal.

Então você tem que executar xssstart clicklock

    
por 23.06.2017 / 11:27
0

O Xorg não suporta essa configuração.

Outro problema usando um 'hack' seria, que o Xorg pode expor o estado que está apagado, mas não precisa.

Você realmente precisa do blankout do xorg? Caso contrário, pode ser desativado via xset s off .

Você já tentou usar o DPMS? Esta é a economia de energia nativa do monitor. Isso pode não ser uma opção, já que você está usando um dispositivo de toque, mas talvez valha a pena tentar: -)

Se você não é obrigado a usar o Xorgs blanking, por que não usar outro daemon de screensaver?

    
por 16.09.2013 / 14:15
0

Eu tive o mesmo problema e encontrei esta discussão.

Minha solução para o X11 (gerenciador de janelas da caixa de fósforos) com qt5 é a seguinte.

Eu, opcionalmente, não desligo a tela completamente, mas reduzo o brilho. Mas eu ainda quero evitar que o primeiro clique vá para o aplicativo, porque a tela esmaecida está um pouco escura e o usuário pode não ter visto o que ele tocou.

Primeiro, eu tenho um script que aguarda por um evento de tela de toque por um certo tempo (o mesmo tempo que o protetor de tela). Se o tempo decorrer, o brilho do visor é reduzido e é iniciada uma animação que sai se alguém pressionar o ecrã táctil. Se esse aplicativo sair, o brilho será definido para o valor original.

Em segundo lugar, o aplicativo de animação é um aplicativo QML Qt5 QuickScript.

Primeiro: o script que é executado em segundo plano:

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

while [ 1 ]; do
  read -t $timeout -n 1 < $device
  notread=$?

  if [ $notread == 0 ]; then
     echo $brightness >  /sys/class/backlight/pwm-backlight/brightness
  else
     echo nobody has touched the screen, set screen more dark
     echo $darkness >  /sys/class/backlight/pwm-backlight/brightness
     /usr/bin/qt5/qml /usr/local/bin/darkshow.qml
  fi
done

Segundo - o script darkshow.qml:

 import QtQuick 2.2
 import QtQuick.Window 2.1

 Item {

 Window  { id: mainwindows
    width: 1024
    height: 600
    visible: true
    visibility: Window.Maximized
    opacity: 0.5

    modality: Qt.ApplicationModal
    // if it should stay on top:   flags: Qt.SplashScreen


    MouseArea {
        onClicked: Qt.quit();
        anchors.fill: parent
    }

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

 AnimatedSprite {
        id: sprite
        width: 1024
        height: 600
        anchors.centerIn: parent
        source: "content/awibuben_spritesheet.png"
        frameCount: 5
        frameSync: true
        frameWidth: 1024
        frameHeight: 600
    }
  }
 }

    
por 20.01.2018 / 21:10