c - 在 X11 上移动鼠标光标无法按预期工作

标签 c linux x11

我试图在按下左键(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);

我做错了什么?

谢谢!

尼古拉斯。

最佳答案

使用XTest extension library伪造用户输入事件。

关于c - 在 X11 上移动鼠标光标无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290101/

相关文章:

c - 如何使用 MinGW 从 Windows XP 的 C 语言中的函数指针获取函数名称?

c++ - 为什么投不成功?

c - 使用 strtok 时如何跳过输入文件中的空白行?

c - 使用 scanf 一次扫描多个字符和整数

linux - 在自动启动中以 root 身份执行脚本

regex - 替换 html 参数中的模式

docker - 如何在Docker容器中运行启蒙Wayland?

c - 应用程序失去焦点时的 X11 事件

c - 在 X 上正确设置窗口位置

C 标记化并存储到数组中