LINUX.ORG.RU

Xlib Перемещение курсора мыши с зажатой кнопкой и Marble

 , ,


0

1

Помогите разобраться, уже всю голову сломал.
Необходимо написать программку которая эмитирует перемещение мышки с зажатой ЛКМ, и повращать ей стандартный глобус Marble.
Вот метод который это должен делать, но он работает на чем угодно кроме глобуса.Окна перемещает нормально, в пеинте фигуры таскает, а на глобусе в момент перемещения мышки (XWarpPointer) происходит mouseRelease О_о

Может кто сталкивался с проблемой, или просто знает как ее решить?

void MouseController::moveWithPressed(int _x, int _y) { Display *display; Window root_window; display = XOpenDisplay(0); root_window = XRootWindow(display, 0); XEvent mouseEvent; mouseEvent.xbutton.button = Button1; mouseEvent.xbutton.same_screen = True;

XQueryPointer(display, root_window, &mouseEvent.xbutton.root, &mouseEvent.xbutton.window, &mouseEvent.xbutton.x_root, &mouseEvent.xbutton.y_root, &mouseEvent.xbutton.x, &mouseEvent.xbutton.y, &mouseEvent.xbutton.state);

mouseEvent.xbutton.subwindow = mouseEvent.xbutton.window;

int limiter = 0; while(mouseEvent.xbutton.subwindow && limiter < LIMIT_SUBWINDOW_FAINDER) { limiter++; mouseEvent.xbutton.window = mouseEvent.xbutton.subwindow; XQueryPointer(display, mouseEvent.xbutton.window, &mouseEvent.xbutton.root, &mouseEvent.xbutton.subwindow, &mouseEvent.xbutton.x_root, &mouseEvent.xbutton.y_root, &mouseEvent.xbutton.x, &mouseEvent.xbutton.y, &mouseEvent.xbutton.state); }

mouseEvent.type = ButtonPress; mouseEvent.xbutton.state = 0x100; XSendEvent(display, root_window, True, 0xfff, &mouseEvent);

XNextEvent(display, &mouseEvent); XFlush(display);

XSelectInput(display, root_window, 0x100 ); XWarpPointer(display, None, root_window, 0, 0, 0, 0, _x, _y));//Тут по неведомой причине происходит mouseRelease XFlush(display); } LogHelper::addEndTag("moveWithPressed"); }

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.