[英]flushing events to X11
我正在创建一个xlib应用程序,该应用程序将alt选项卡发送到X11,我希望这些事件尽快刷新以发送下一个按键组合:
XTestFakeKeyEvent(dis, 64, True, 0);
XTestFakeKeyEvent(dis, 23, True, 0);
XTestFakeKeyEvent(dis, 23, False, 0);
XTestFakeKeyEvent(dis, 64, False, 0);
XFlush(dis);
sleep(1);
XTestFakeKeyEvent(dis, 65, True, 0);
XTestFakeKeyEvent(dis, 65, False, 0);
XFlush(dis);
我希望第一组按键能够在第二组按键之前工作,但是不幸的是,除非我让应用程序在两次刷新之间都睡眠了1秒钟,否则这不会发生,我也尝试过xsync但没有骰子
谢谢
阅读手册页 ,与XSync
比较:
XFlush
函数刷新输出缓冲区。 大多数客户端应用程序不需要使用此功能,因为调用XPending
,XNextEvent
和XWindowEvent
根据需要自动刷新输出缓冲区。 服务器生成的事件可以排队到库的事件队列中。
而
XSync
函数将刷新输出缓冲区,然后等待直到X服务器已接收并处理了所有请求 。 生成的任何错误都必须由错误处理程序处理。 对于Xlib收到的每个协议错误,XSync
调用客户端应用程序的错误处理例程(请参见11.8.2节)。 服务器生成的任何事件都将入队到库的事件队列中。
您的应用程序需要等待 (并且睡眠是多余的)。 使用XSync
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.