分享到plurk 分享到twitter 分享到facebook

xdotool

原本希望找個程式幫我重複做幾個無聊的動作,

而一開始想到的東西是 sikuli_ ,而無奈他執行的時候一直carsh,

另外花時間解決這個問題感覺不太符合效益,所以就找到了這個東西。

.. _sikuli: http://sikuli.org/

簡介

套件說明:simulate X11 keyboard/mouse input

也就是在X Windows下模擬鍵盤和滑鼠的輸入

安裝

ubuntu/debian

.. code-block:: prettyprint linenums

sudo apt-get install xdotool

其他可以參考 xdotool的project頁面_

.. _xdotool的project頁面: http://www.semicomplete.com/projects/xdotool/

範例

  • 鍵盤輸入a

.. code-block:: prettyprint linenums

xdotool key a
  • 按住a/放開a

.. code-block:: prettyprint linenums

xdotool keydown a
xdotool keyup a
  • 滑鼠移動到 (100, 200) 的位置

.. code-block:: prettyprint linenums

xdotool mousemove 100 200
  • 按下滑鼠左鍵(左鍵:1、滾輪:2、右鍵:3、滾輪上/下:4/5)

.. code-block:: prettyprint linenums

xdotool click 1
  • 按住滑鼠放開滑鼠

.. code-block:: prettyprint linenums

xdotool mousedown
xdotool mouseup
  • 取得目前滑鼠位置

.. code-block:: prettyprint linenums

xdotool getmouselocation

各個動作下還可以加上一些參數,下面一個man page裡的例子

  • 送出ctrl+c到所有title是’gdb’的視窗中

.. code-block:: prettyprint linenums

xdotool search --name gdb key ctrl+c

比較詳細的資料可以參考man page中的說明

執行方式

執行方式大概有下面幾種

  • 直接下命令

像上面範例中的作法一樣,直接在CLI上輸入

.. code-block:: prettyprint linenums

xdotool click
  • 從檔案中讀取指令

.. code-block:: prettyprint linenums

xdotool filename
  • 從標準輸入(stdin)讀取

可以搭配redirection來從檔案中讀取

.. code-block:: prettyprint linenums

xdotool -
xdotool - < filename
  • 寫成script

.. code-block:: prettyprint linenums

#!/usr/bin/xdotool

mousemove 100 200
click

其他

有一xdotoolgui的東西,似乎是可以直接用來編輯xdotool的命令,

不過我的需求沒有很複雜,而也他也不再套件庫中,所以我就沒有深入研究。

轉載自 http://blog.float.tw/2012/06/xdotool.html