如何在 运行 linuxfb 平台上的 qt5.9 应用程序中添加对屏幕超时的支持?

How to add support for screen timeout while running a qt5.9 app on linuxfb platform?

我在带有 yocto bsp 的 imx6slevk 板上使用 qt5.9 应用程序,

在 运行 该应用程序之前,我在显示屏上看到一个虚拟终端,并且该屏幕在 10 分钟后变为空白,如在 Kernel_source > drivers/tty/vt/vt.c[ 中找到的驱动程序文件中所指定的那样=14=]

 static int blankinterval = 10*60;

正如这个文件用于虚拟终端一样,文件 qlinuxfbscreen.cpp 被 linuxfb 上的 qt 应用程序 运行 使用。

我没有在这个文件中找到 do_screen_blank 或 do_screen_unblank 的任何选项

我只找到了这个函数:

 static void blankScreen(int fd, bool on)
{
 ioctl(fd, FBIOBLANK, on ? VESA_POWERDOWN : VESA_NO_BLANKING);
}

通过 = 1 屏幕完全关闭,完全没有显示

我尝试在 systemd/logind.conf

中设置 Idleaction
IdleAction=suspend
IdleActionSec=30Sec

在此之后,应用程序会在 30 秒后关闭,但即使我按下矩阵键盘上的键,它也会关闭,systemd 似乎没有将按键注册为活动事件并且屏幕关闭。

有没有我可以应用的补丁来启用屏幕超时?或者我至少可以在 systemd 中将按键注册为活动事件吗?

您需要修改您的 qt 应用程序。 该算法类似于

  1. 开始计时
  2. 如果按键将定时器重置为最大值
  3. 如果没有按键进入挂起模式,你可以使用:

    system("echo mem > /sys/power/state")

  4. 电源键唤醒。