0

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

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

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

大多数解决方案都涉及注入到焦点窗口,但这里 X GUI 应用程序启动,我有它们的 PID,但我必须向所有它们发送相同的击键。尽管我的 shell 脚本同时运行了多个 GUI,但有没有办法模拟击键?

4

1 回答 1

1

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

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

有了这些你可以

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

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

于 2013-04-27T00:38:03.353 回答