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 | 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國