向多个OpenGL GUI发送击键

时间:2013-04-26 21:53:38

标签: opengl

我有一个bash脚本,它在后台启动X次相同的进程。这些过程中的每一个主要是使用OpenGL的GUI。

我想向每个正在运行的后台进程发送一个按键(例如Ctrl + Shift + A),以便后台进程中的代码捕获该组合键并执行它(就像用户按下它一样)在GUI)。

我还没有办法做到这一点。我唯一能接近它的是使用一些进程间通信,比如管道,但它需要修改我的后台进程。它只允许我将管道连接到击键执行的任何内容。

大多数解决方案都涉及注入焦点窗口,但是这里有X GUI应用程序启动,我有他们的PID,但我必须向所有这些人发送相同的按键。无论如何都要模拟击键,虽然我的shell脚本同时运行多个GUI吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Xlib的函数XSendEvent发送其他窗口合成输入事件。您也可以将Xcb库的xcb_send_event用于相同目的。

但是,由于我希望您能够轻松编写脚本,因此您可能会使用Xlib,例如使用Python Xlib绑定。

用那些你可以

  • 枚举所有窗口
  • 选择您的OpenGL窗口
  • 将合成按键事件发送给他们

请注意,X11允许您注册自定义事件,因此您可以这样做。