ubuntuusers.de

letzte Aktivität feststellen

Status: Gelöst | Ubuntu-Version: Xubuntu 10.04 (Lucid Lynx)
Antworten |

klal

Anmeldungsdatum:
13. Januar 2007

Beiträge: 414

Hallo,

wie kann ich die Zeit der letzten User-Aktivität, Mausbewegung und Tastendruck feststellen. Also die Information, die der Bildschirmschoner auch abfragt.

Grüße Klal

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

ganz allgemein lösen ein Tastendruck oder ein Mausbewegung ein "Event" aus. Diese Events muss du halt überwachen.

Gruß, noisefloor

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Servus,

geht zum Beispiel so: http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/

Zwei Kleinigkeiten stimmen da auf der Seite nicht, es fehlt ein Include und eine Linker-Option. Und wie einer in den Kommentaren angemerkt hat, sollte man besser testen, ob das Display wirklich geöffnet werden konnte. Also:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <X11/extensions/scrnsaver.h>

int main(int argc, char *argv[])
{
	XScreenSaverInfo *info = XScreenSaverAllocInfo();
	Display *display = XOpenDisplay(0);

	if (display != NULL)
	{
		XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
		printf("%u ms\n", info->idle);
		exit(EXIT_SUCCESS);
	}
	else
	{
		fprintf(stderr, "Could not open default display.\n");
		exit(EXIT_FAILURE);
	}
}
gcc -o bla bla.c -lXss -lX11

Beim Aufruf dann natürlich sinnvollerweise erst kurz warten:

$ sleep 2; ./bla
1951 ms

klal

(Themenstarter)

Anmeldungsdatum:
13. Januar 2007

Beiträge: 414

Danke für die Antworten. Habe jetzt eine Lösung gefunden:

cat /proc/interrupts | grep i8042 http://debianforum.de/forum/viewtopic.php?f=2&t=120863

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Also ich weiß nicht so ganz, was dieser grep-Aufruf bringen soll.

Ich würde ganz einfach die Verwendung von xprintidle empfehlen, wenn's für die Shell sein soll und man nicht unbedingt Programmcode für die Xlib schreiben will. Ausgabe ist in Millisekunden:

1
2
$ sleep 2; xprintidle
1886
Antworten |