linux下模仿用户左键,在Linux中模拟击键和鼠标移动

`

你是否曾经拥有一个梦

——你的计算机

可以自动为你干活?

或许,并非因为

你刚看了终结者。

然而,除此之外

脚本和任务自动化

是每个高级用户追寻的梦

如果今天

有许多的解决方案

可以满足这个目标

那么

有时候

就难以从那众多之中采撷那

简洁、聪明而又高效的一个

不能假装

是我自己发现了它

而与此同时

却偏爱着那个

整洁的软体——xdotool

其方法是如此直观

正如它作为X11自动化工具的表露

转换思想

xdotool可以通过读取文本文件

模拟击键的旋律

以及鼠标的曼舞

`

让Xdotool在Linux定居

对于Ubuntu,Debian或者Linux Mint,你能够只做:

$ sudo apt-get install xdotool

对于Fedora,请使用yum命令:

$ sudo yum install xdotool

对于CentOS用户,可以在EPEL repo中找到该包。在启用EPEL仓库后,只要使用上面的yum命令就可以达成你的愿望。

对于Arch用户,可在Community仓库中找到该包:

$ sudo pacman -S xdotool

如果你还是找不到你的发行版的对应xdotool,你可以从它的官方站点下载。

Xdotool基本功

虽然xdotool是那样的直观,但它仍然是个脚本程序。因此,为了要正确地使用它,你还是得了解它的语法。不过敬请放心,相对于程序的功能而言,语法还是比较简单易学的。

首先,模拟击键是很容易的。你可以从终端敲入下面的命令:

$ xdotool key [name of the key]

如果你想要连接两个键,可以在它们之间使用“+”操作符。它看起来像这样:

$ xdotool key alt+Tab

这两个组合键可以为你切换窗口。

要想让xdotool帮你输入,可以使用以下命令:

$ xdotool type ''

这些对于基本的击键而言已经足够了。但是,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]

etc

或者你可以使用:

$ xdotool [filename]

这里你将命令写入到一个独立的文件中,然后通过将文件名作为xdotool命令的参数。

意外收获

作为本文的一个意外收获,这里是xdotool的一个具体实例。你可能听说过,也可能没听说过Bing —— 微软的搜索引擎。在后面的实例中,你会看到你可能从没听过Bing奖励:一个程序,可以让你用Bing积分兑取亚马逊的礼物卡和其它的一些礼物卡 (LCTT 译注:我是从来没听说过~)。要赚取这些积分,你可以每天在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%20|%20cut%20-d'%20'%20-f1-3%20|%20head%20-1)"

xdotool type $SENTENCE

xdotool key "Return"

sleep 4

done

下面来个小结吧:我真的很喜欢xdotool,即便它的完整功能超越了本文涵盖的范围。这对于脚本和任务自动化而言,确实是种平易的方式。负面的问题是,它可能不是最有效率的一个。但我要再说一遍,它忠于职守了,而且学习起来也不是那么麻烦。

你对xdotool怎么看呢?你是否更喜欢另外一个自动化工具,而不是它呢?为什么呢?请在评论中告诉我们吧。

本文由 LCTT 原创翻译,Linux中国 荣誉推出

cbd5a61765aed016a56103b68dcc8d51.gif

相关

Related Posts

linux 下批量压缩文件

一堆eps文件要将每个文件单独压缩成一个文件,比如a.eps , b.eps, c.eps 压缩成 a.zip ,b.zip ,c.zip for…

Linux umask限制导致php的mkdir 0777无效

这两天在写一个缓存模块,需要把生成的缓存目录和文件设置成777权限,好让ftp用户可以直接登录删除缓存,蛋疼的事也就这么发生了,明明用了mkdir($path, 0777);用ftp用户登录却删除不了,为什么呢?   查看了一下建立的目录的权限,发现mkdir建立的目录权限都是755的,我明明用的是777,立马google了一下,才知道原来是受Linux 系统的 umask限制了,Linux的umask默认值是0022,所以php 的 mkdir 函数只能建立出755权限的文件夹出来。…

smartgit-300x186-150x150.png

linux git 客户端 smartgit

本机装了双系统centos6.5,在centos下装了一套开发环境,发现linux下的git图形客户端好少,能用的更少。本想装一下gitg 的,发现gitg要求的依赖包好新,centos基本上不能满足,如果非要用的话,要手动更新好多包,太麻烦。在centos下,推荐使用 smartgit。 一,下载linux版smartgit 下载地址:http://www.syntevo.com/smartgithg/download 二,安装git # yum install…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值