有没有办法在Linux上使用C语言模拟按键?
我所面临的具体情况是,在Ubuntu 9.04上需要一个简单的应用程序,在启动时调用"暂停"按钮。这将使用Javascript刷新Firefox中的iframe。
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
...
Display *display;
unsigned int keycode;
display = XOpenDisplay(NULL);
...
keycode = XKeysymToKeycode(display, XK_Pause);
XTestFakeKeyEvent(display, keycode, True, 0);
XTestFakeKeyEvent(display, keycode, False, 0);
XFlush(display);
您需要链接-lX11 -lXtst。有一款可编程的库叫做“xdotool”:
sudo apt-get install libxdo-dev libxdo2
cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <xdo.h>
#include <unistd.h>
int main() {
xdo_t * x = xdo_new(":0.0");
while(1) {
printf("simulating Shift_L keypress\n");
xdo_keysequence(x, CURRENTWINDOW, "Shift_L", 0);
sleep(5);
}
return 0;
}
Run like this:
gcc test.c -lxdo -o test
CURRENTWINDOW
,没有一个例子展示如何搜索窗口。我的意思是,现有的文档非常不完整。例如,max_depth - 搜索深度。1 表示只搜索顶层窗口
。嗯,其他值是什么?为什么我们看到人们使用 -1
?他们怎么知道它是做什么的或者它甚至存在?很遗憾,这个库已经投入了这么多的工作,但人们却浪费时间搜索不存在/非常不完整的文档。 - Deanielibxdo
有着如此巨大的潜力,我猜我只是对创作者无法意识到文档和代码同样重要感到失望! - Deanie