Есть ли простой способ определить активность мыши или клавиатуры в Linux / Xorg / Qt4 / Kde4? - PullRequest
4 голосов
/ 09 декабря 2008

Существует ли простой способ определения активности мыши или клавиатуры в среде Linux, Xorg, Qt4 или Kde4? Очевидно, что не только в конкретном окне, но и на всем рабочем столе Xorg.

Ответы [ 4 ]

1 голос
/ 09 декабря 2008

Вы можете использовать расширение 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.

0 голосов
/ 16 января 2009

Попробуйте XRecord (клавиша захвата и мышь - другое распространенное решение, но у него есть проблемы с захватом других приложений).

Вот ссылка, которую я использовал некоторое время назад: http://mtoader.blogspot.com/2005/02/you-want-recording-x11-event-recording.html

0 голосов
/ 10 декабря 2008

ищите Ожидайте, это с открытым исходным кодом и предоставит примеры.

0 голосов
/ 09 декабря 2008

Я не знаком с внутренностями API Qt4 или KDE.

Однако, в общих чертах, на любой системной клавиатуре или мыши X11 ввод осуществляется только в active окне, если только вы не вызываете базовые функции XGrabMouse, XGrabKeyboard и т. Д.

Конечно, как только вы это сделаете, никакое другое окно не сможет получать эти события ввода, поэтому вы должны быть очень уверены, что у вашей программы есть возможность отпустить ввод мыши и / или клавиатуры, как только вы закончите. .

...