2013-04-26 23 views
0

我有一个在后台启动相同的过程X倍bash脚本。这些进程中的每一个主要是使用OpenGL的GUI。发送击键多的OpenGL图形用户界面

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

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

大多数解决方案涉及注射到焦点的窗口,但这里X GUI应用得到推出,我有自己的PID,但我必须发送相同的击键他们。无论如何模拟击键,尽管多个GUI同时从我的shell脚本运行吗?

+0

我没有为你解决了,我有点怀疑有一个,但是这无关任何bash或TTY中,所以我编辑它来删除这些标签。这是一个复杂的问题需要解决。有一些用于测试的GUI自动化工具,但我怀疑它们中的任何一个都可以处理多播。 – 2013-04-26 22:31:13

+0

谢谢吉姆,之后我也在想。我想我会采用管道方式。非常感谢! – user1777907 2013-04-26 22:57:02

回答

1

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

然而,因为我希望你想轻松的脚本,你可能会使用Python的Xlib绑定使用的Xlib,例如。

有了这些,你可以

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

需要注意的是X11允许您注册自定义事件,所以你可以如此。

+0

非常感谢!这似乎是迄今为止最好的方法,谢谢! – user1777907 2013-04-30 22:12:38