event handling - usar - ¿Hay una manera simple de detectar la actividad del mouse o del teclado en Linux/Xorg/Qt4/Kde4?
mover cursor con el teclado (4)
No estoy familiarizado con las agallas de las API Qt4 o KDE.
Sin embargo, en términos generales, en cualquier teclado del sistema X11 o entrada de mouse solo se entrega a la ventana activa , a menos que llame a las XGrabMouse
, XGrabKeyboard
, etc. subyacentes.
Por supuesto, una vez que haya hecho eso, ninguna otra ventana puede recibir esos eventos de entrada, por lo que debe asegurarse de que haya una manera para que su programa libere la entrada del mouse y / o del teclado una vez que haya terminado.
¿Existe una forma simple de detectar la actividad del mouse o del teclado en entornos Linux o Xorg o Qt4 o Kde4? Obviamente, no solo en una ventana en particular, sino en todo el escritorio de Xorg.
Puede usar la extensión XScreenSaver ( man Xss
). Puede proporcionarle valores en esta estructura usando la función XScreenSaverQueryInfo
:
typedef struct {
Window window; /∗ screen saver window */
int state; /∗ ScreenSaver{Off,On,Disabled} */
int kind; /∗ ScreenSaver{Blanked,Internal,External} */
unsigned long til_or_since; /∗ milliseconds */
unsigned long idle; /∗ milliseconds */
unsigned long event_mask; /∗ events */
} XScreenSaverInfo;
El campo inactivo especifica el número de milisegundos desde que se recibió la última entrada del usuario en cualquiera de los dispositivos de entrada.
No sé sobre una solución Qt única para esto.
busque expectk, es de código abierto y proporcionará ejemplos.
Pruebe XRecord (grabing key & mouse es otra solución común pero tiene problemas con otras aplicaciones).
Aquí hay un enlace que utilicé hace algún tiempo: http://mtoader.blogspot.com/2005/02/you-want-recording-x11-event-recording.html