在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 | 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive