Перемещение курсора мыши не работает должным образом на X11 - PullRequest
0 голосов
/ 13 марта 2011

Я пытаюсь переместить указатель мыши, когда левая кнопка нажата (Button1). Но это не работает. Например, если я запускаю GIMP, я вижу точку (курсор вниз), затем курсор перемещается, но без рисования. Я ожидал увидеть нарисованную линию (двигайтесь, удерживая левую кнопку).

Display * display = XOpenDisplay(0);
XEvent event;
memset (&event, 0, sizeof (event));
event.xbutton.button = Button1;
event.xbutton.same_screen = True;
event.xbutton.subwindow = DefaultRootWindow (display);
while (event.xbutton.subwindow)
{
event.xbutton.window = event.xbutton.subwindow;
XQueryPointer (display, event.xbutton.window,
           &event.xbutton.root, &event.xbutton.subwindow,
           &event.xbutton.x_root, &event.xbutton.y_root,
           &event.xbutton.x, &event.xbutton.y,
           &event.xbutton.state);
}
// Press
event.type = ButtonPress;
if (XSendEvent (display, PointerWindow, True, 0xFFF, &event) == 0)
fprintf (stderr, "Error to send the event!\n");

XFlush (display);

// Move
XWarpPointer(display, None, 0, 0, 0, 0, 0, 50, 50);

XFlush (display);

// Release
event.type = ButtonRelease;
event.xbutton.state = 0x100;

if (XSendEvent (display, PointerWindow, True, 0xFFF, &event) == 0)
fprintf (stderr, "Error to send the event!\n");

XFlush (display);

Что я делаю не так?

Спасибо!

Nicolas.

1 Ответ

0 голосов
/ 13 марта 2011

Используйте библиотеку расширений XTest для имитации событий пользовательского ввода.

...