是否可以以某种方式配置 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 } } }