xdotool 键盘自动化

xdotool 键盘自动化

我是 Linux 操作系统编码新手。我的 Windows 系统上有自动热键,我正在尝试找出将其迁移到 Linux 的最佳方法。我希望按下一组键,但返回另一组将填充在网页上的键。例如,如果我想使用:

keydown(然后 keyup)ctrl shift z 然后发送 keydown/keyup m enter。

使用 xdotool 我该如何编写此代码?感谢您的帮助。

答案1

我不确定那个特定的序列,特别是“keydown/keyup”应该做什么,但xdotool看起来它可以做任何你需要的事情。

xdotool key ctrl+shift+z

xdotool key m; xdotool key KP_Enter

xdotool key每次执行一个字符。这就是为什么它在第二行被调用两次,并告诉;你的 shell 这是两个独立的命令。

如果您想要输入Ctrl+ shift+z并让系统发出mEnter,那么您的脚本必须读取键盘,检测触发短语,然后运行上面的第二个 xdotool 命令。当您显示的窗口是浏览器中的网页时,这有点棘手,但请参见下文。此外,Ctrl+ shift+z可能不是最好的触发短语,因为它在终端窗口中具有特殊含义,也许在其他地方也是如此。

但是:如果你以前使用过 AutoHotKey (AHK),并且想要在 Linux 上使用类似的功能,那么自动键就是你想要的。

您得到的是短语(您可以纯粹在 GUI 中定义),按热键或输入缩写将导致您的短语内容被输入或粘贴到您的应用程序中,并且可以选择删除缩写。

这与 AHK 非常相似。

当您需要更多控制或更多复杂性时,您可以使用 AutoKey 脚本。这些脚本也可以通过热键和缩写触发,但它们不是用特定于应用程序的语言编写的,而是用 Python 3 编写的,并且具有该语言的全部功能以及可供您使用的所有扩展模块。

AutoKey 提供了用于生成键盘和鼠标事件、使用剪贴板、获取窗口信息和显示对话框的 API。

上面的两个示例每个都需要一行脚本:

keyboard.send_keys("<ctrl>+<shift>+z")

keyboard.send_keys("m<enter>")

在第一个示例中,+指示 AutoKey 同时按下这些键,以便前两个键充当修饰键。在第二个示例中,没有+,因此mEnter键是按顺序按下的。

实际上,脚本输入的内容通常会更长或由更多逻辑决定。

注意:如果您使用的是 20.04 之前的 Ubuntu 版本,则需要从 GitHub 安装 AutoKey,以避免获取非常旧且不受支持的版本。在 Ubuntu 中执行此操作相当容易,并且有说明可用这里

相关内容