我们如何用Xlib / C模拟鼠标点击?

我想找到C / Xorg代码来“输入”鼠标左键单击。 我期待一行代码,但我发现用C编写的唯一内容大约有二十几行而且它们无论如何都不起作用:(它似乎可以在Windows中完成,但我在Linux中。

问题的原因是我编写了一个实用程序,可以让我使用键盘在几个屏幕之间移动鼠标指针。 唯一的问题是,如果我移动到窗口abc曾经的位置但是另一个窗口xyz已经加载到同一位置的顶部,鼠标指针移动到xyz就好了,但是xyz没有焦点 – 直到我左键单击鼠标。 所以,我想在我的代码中构建’click’。

我尝试过的代码不起作用是基于XSendEvent()。

为什么不直接提升/聚焦窗口而不是试图制作假的点击事件? 这应该更加可靠,并且适用于所有窗口管理器,甚至是非点击关注窗口管理器。

是的,我或多或少地明白了。 无论如何,这似乎是这样的:

{ #include  XTestFakeButtonEvent(display, 1, True, CurrentTime); XTestFakeButtonEvent(display, 1, False, CurrentTime); XFlush(display); } 

…并将“-lXtst”添加到Makefile中的LDFLAGS行。

Xlib似乎非常难熬。 我有建议使用其他库,我希望我知道如何改变。

谢谢R.

xdotool是这样做的简单方法。 这是一个命令行工具。 您可以在简单的脚本中使用它。 例如:

 #!/bin/sh xdotool mousemove xy xdotool click 1