マウスの動作を変更する単純な Xlib プログラムを作成したいと考えています (例として、垂直方向の動きを反転します)。イベントのキャプチャに問題があります。
私はコードをしたいです
- コントローラーの位置の変更をキャプチャします (マウスを上に動かします
MotionEvent
) - 新しいカーソル位置を計算する (
new_x -= difference_x
) - 新しいカーソル位置を設定 (ポインタを下に移動、
XWarpPointer
、ここでイベントの生成を防止)
以下のコードは、マウスが移動するたびにモーション イベントをキャプチャする必要がありますが、ポインターがあるウィンドウから別のウィンドウに移動したときにのみイベントを生成します... すべての移動イベントをキャプチャする方法は?
#include "X11/Xlib.h"
#include "stdio.h"
int main(int argc, char *argv[])
{
Display *display;
Window root_window;
XEvent event;
display = XOpenDisplay(0);
root_window = XRootWindow(display, 0);
XSelectInput(display, root_window, PointerMotionMask );
while(1) {
XNextEvent( display, &event );
switch( event.type ) {
case MotionNotify:
printf("x %d y %d\n", event.xmotion.x, event.xmotion.y );
break;
}
}
return 0;
}
関連している: