如何在Linux中模拟按键和鼠标移动
您是否曾经梦想过您的计算机自动为您做事?如果你刚看过《终结者》,可能不会。但除此之外,脚本编写和任务自动化是每个高级用户的梦想。如果现在有很多解决方案可以满足这一目标,那么有时很难从众多解决方案中挑选出简单、智能且高效的解决方案。我不能假装自己找到了它,但与此同时,我更喜欢名为 xdotool
的简洁软件。它的方法很直观,因为它是一个 X11 自动化工具。换句话说,xdotool 可以通过读取文本文件来模拟按键甚至鼠标事件。
在Linux上安装Xdotool
对于 Ubuntu、Debian 或 Linux Mint,您可以这样做:
$ sudo apt-get install xdotool
对于 Fedora,使用 yum 命令:
$ sudo yum install xdotool
对于 CentOS 用户,该软件包可在 EPEL 存储库中找到。启用 EPEL 存储库后,只需使用上面的 yum 命令即可。
对于 Arch 用户,该软件包可在社区存储库中找到:
$ sudo pacman -S xdotool
如果您找不到适合您的发行版的xdotool
,您可以随时从官方网站下载它。
Xdotool的基本用法
尽管很直观,xdotool
仍然是一个脚本应用程序。因此,您必须了解语法才能正确使用它。不过请放心,相对于程序的功能范围而言,语法非常简单且易于快速掌握。
首先,模拟按键非常容易。从终端,您可以键入命令:
$ xdotool key [name of the key]
如果要链接两个键,请在它们之间使用 +
运算符。例如,切换窗口:
$ xdotool key alt+Tab
要为您输入 xdotool
类型,请使用 type
命令:
$ xdotool type '[text 1="type" language="to"][/text]'
对于基本的按键来说这已经足够了。但 xdotool 的众多优势之一是它能够将焦点置于特定窗口上。它可以获取正确的窗口,然后在其中输入内容,从而防止所有记录的击键消失在稀薄的空气中。为此,最简单的命令是:
$ xdotool search --name [name of the window] key [keys to press]
这将在打开的窗口中搜索名称与搜索匹配的窗口,为其提供焦点,然后模拟按键。
更高级一点,但非常有用,xdotool
可以模拟鼠标移动和点击。例如:
$ xdotool mousemove x y
使用上面的命令,您可以将光标放置在屏幕的坐标 (x,y) 处(以像素为单位)。您还可以将其与 click
参数结合使用:
$ xdotool mousemove x y click 1
这会将鼠标移动到 (x,y),然后单击左键。 1
代表鼠标左键,2
代表滚轮,3
代表鼠标右键,等等。
最后,一旦您记住了命令,您可能希望将其实际转储到文件中以进行编辑和播放。为此,有不止一种语法。您可以编写一个 bash
脚本:
#!/bin/bash
xdotool [command 1]
xdotool [command 2]
. . .
或者您可以使用:
$ xdotool [filename]
您可以在单独的文件中编写命令并将其名称作为参数。
奖金
作为这篇文章的奖励,这里有一个 xdotool
实际运行的具体示例。您可能听说过,也可能没有听说过 Microsoft 的搜索引擎 Bing。在后一种情况下,您可能从未听说过 Bing Rewards:一个允许您用 Bing 积分换取亚马逊和其他礼品卡的计划。要获得这些积分,您每天最多可以在 Bing 上进行 30 次搜索,每次搜索可获得 0.5 积分。换句话说,您必须将 Bing 设置为您的默认搜索引擎,并每天使用它。
或者,您可以使用此 xdotool
脚本,该脚本会自动将焦点转移到 Firefox(将其替换为您最喜欢的导航器),并使用 fortune
命令执行搜索以生成一些随机单词。大约 30 秒内,您所有的日常搜索都将完成。
#!/bin/bash
for i in {1..30}
do
WID=`xdotool search --title "Mozilla Firefox" | head -1`
xdotool windowfocus $WID
xdotool key ctrl+l
xdotool key Tab
SENTENCE="$(fortune | cut -d' ' -f1-3 | head -1)"
xdotool type $SENTENCE
xdotool key "Return"
sleep 4
done
总而言之,我真的很喜欢 xdotool
,即使它的全部功能远远超出了本文的范围。这是一种非常平易近人的脚本编写和任务自动化方法。缺点是它可能不是最有效的。但同样,它可以完成工作,并且学习起来并不麻烦。
您对 xdotool
有什么看法?您是否更喜欢其他自动化工具?为什么?让我们在评论中知道。