xdotool
Linux下的按键精灵,提供了比较全面的功能。
安装
yum install xdotool
功能
部分功能,可能描述不准确,所以没标注。
- getactivewindow 获得当前活动窗口的pid
- getwindowfocus 获得当前聚焦窗口的pid
- getwindowname 获得窗口名字
- getwindowpid 获得窗口pid
- getwindowgeometry
- getdisplaygeometry
- search 查找窗口
- selectwindow 选中窗口
- help
- version
- behave windows event注册器(鼠标进、离、点;窗口聚焦、失焦)
- behave_screen_edge windows event注册器,根据鼠标范围触发
- click 鼠标点击
- getmouselocation 获得鼠标位置
- key 按键
- keydown 按下键
- keyup 弹起键
- mousedown 鼠标按下
- mousemove 鼠标移动
- mousemove_relative 鼠标相对移动(可以使用角度和距离)
- mouseup 鼠标弹起
- set_window 给窗口赋值(名称、图标等等)
- type 打字,可以当文件当参数
- windowactivate 激活窗口
- windowfocus 聚焦窗口
- windowkill 关窗口
- windowmap
- windowminimize 窗口最小化
- windowmove 窗口移动
- windowraise 我在linux实践了一下,弹了一个提示框。。。
- windowreparent 窗口换爹
- windowsize 窗口改大小
- windowunmap
- set_num_desktops
- get_num_desktops
- set_desktop
- get_desktop
- set_desktop_for_window
- get_desktop_for_window
- get_desktop_viewport
- set_desktop_viewport
- exec
- sleep
可以向指定窗口(–window windowPid)发送鼠标(mousemove、click)、键盘(key)动作的信息。还能自定义组合键。
也可以连起来写,比如:
xdotool search --name "App.java" windowactivate --sync mousemove --sync 800 400 click --repeat 2 1 key a type hi
例子
作用:启动脚本10秒后,定时执行java代码,执行完命令,使用xdotool翻页。
#! /bin/bash
sleeptime=1
savepath="./capture/"
needbeep="true"
if [[ $1 ]]; then
sleeptime=$1
fi
if [[ $2 ]]; then
savepath=$2
fi
if [[ $3 ]]; then
needbeep=$3
fi
echo "sleeptime = $sleeptime"
echo "savepath=$savepath"
echo "needbeep=$needbeep"
# before work;sleep 10
sleep 10
while :
do
sleep $sleeptime
java -cp ~/javacode/bin app.App $savepath $needbeep
xdotool key Page_Down
done