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

版本 aee7a73cbaeb9f880983905e9cf7b13d78127e4d

xdotool

Changes from aee7a73cbaeb9f880983905e9cf7b13d78127e4d to current

---
categories: 工具軟體
...

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

而一開始想到的東西是\ 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