xdotool 模拟键鼠动作

简介

xdotool可以用来在X窗口模拟键盘输入、鼠标动作,以及获取窗口信息等。类比Linux下的按键精灵。

按键

发送按键,可以是单个按键,也可以是组合键。例如 “alt+r”, “Control_L+J”, “ctrl+alt+n”, “BackSpace”

xdotool key j
# 按组合键
xdotool key ctrl+alt+n 
# 按功能键F2
xdotool key F2
# 按下ctrl+l,然后按下BackSpace
xdotool key ctrl+l BackSpace 

更细一点,可以分别控制按下和松开。

xdotool keydown ctrl
xdotool keydown b
xdotool keydown d
xdotool keyup ctrl

对于不知道按键对应的信息,可以用xev命令查看。

连续输入

对于连续输入文字内容,可以用type命令,有更高的效率。

xdotool type "hello world"
# 设置delay可以控制快慢,比如100ms,默认值为12ms
xdotool type "some words slower" --delay 100

也可以指定窗口,看下面窗口操作

鼠标动作

# 移动鼠标到100,200
xdotool mousemove 100 200
# 移动鼠标到当前位置的相对位置
xdotool mousemove_relative 100 100
# 获取鼠标位置
xdotool getmouselocation
# 使用--shell参数方便设置到shell变量
eval $(xdotool getmouselocation --shell)
# 模拟鼠标点击 1左键 2中键 3右键 4滚轮向上 5滚轮向下
xdotool click 1
# 组合起来移动加右键点击
xdotool mousemove 100 100 click 3
# 模拟双击
xdotool click --repeat 2 1

分别控制按下和松开

xdotool mousedown 1
xdotool mouseup 1

还可以--window WINDOW指定窗口和--screen SCREEN指定屏幕

窗口操作

查找窗口

# 搜索名字为gdb的窗口,然后发送ctrl+c
xdotool search --name gdb key ctrl+c 
# 控制MPlayer的播放与暂停
xdotool search --name "MPlayer" key --window %1 space
# 寻找Chrome窗口并切换到它
xdotool search --name "Chrome" windowactivate --sync

SSH使用

如果在SSH中使用,需要先设置DISPLAY环境变量

export DISPLAY=:0