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

Ray*_*ews 8 c xlib

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

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

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

Ray*_*ews 5

是的,我或多或少都了解了。无论如何,这似乎是这样的:

{
#include <X11/extensions/XTest.h>
XTestFakeButtonEvent(display, 1, True, CurrentTime);
XTestFakeButtonEvent(display, 1, False, CurrentTime);
XFlush(display);
}
Run Code Online (Sandbox Code Playgroud)

...,然后在Makefile的LDFLAGS行中添加“ -lXtst”。

Xlib似乎很难做到。我已经建议使用其他库,但愿我知道如何进行转换。

谢谢R。


R..*_*R.. 3

为什么不直接升起/聚焦窗口而不是尝试创建假点击事件?这应该更可靠,并且适用于所有窗口管理器,甚至是非点击聚焦的窗口管理器。