在开发一个小型跨平台C++游戏时,我遇到了以下问题:当玩家使用USB游戏手柄而没有触摸键盘或鼠标时,电脑会在他们玩的时候自动进入睡眠状态。
在Windows中,可以使用
但问题是,在Linux中,DE之间没有通用的API。我发现在Gnome中,您可以通过使用DBus调用
所以,是否存在一种跨桌面环境的编程方式(或非桌面环境的方式,例如如果用户使用类似于
在Windows中,可以使用
SetThreadExecutionState
函数轻松解决。在OS X中,我认为可以使用UpdateSystemActivity
,但还未经过测试。但问题是,在Linux中,DE之间没有通用的API。我发现在Gnome中,您可以通过使用DBus调用
Inhibit()
和Uninhibit()
来停止自动挂起,但仅适用于Gnome。所以,是否存在一种跨桌面环境的编程方式(或非桌面环境的方式,例如如果用户使用类似于
dwm
或awesome wm
这样的东西),可以防止Linux系统(使用Xorg且没有root访问权限)在不更改用户配置文件的情况下进入睡眠状态或打开屏幕保护程序? PS:不要认为它太复杂了,但不知道该怎么做。
X11
中有一个XResetScreensaver
函数,但那只是屏幕保护,不是休眠,对吗? - Chan Kha Vu