【发布时间】:2019-09-26 05:51:59
【问题描述】:
正如标题所解释的,我正在尝试使用终端将命令作为击键发送到最小化的 GUI 应用程序。
Stack 上有很多类似的问题,有一些很好的答案,但我看到的解决方案主要存在三个问题:大多数解决方案都需要自动化应用程序成为活跃的解决方案。或者,在脚本/进程运行时,我通常不能使用我的键盘。或者更糟糕的是,该解决方案仅适用于 Windows 操作系统。
我需要这个人 2 个月前问的问题:Send keystrokes to a specific window (in background), but do something else in the meantime 但我想在 Linux 上使用它。 如果有帮助,我正在使用 Kubuntu 18.10。
xdotool 已关闭,但我无法将命令发送到特定窗口或 PID。它还使用“我的键盘”,所以我不能,例如,在 xdotool 运行时在线写一篇文章/代码/浏览。 Pexpect 也有这最后一个问题。
AutoHotKey 看起来可以工作,但它只适用于 Windows,我试图不使用 Wine。与 pywin32 相同。
键盘 (https://github.com/boppreh/keyboard) 看起来不错,但它无法向特定应用程序发送命令。与 PyAutoGUI 相同。
我选择 Python 标记是因为我看到的大多数解决方案都使用 Python,但我对任何语言都持开放态度。
【问题讨论】:
-
您打算如何发送击键?您是否考虑过创建自己的进程来运行并在请求时调用
xdotool key --window windowId <keystroke>?这样,xdotool 就不会占用您的键盘,因为它仅在您想要发送击键时运行。 -
xdotool key --window windowId <keystroke>并没有解决这个问题的问题,问的人想在脚本运行的同时在线写一篇文章/代码/浏览,xdotool 需要专注于将接收击键。在 Windows 上有“user32.dll”可以做到这一点,但这个人正在为 Linux 搜索一些东西。 -
如果目标应用程序可以在单独的 X 会话中运行,那么它可以始终处于焦点状态,如果从同一个 X 会话中运行,xdotool 也可以工作
-
@Tim 你能详细说明它是如何工作的,以及如何做到这一点吗?
标签: python linux shell user-interface automation