Есть ли простой способ обнаружения активности мыши или клавиатуры в среде Linux или Xorg или Qt4 или Kde4? Очевидно, не только на конкретном окне, но и на всем рабочем столе Xorg.Есть ли простой способ обнаружения активности мыши или клавиатуры в Linux/Xorg/Qt4/Kde4?
ответ
Я не знаком с кишками API Qt4 или KDE.
Однако в общих чертах, на любой системной клавиатуре X11 или мыши доставляется только к окну активного, если вы не вызываете основные XGrabMouse
, XGrabKeyboard
и т.д. функции.
Конечно, после того, как вы это сделали, ни одно другое окно не сможет получить эти входные события, поэтому вы должны быть уверены, что у вас есть возможность освободить клавиатуру от мыши и/или клавиатуры сделанный.
Вы можете использовать расширение XScreenSaver (man Xss
). Он может предоставить вам значение в эту структуру с использованием функцией 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;
Холостого поле определяет количество миллисекунд, прошедшие после последнего ввода был получен от пользователя на любом из устройств ввода.
Я не знаю о решении только для Qt.
Ищите forkkk, это с открытым исходным кодом и предоставит примеры.
Попробуйте XRecord (grabing key & Мышь - это еще одно распространенное решение, но у него есть проблемы с захватом других приложений).
Вот какая-то связь я некоторое время назад: http://mtoader.blogspot.com/2005/02/you-want-recording-x11-event-recording.html
не это означает, что вы должны регулярно опрашивать изменения в этой структуре? – Alnitak 2008-12-08 22:43:34