如何在 运行 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 应用程序。
该算法类似于
- 开始计时
- 如果按键将定时器重置为最大值
如果没有按键进入挂起模式,你可以使用:
system("echo mem > /sys/power/state")
电源键唤醒。
我在带有 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
中设置 IdleactionIdleAction=suspend
IdleActionSec=30Sec
在此之后,应用程序会在 30 秒后关闭,但即使我按下矩阵键盘上的键,它也会关闭,systemd 似乎没有将按键注册为活动事件并且屏幕关闭。
有没有我可以应用的补丁来启用屏幕超时?或者我至少可以在 systemd 中将按键注册为活动事件吗?
您需要修改您的 qt 应用程序。 该算法类似于
- 开始计时
- 如果按键将定时器重置为最大值
如果没有按键进入挂起模式,你可以使用:
system("echo mem > /sys/power/state")
电源键唤醒。