Ignorando o primeiro evento de clique em dpms ou ativação de tela

3

Eu estou tentando fazer um recurso de proteção de tela (ou blanking de tela) da solicitação do usuário que permite que a tela fique em branco e acione por meio da entrada de toque do usuário. O problema que estou tendo é tentar lidar com o primeiro evento de "clique" na ativação, já que este é um dispositivo de painel PC embutido que tem apenas uma tela sensível ao toque e os usuários simplesmente não sabem onde estão tocando quando a tela está desligada ( o que significa que os usuários podem cancelar e tocar em coisas que não pretendem).

Vejo que existe uma pergunta Xorg - ignora o primeiro evento de clique quando retomou a partir de Screen Blanking que foi perguntado há cerca de 3 anos atrás que eu estou querendo saber se há alguma atualização para. Eu brinquei com xset habilitando dpms, definindo vários timeouts, screen blanking, mas tudo acaba no primeiro evento de toque imediatamente acionando o botão abaixo onde o usuário clica.

Estou usando o Poky 1.8 (Fido), o Kernel 3.19.5 e tenho acesso completo ao código fonte se alguém souber como lidar com esses eventos em C ++. O programa não possui uma tela de bloqueio e está sendo executado como root. Estou trabalhando na construção de XScreensaver apenas para ver se isso ajudaria, ou se isso é apenas uma causa perdida.

    
por medee88 24.02.2016 / 21:08

2 respostas

2

Eu tive o mesmo problema (também usando yocto fido). Eu não pude usar a resposta proposta porque eu não consegui construir o xscreensaver (tenho muitas dependências)

Eu finalmente resolvi usando xssstart e modificando slock , que é um bloqueador de tela. Chamei de clicklock

link

Eu também criei um fork do xssstart com autotools para facilitar a compilação cruzada (use inherit autotools na receita): 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:34
1

Esta é uma questão bastante antiga. No entanto, não serei o último a lutar para resolver isso.

Resumindo: encontrei uma solução.

Estou executando o cromo no modo quiosque com o fluxbox como WM. Em vez de confiar no Xorg para colocar a tela para dormir, estou usando o xscreensaver apenas com o blanking.

Isso me permite ouvir alterações de estado da tela com um pequeno script em perl. link

Esse script alterna para outra área de trabalho virtual (vazia) usando wmctrl quando a tela fica em branco e alterna de volta para a unblank (com atraso de 100 ms).

Para tornar isso invisível para o usuário, desativei a barra de ferramentas do fluxbox e defini um plano de fundo totalmente preto.

Funciona muito bem. : -)

    
por 10.01.2017 / 01:35