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

时间:2012-01-07 05:03:28

标签: c xlib

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

谢谢R。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

#!/bin/sh
xdotool mousemove x y
xdotool click 1