设为首页 收藏本站
查看: 565|回复: 0

[经验分享] 在Linux中模拟击键和鼠标移动

[复制链接]

尚未签到

发表于 2016-3-14 07:12:36 | 显示全部楼层 |阅读模式
`
你是否曾经拥有一个梦
——你的计算机
可以自动为你干活?
或许,并非因为
你刚看了终结者。
然而,除此之外
脚本和任务自动化
是每个高级用户追寻的梦
如果今天
有许多的解决方案
可以满足这个目标
那么
有时候
就难以从那众多之中采撷那
简洁、聪明而又高效的一个

不能假装
是我自己发现了它
而与此同时
却偏爱着那个
整洁的软体——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 | cut -d' ' -f1-3 | head -1)"
xdotool type $SENTENCE
xdotool key "Return"
sleep 4
done
  
  下面来个小结吧:我真的很喜欢xdotool,即便它的完整功能超越了本文涵盖的范围。这对于脚本和任务自动化而言,确实是种平易的方式。负面的问题是,它可能不是最有效率的一个。但我要再说一遍,它忠于职守了,而且学习起来也不是那么麻烦。
  
  你对xdotool怎么看呢?你是否更喜欢另外一个自动化工具,而不是它呢?为什么呢?请在评论中告诉我们吧。

  
  via: http://xmodulo.com/2014/07/simulate-key-press-mouse-movement-linux.html
  译者:GOLinux 校对: wxy
  本文由 LCTT 原创翻译,Linux中国 荣誉推出

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-190404-1-1.html 上篇帖子: java远程调用linux的命令或者脚本 下篇帖子: Linux下任务调度的crond常驻命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表