capturar o mouse com o Xlib
Eu quero escrever um programa Xlib simples alterando o comportamento do mouse (para dar um exemplo, inverter o movimento vertical). Eu tenho um problema com a captura dos eventos.
Eu gostaria que o código
capturar alterações na posição dos controladores (movo o mouse para cima,MotionEvent
)calcular a nova posição do cursor (new_x -= difference_x
)definir a nova posição do cursor (mova o ponteiro para baixo,XWarpPointer
, impedir a geração de eventos aqui)O código abaixo deve capturar um evento de movimento toda vez que o mouse for movido, mas ele gera o evento somente quando o ponteiro se move de uma janela para outra ... Como capturar todos os eventos de movimento?
#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;
}
Relacionado: