Linux工具 xdotool模拟输入事件工具

这篇文章介绍了在Linux环境下如何利用xdotool进行窗口管理和键鼠事件模拟,包括单键/组合键输入、鼠标移动、文本输入以及窗口操作,如获取焦点、调整大小等。xdotool在跨平台自动化任务中表现出色,相比Android工具更为便捷。
摘要由CSDN通过智能技术生成

xdotool实际上是X11窗口的命令行自动化工具,可以实现 按键/组合按键事件模拟、鼠标事件模拟、文本输入模拟、窗口信息及焦点的获取。

在android系统中模拟key事件/motion事件的工具主要是sendevent和getevent,那么在Linux上是否有更好的工具呢?当然是有的,Xorg系列的X工具之xdotool就是这个模拟事件非常棒的工具。而且用起来感觉比android要方便的多。可以在ubuntu/Debian上下载体验。只需要执行命令

$sudo apt install xdotools

安装即可。本文主要介绍xdotool的一些常见用法,通过xdotool --help查看下命令参数,如下:

Available commands:
  getactivewindow
  getwindowfocus
  getwindowname
  getwindowpid
  getwindowgeometry
  getdisplaygeometry
  search
  selectwindow
  help
  version
  behave
  behave_screen_edge
  click
  getmouselocation
  key
  keydown
  keyup
  mousedown
  mousemove
  mousemove_relative
  mouseup
  set_window
  type
  windowactivate
  windowfocus
  windowkill
  windowclose
  windowmap
  windowminimize
  windowmove
  windowraise
  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

主要涉及4个方面:按键/组合按键事件模拟、鼠标事件模拟、文本输入模拟、窗口信息。

1 按键事件模拟

@1 单个按键输入:

#模拟按键按下并抬起,可以使用
$xdotool key a
#俩者等价
#keydown 表示按键按下,keyup 表示按键抬起
$xdotool keydown a keyup a

@2 多按键组合输入:

如果模拟组合按键可以使用如下方式,这里可以组合2/3个组合按键,比如:

#组合按键 alt+F11
$xdotool alt+F11
#组合按键 ctrl+shift+t
$xdotool ctrl+shift+t

2 模拟鼠标

@1 模拟鼠标:

#滑鼠移動到 (100, 200) 的位置
$xdotool mousemove 100 200
#按下滑鼠左鍵(左鍵:1、滾輪:2、右鍵:3、滾輪上/下:4/5)
#点击操作
$xdotool click 1
#鼠标按下操作
$xdotool mousedown 2
#鼠标抬起操作
$xdotool mouseup 2

@2 移动到坐标位置:

#将鼠标移动到位置坐标:
$xdotool mousemove 100 200
#将鼠标相对当前位置分别移动x=100,y=100
$xdotool mousemove_relative 100 100

@3 取得目前滑鼠位置:

$xdotool getmouselocation

3 文本输入

#对获取焦点的窗口 输入文本 text
$xdotool type 'text'
#对获取焦点的窗口 每隔500ms自动输入一个字符,输入文本 Hello world
$xdotool type --delay 500 "Hello world"

4 window相关操作

这里总结了一些常见的xdotool的window操作

#获取当前窗口的 窗口ID
$xdotool getactivewindow
39845898 #这里会输出[窗口ID]

#获得显示器长宽
$ xdotool getdisplaygeometry 
1920 1080 #输出的显示器长宽

#通过[窗口ID]获得window的起点 和 长宽
$xdotool getwindowgeometry [窗口ID]
Window 39845898
  Position: 72,27 (screen: 0) #窗口起点
  Geometry: 1848x1053 #窗口长宽

#通过窗口ID获得 该窗口 terminal的 进程ID
$xdotool getwindowpid [窗口ID]

#选中窗口,通过该命令 会出现一个图标,选中哪个窗口,就能输出哪个窗口的[窗口ID]
$xdotool selectwindow

#使得窗口ID为39845898的窗口 获得焦点
$xdotool windowfocus [窗口ID]

5 官方文档

关于xdotool的官方手册,可参考:哦xdotool freeBSD手册个

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图王大胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值