在linux中检测键盘,鼠标活动

27 linux keyboard mouse android-activity

我需要一种方法来检测Linux上的鼠标/键盘活动.类似于任何IM程序的东西.如果没有检测到任何活动,例如5分钟,它会将您的IM状态设置为"我现在不在这里".

对此有任何帮助表示赞赏.

谢谢.

ros*_*sch 30

或者只需使用xprintidle返回空闲时间的命令(以毫秒为单位).

它已经为基于debian的系统打包.(源代码在原始网站dtek.chalmers.se/~henoch上不再可用,但你可以在packages.ubuntu.com上获得)

关于freshmeat.net的更多信息

  • 有些程序刚刚完成。 (2认同)

Gil*_*not 18

完整的解决方案:(将整个代码剪切并粘贴到终端中)

cat>/tmp/idletime.c<<EOF
#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/scrnsaver.h>

int GetIdleTime () {
        time_t idle_time;
        static XScreenSaverInfo *mit_info;
        Display *display;
        int screen;
        mit_info = XScreenSaverAllocInfo();
        if((display=XOpenDisplay(NULL)) == NULL) { return(-1); }
        screen = DefaultScreen(display);
        XScreenSaverQueryInfo(display, RootWindow(display,screen), mit_info);
        idle_time = (mit_info->idle) / 1000;
        XFree(mit_info);
        XCloseDisplay(display); 
        return idle_time;
}

int main() {
        printf("%d\n", GetIdleTime());
        return 0;
}
EOF

gcc -Wall /tmp/idletime.c -o /tmp/idletime -L/usr/X11R6/lib/ -lX11 -lXext -lXss 
DISPLAY=:0 /tmp/idletime
Run Code Online (Sandbox Code Playgroud)

(主要部分来自X11 :: IdleTime perl模块)

  • 作为X11 :: IdleTime模块的作者,我很高兴看到11年后人们仍在使用它. (5认同)
  • 但是你的编译行是错误的.它需要按此顺序工作,否则链接器会认为不需要库,并且如果将源文件放在它们之后将丢弃它们:gcc idletime.c -o idletime -lX11 -lXext -lXss (2认同)

Kei*_*ley 2

who -u -H尝试在命令行执行。它会告诉您谁登录了以及他们闲置了多长时间。至少用户登录到一个终端;我认为它在 X 中根本不起作用。无论如何,有了这些信息,您就可以判断谁闲着或不闲着,并采取适当的行动。

如果您在 X 中,您可以创建一个脚本来作为屏幕保护程序或类似的东西运行。