Keyboard 使用xcb xtest生成按键
我只是想用XCB生成一个活动窗口的按键。 我有一些代码,我认为应该可以工作。 当我运行它时,似乎有大约1/10的机会,w键的动作就像被按住一样,直到我按下并释放w键,而其他9/10键完全没有发生任何事情。 代码如下:Keyboard 使用xcb xtest生成按键,keyboard,keypress,xcb,Keyboard,Keypress,Xcb,我只是想用XCB生成一个活动窗口的按键。 我有一些代码,我认为应该可以工作。 当我运行它时,似乎有大约1/10的机会,w键的动作就像被按住一样,直到我按下并释放w键,而其他9/10键完全没有发生任何事情。 代码如下: #include <stdio.h> #include <xcb/xcb.h> #include <xcb/xtest.h> int main() { xcb_connection_t *conn; conn = xcb_co
#include <stdio.h>
#include <xcb/xcb.h>
#include <xcb/xtest.h>
int main() {
xcb_connection_t *conn;
conn = xcb_connect(NULL, NULL);
if (xcb_connection_has_error(conn))
puts("failed to connect\n");
xcb_test_fake_input(conn, XCB_KEY_PRESS, 25, XCB_CURRENT_TIME, XCB_NONE, 0, 0, 0);
xcb_flush(conn);
xcb_disconnect(conn);
}
对你有用吗?我做错了什么
当我运行它时,似乎有大约1/10的机会,w键的动作就像被按住一样,直到我按下并释放w键
您的程序会生成按键,但不会释放按键。使用XCB\u键\u释放
尝试另一个呼叫
而另外9/10则什么也没发生
我想这可以通过添加类似于free(xcb_get_input_focus_reply(conn,xcb_get_input_focus,conn,NULL))的内容来解决调用xcb\u disconnect()
之前的code>应该可以解决此问题
我的理论是,您与X11服务器竞争。当poll()
指示另一端挂起时,X11服务器不一定从连接中读取挂起的数据。因此,只要发送请求并断开连接,它就可能丢失
我提议的更改发送另一个请求并等待X11服务器的回复。这确保之前的一切都已经处理好了
gcc c.c -lxcb -lxcb-xtest