Linux、Xorg、Qt4、または Kde4 環境でマウスまたはキーボードのアクティビティを検出する簡単な方法はありますか? 明らかに、特定のウィンドウだけでなく、Xorg デスクトップ全体で。
4 に答える
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;
idle フィールドは、いずれかの入力デバイスでユーザーから最後の入力が受信されてからのミリ秒数を指定します。
これに対するQtのみのソリューションについては知りません。
XRecordを試してください(キーとマウスの取得は別の一般的な解決策ですが、他のアプリケーションの取得に問題があります)。
これが私が少し前に使用したいくつかのリンクです:http://mtoader.blogspot.com/2005/02/you-want-recording-x11-event-recording.html
expectk を探してください。これはオープン ソースであり、例を提供します。
私は Qt4 や KDE API の中身に詳しくありません。
ただし、一般的に言えば、X11 システムでは、基になる、などの関数を呼び出さない限り、キーボードまたはマウスの入力はアクティブなウィンドウにのみ配信されます。XGrabMouse
XGrabKeyboard
もちろん、一度それを行うと、他のウィンドウはそれらの入力イベントを受け取ることができないため、完了したらプログラムがマウスやキーボード入力を解放する方法があることを十分に確認する必要があります.