Xorg - 从屏幕消隐恢复时忽略第一次单击事件

Xorg - 从屏幕消隐恢复时忽略第一次单击事件

是否可以以某种方式配置 xorg 以在启用屏幕消隐时忽略第一次鼠标单击?

原因是我在嵌入式 arch Linux 应用程序中有一个触摸屏,该触摸屏在屏幕消隐期间保持活动状态,用户的第一次触摸应禁用屏幕消隐,并且单击/触摸事件本身需要被忽略,因为用户不知道什么因为屏幕是空白的所以他们按下的按钮?

或者任何聪明的黑客/变通方法?

答案1

我知道这是一个老问题,但我遇到了同样的问题,最终通过使用xssstart和修改slock屏幕储物柜解决了它。我称之为点击锁定

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

xssstart一旦启用屏幕保护程序,就会运行命令,并且单击锁定只是一个黑色全屏窗口,在第一次触摸或按键事件后关闭。

所以你必须跑xssstart clicklock

答案2

Xorg 不支持这样的配置。

使用“hack”的另一个问题是,Xorg 可以暴露其空白的状态,但并非必须这样做。

您真的需要 xorg 空白吗?如果没有,可以通过 禁用它xset s off

您尝试过使用DPMS吗?这是显示器本身的省电功能。由于您使用的是触摸设备,这可能不是一个选择,但也许值得一试:-)

如果您不一定要使用 Xorgs 消隐,为什么不使用另一个屏幕保护程序守护程序呢?

答案3

我遇到了同样的问题并找到了这个讨论。

我对 X11(火柴盒窗口管理器)与 qt5 的解决方案如下。

我选择不完全关闭显示器,而是降低亮度。但我仍然想避免第一次点击进入应用程序,因为变暗的显示屏有点暗,用户可能看不到他触摸的内容。

首先,我有一个脚本等待触摸屏事件一段时间(与屏幕保护程序的时间相同)。如果时间过去,显示屏的亮度就会降低,并开始播放动画,如果有人按下触摸屏,动画就会退出。如果该应用程序退出,亮度将设置为原始值。

其次,动画应用程序是一个 Qt5 QuickScript Qml 应用程序。

首先:在后台运行的脚本:

设备=/dev/输入/鼠标0
超时=$屏幕时间

而[1];做
  读取-t $超时-n 1 < $设备
  未读=$?

  如果 [ $notread == 0 ];然后
     echo $亮度 > /sys/class/backlight/pwm-backlight/亮度
  别的
     echo 没有人触摸屏幕,将屏幕设置得更暗
     echo $darkness > /sys/class/backlight/pwm-backlight/brightness
     /usr/bin/qt5/qml /usr/local/bin/darkshow.qml
完毕

第二 - 脚本 darkshow.qml:

导入QtQuick 2.2
 导入 QtQuick.Window 2.1

 物品 {

 窗口 { id: mainwindows
    宽度:1024
    高度:600
    可见:真实
    可见性:窗口.最大化
    不透明度:0.5

    模态:Qt.ApplicationModal
    // 如果它应该保持在顶部: flags: Qt.SplashScreen


    鼠标区域{
        onClicked: Qt.quit();
        锚点.fill:父级
    }

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

 动画精灵{
        id: 精灵
        宽度:1024
        高度:600
        锚点.centerIn:父级
        来源:“content/awibuben_spritesheet.png”
        帧数:5
        帧同步:真
        帧宽度:1024
        框架高度:600
    }
  }
 }

相关内容