繁体   English   中英

将事件刷新到X11

[英]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函数刷新输出缓冲区。 大多数客户端应用程序不需要使用此功能,因为调用XPendingXNextEventXWindowEvent根据需要自动刷新输出缓冲区。 服务器生成的事件可以排队到库的事件队列中。

XSync函数将刷新输出缓冲区,然后等待直到X服务器已接收并处理了所有请求 生成的任何错误都必须由错误处理程序处理。 对于Xlib收到的每个协议错误, XSync调用客户端应用程序的错误处理例程(请参见11.8.2节)。 服务器生成的任何事件都将入队到库的事件队列中。

您的应用程序需要等待 (并且睡眠是多余的)。 使用XSync

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM