简体   繁体   English

在X11上无法按预期移动鼠标光标

[英]Moving the mouse cursor doesn't work as expected on X11

I'm trying to move the mouse pointer while the left button is down (Button1). 我试图在按下鼠标左键(Button1)的同时移动鼠标指针。 But it doesn't work. 但这是行不通的。 For example, if I launch GIMP, I see a dot (cursor down), then the cursor moves but without drawing. 例如,如果我启动GIMP,则看到一个点(光标向下),那么光标将移动但没有绘制。 I was expecting to see a drawn line (move while holding left button down). 我期望看到一条画出的线(按住向下按钮的同时移动)。

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);

What am I doing wrong? 我究竟做错了什么?

Thanks! 谢谢!

Nicolas. 尼古拉斯

使用XTest扩展库来伪造用户输入事件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM