小智 38
为了避免所有sed/awk/cut东西,你可以使用
xdotool getmouselocation --shell
Run Code Online (Sandbox Code Playgroud)
特别是,
eval $(xdotool getmouselocation --shell)
Run Code Online (Sandbox Code Playgroud)
将位置放入shell变量X,Y和SCREEN.之后,
echo $X $Y
Run Code Online (Sandbox Code Playgroud)
将为以后xdotool mousemove或任何其他用途准备一个片段.
连续点击几个位置的额外信息是文件positions.txt(由几个eval/echo运行给出):
123 13
423 243
232 989
Run Code Online (Sandbox Code Playgroud)
使用它的代码是:
while read line; do
X=`echo $line| cut -c1-3`;
Y=`echo $line| cut -c4-7`;
xdotool mousemove --sync $(( 0.5 + $X )) $(( 0.5 + $Y ));
xdotool click 1
done < positions.txt
Run Code Online (Sandbox Code Playgroud)
如果不需要缩放像素(不像我的情况),它可能很简单
while read line; do
xdotool mousemove --sync $line;
xdotool click 1
done < positions.txt
Run Code Online (Sandbox Code Playgroud)
Yok*_*kai 20
试试这个:
# Real time mouse position.
watch -t -n 0.0001 xdotool getmouselocation
Run Code Online (Sandbox Code Playgroud)
这将在您移动时实时显示鼠标在"x"和"y"的位置.您可以将坐标保存到文件中以供以后引用,或者在脚本中使用以下列方式自动执行这些鼠标移动:
# Save real time mouse coordinates to file.
while true; do xdotool getmouselocation | sed -e 's/ screen:0 window:[^ ]*//g' >> coordinates.txt; done
Run Code Online (Sandbox Code Playgroud)
这^将只将鼠标坐标记录到coordinates.txt中.如果要重复录制时执行的操作,可以使用脚本中的每一行.一个简单的方法ctrl+c可以用于结束录制会话.
这只是xdotoolAFK自动化和其他东西的一个很好的实例.即使是定制机器人:D
(编辑)
如果您需要从命令中删除x:和,您可以添加逻辑OR ,同时使用扩展正则表达式选项,运算符如下:y:sed|-E
xdotool getmouselocation | sed -E "s/ screen:0 window:[^ ]*|x:|y://g"
如果您想使用重定向和命令替换更紧凑的命令,您可以使用以下而不是管道:
sed -E 's/ screen:0 window:[^ ]*|x:|y://g' <<< $(xdotool getmouselocation)
作为免责声明,sed正则表达式是为GNU sed编写的,在不同平台或sed版本中可能无法正常工作.
| 归档时间: |
|
| 查看次数: |
28228 次 |
| 最近记录: |