如何检测鼠标不活动

如何检测鼠标不活动

我想在键盘灯闲置一段时间后自动调暗键盘灯。如何检测不活动时间?顺便说一句,我使用 archlinux。

答案1

在基于 Debian 的系统上,有一个xprintidle命令xprintidle命令(来自https://github.com/g0hl1n/xprintidle/)在标准输出上打印空闲时间(以毫秒为单位)。

$ sleep 2; xprintidle
1925

如果你ltrace这样做,你会看到它使用XScreenSaverQueryExtension()XScreenSaverQueryInfo() API 就像其他答案一样还为某些服务器的极端情况下的特定问题添加了一些解决方法

答案2

编译并运行它会得到以毫秒为单位的空闲时间

#include <X11/extensions/scrnsaver.h>
#include <stdio.h>

int main(void) {
    Display *dpy = XOpenDisplay(NULL);

    if (!dpy) {
        return(1);
    }

    XScreenSaverInfo *info = XScreenSaverAllocInfo();
    XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
    printf("%u\n", info->idle);

      return(0);
}

答案3

这也在 C 中(使用 Makefile)实现,位于https://github.com/mjml/xidle

它将为 shell 脚本提供小时、分钟、秒和毫秒的空闲时间,并通过可选开关选择单位/面值。

相关内容