这是命令 xdotool 可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
xdotool - 命令行 X11 自动化工具
概要
工具 CMD 参数...
符号:一些文档使用 [窗户] 表示一个可选的窗口参数。 这个
case 表示该参数(如果不存在)将默认为“%1”。 参见“窗口堆栈”
“%1”是什么意思。
商品描述
工具 让您以编程方式(或手动)模拟键盘输入和鼠标活动,
移动和调整窗口大小等。它使用 X11 的 XTEST 扩展和其他 Xlib 来做到这一点
功能。
有一些对扩展窗口管理器提示(又名 EWMH 或 NetWM)的支持。 见
“扩展窗口管理器提示”部分了解更多信息。
键盘 指令
键 [选项] 按键 [按键 ...]
选项:
- 窗户 窗口
将击键发送到特定的窗口 ID。 您可以使用“WINDOW STACK”引用
比如这里的“%1”和“%@”。 如果有一个窗口堆栈,则“%1”是默认值,
否则使用当前窗口。
另见:“发送笔记”和“窗口堆栈”
--清除修饰符
在发送按键之前清除修饰符。 请参阅下面的 CLEARMODIFIERS。
- 延迟 毫秒
击键之间的延迟。 默认为 12 毫秒。
键入给定的击键。 例如“alt+r”、“Control_L+J”、“ctrl+alt+n”、
“后退空间”。
通常,任何有效的 X Keysym 字符串都可以使用。 多个键用“+”分隔。
“alt”、“ctrl”、“shift”、“super”和“meta”存在别名,它们都映射到 Foo_L,
例如 Alt_L 和 Control_L 等。
如果您的键盘实际上没有您想要输入的键,xdotool
将自动找到未使用的密钥代码并使用它来键入密钥。
关于“COMMAND CHAINING”,该命令消耗剩余的
参数或直到看到新的 xdotool 命令,因为没有 xdotool 命令
有效的击键。
示例:发送击键“F2”
xdotool 键 F2
示例:发送带有重音的“a”(不是在英文键盘上,但仍然有效)
与 xdotool)
xdotool 键 Aacute
示例:发送 ctrl+l 和 BackSpace 作为单独的击键:
xdotool 键 ctrl+l BackSpace
示例:将 ctrl+c 发送到所有匹配标题 'gdb' 的窗口(参见“命令链”)
xdotool 搜索 --name gdb 键 ctrl+c
KEYDOWN [选项] 按键
同上,除了只发送 keydown(按下)事件。
键控 按键
同上,除了只发送 keyup (release) 事件。
类型 [选项] 东西 至 类型
选项:
- 窗户 窗口标识
将击键发送到特定的窗口 ID。 请参阅下面的“发送事件说明”。 默认情况下,
如果没有给出窗口,则取决于窗口堆栈。 如果窗口堆栈为空
当前窗口是使用 XTEST 键入的。 否则,默认值为“%1”(请参阅
“窗口堆栈”)。
- 延迟 毫秒
击键之间的延迟。 默认为 12 毫秒。
--清除修饰符
在发送按键之前清除修饰符。 请参阅下面的 CLEARMODIFIERS。
打字就像你打字一样。 支持换行符和制表符(ASCII 换行符和制表符)。 每个
击键由给定的延迟分隔 - 延迟 选项。
关于“COMMAND CHAINING”,该命令消耗剩余的
参数并键入它们。 也就是说,没有命令可以链接在“type”之后。
示例:输入“Hello world!” 你会这样做:
xdotool 类型 'Hello world!'
小鼠 指令
鼠标移动 [选项] x y OR '恢复'
将鼠标移动到屏幕上的特定 X 和 Y 坐标。
如果指定 'restore' 而不是
X 和 Y 坐标。 仅当您之前在同一位置移动时,恢复才有效
命令调用。 此外,它不适用于 --window 选项。
例如,单击屏幕左上角并将鼠标移至
移动它之前的原始位置,使用这个:
xdotool mousemove 0 0 单击 1 mousemove 恢复
- 窗户 窗口
指定要相对移动的窗口。 坐标 0,0 在左上角
您选择的窗口。
“WINDOW STACK”引用在此处有效,例如 %1 和 %@。 虽然,使用 %@
可能没有意义。
- 屏幕 屏幕
将鼠标移动到要移动到的指定屏幕。 这仅在您有时才有用
多个屏幕,并且不使用 Xinerama。
默认为当前屏幕。 如果您指定 --window,则 --screen 标志为
忽略了。
- 极性
使用极坐标。 这使 'x' 成为一个角度(以度数、0-360 等为单位)和 'y'
距离。
旋转从“向上”(0 度)开始并顺时针旋转:90 = 向右,180 = 向下,
270 = 左。
原点默认为当前屏幕的中心。 如果您指定一个
--window,那么原点就是那个窗口的中心。
--清除修饰符
见清除修饰符
- 同步
发送鼠标移动请求后,等待鼠标实际移动。 如果
不需要移动,我们不会等待。 这对于依赖的脚本很有用
在继续之前完成的操作。
注意:我们一直等到鼠标移动,不一定真的
到达您预定的目的地。 某些应用程序将鼠标光标锁定到
屏幕的某些区域,因此最好在屏幕上等待任何移动
一般情况比等待特定目标。
鼠标移动相对 [选项] x y
相对于鼠标光标的当前位置移动鼠标 x,y 像素。
- 极性
使用极坐标。 这使 'x' 成为一个角度(以度数、0-360 等为单位)和 'y'
距离。
旋转从“向上”(0 度)开始并顺时针旋转:90 = 向右,180 = 向下,
270 = 左。
- 同步
发送鼠标移动请求后,等待鼠标实际移动。 如果
不需要移动,我们不会等待。 这对于依赖的脚本很有用
在继续之前完成的操作。
请注意,我们一直等到鼠标完全移动,而不一定是它实际上
到达您预定的目的地。 某些应用程序将鼠标光标锁定到
屏幕的某些区域,因此最好在屏幕上等待任何移动
一般情况比等待特定目标。
--清除修饰符
见清除修饰符
点击 [选项] 按键
发送一个点击,即一个 mousedown 后跟 mouseup 给定的按钮
两者之间的短暂延迟(目前为 12 毫秒)。
按钮一般是这样映射的:鼠标左键为 1,中键为 2,右键为 3,向上滚轮为
4、下轮为5。
--清除修饰符
单击前清除修饰符。 请参阅下面的 CLEARMODIFIERS。
- 重复 REPEAT
指定点击的次数。 默认值为 1。对于双击,请使用 '--repeat
2'
- 延迟 毫秒
指定点击之间的延迟时间(以毫秒为单位)。 这个选项不是
如果使用 - 重复 标志设置为 1(默认)。
- 窗户 窗口
指定一个窗口来发送点击。 有关注意事项,请参阅下面的“发送说明”。 用途
生成事件时的当前鼠标位置。
如果没有给出窗口,则默认值取决于窗口堆栈。 如果窗户
堆栈为空 当前窗口使用 XTEST 键入。 否则默认
是“%1”(参见“窗口堆栈”)。
鼠标按下 [选项] 按键
与...一样 点击,除了只发送鼠标按下。
鼠标向上 [选项] 按键
与...一样 点击,除了只发送鼠标向上。
获取鼠标位置 [ - 贝壳]
输出鼠标光标的 x、y、屏幕和窗口 ID。 屏幕编号将是
如果您有多个显示器并且不使用 Xinerama,则非零。
- 贝壳
这使得 getmouselocation 输出外壳数据您可以评估。 例子:
% xdotool getmouselocation --shell
X = 880
Y = 443
屏幕=0
窗口=16777250
% eval $(xdotool getmouselocation --shell)
% 回声 $X,$Y
714,324
行为屏幕边缘 [选项] 哪里 命令 ...
当鼠标点击屏幕边缘或角落时将动作绑定到事件。
选项包括:
- 延迟 毫秒
运行命令之前的延迟(以毫秒为单位)。 这允许您要求一个
给定的边或角在您的命令运行之前保持一小段时间。
如果您在延迟到期之前离开边缘或角落,则时间将重置。
--静默 毫秒
下一个命令运行之前的延迟(以毫秒为单位)。 这有助于防止
意外地额外运行你的命令; 如果你有一个特别有用的
非常短的 --delay (如默认值 0)。
事件时间线
* 鼠标碰到边缘或角落。
* 如果延迟不为零,鼠标必须停留在这个边缘或角落,直到延迟时间到期。
* 如果仍在边缘/角落,则触发。
* 如果 quiesce 非零,则有一个冷却期,下一个
触发器不能发生
有效的“where”值为:
左
左上方
最佳
右上
右
左下方
底部
右下
例子:
# 将鼠标移动到左下角时激活 google-chrome:
xdotool 行为屏幕边缘左下角
搜索 --class google-chrome windowactivate
# 转到下一个工作区(右)。 已知在 GNOME 中工作(metacity 和 compiz)
xdotool behavior_screen_edge --delay 500 右下键 XF86Forward
# 激活 firefox 并在新标签页中搜索剪贴板中的文本
xdotool behavior_screen_edge --delay 1000 左上角
搜索 --classname 导航器
windowactivate --sync key --delay 250 ctrl+t ctrl+k ctrl+v 返回
窗口 指令
搜索、 [选项] 模式
使用正则表达式模式搜索带有标题、名称或类的窗口。
输出是以行分隔的 X 窗口标识符列表。 如果您使用“命令
CHAINING",如果是最后一个,则搜索命令只会将窗口 ID 写入 stdout
(或仅)链中的命令; 否则,它是沉默的。
结果将保存到窗口堆栈中以供将来链接命令使用。 见“窗口
堆栈”和“命令链”了解详细信息。
默认选项是“--name --class --classname”(除非您指定其中之一或
更多 --name --class 或 --classname )。
可用的选项是:
- 班级
匹配窗口类。
- 班级名称
与窗口类名匹配。
--最大深度 N
设置递归/子搜索深度。 默认值为 -1,表示无限。 0 表示没有
深度,只会搜索根窗口。 如果您只想要顶级窗口,请设置
maxdepth 为 1(或 2,取决于您的窗口管理器如何进行装饰)。
- 姓名
与窗口名称匹配。 这与显示在
窗口标题栏。
--仅可见
在结果中仅显示可见窗口。 这意味着具有地图状态的
可查看。
--pid 电位诱导衰减
匹配属于特定进程 ID 的窗口。 这可能不适用于某些 X
未在其窗口上设置此元数据的应用程序。
- 屏幕 N
仅在特定屏幕上选择窗口。 默认是搜索所有屏幕。 仅有的
如果您有多个显示器并且不使用 Xinerama,则意义重大。
- 桌面 N
只匹配某个桌面上的窗口。 “N”是一个数字。 默认是搜索
所有桌面。
- 限制 N
找到 N 个匹配的窗口后停止搜索。 指定限制会有所帮助
如果您只想要几个结果,请加快搜索速度。
默认是没有搜索限制(相当于'--limit 0')
- 标题
已弃用。 见--名称。
- 全部
要求满足所有条件。 例如:
xdotool search --all --pid 1424 --name "Hello World"
这将仅匹配名称为“Hello World”并归其所有的窗口
速度 1424。
- 任何
匹配匹配任何条件(逻辑上为“或”)的窗口。 这是默认开启的。
例如:
xdotool search --any --pid 1424 --name "Hello World"
这将匹配 pid 1424 拥有的任何窗口或名称为“Hello World”的窗口
- 同步
阻塞直到有结果。 这在您启动一个
应用程序想要等到应用程序窗口可见。 为了
例:
谷歌浏览器 &
xdotool 搜索 --sync --onlyvisible --class "google-chrome"
选择窗口
通过单击获取窗口 ID(对于客户端)。 用于脚本查询
你们人类在哪个窗口上采取行动。 例如,通过点击一个窗口来杀死它:
xdotool 选择窗口窗口杀
表现 窗口 行动 命令 ...
将操作绑定到窗口上的事件。 这使您可以运行其他 xdotool 命令
每当匹配的事件发生时。
作为行为结果运行的命令以 %1 作为窗口运行
采取了行动。 示例在事件列表之后。
以下是有效事件:
鼠标输入
当鼠标进入窗口时触发。 这类似于“鼠标悬停”事件
javascript,如果有帮助的话。
鼠标离开
当鼠标离开窗口时触发。 这与“鼠标输入”相反
鼠标点击
单击鼠标时触发。 具体来说,当鼠标按钮被释放时。
专注度
当窗口获得输入焦点时触发。
模糊
当窗口失去焦点时触发。
例子:
# 当鼠标进入当前可见时打印光标位置
# 窗户:
xdotool 搜索 --onlyvisible 。 行为 %@ mouse-enter getmouselocation
# 每当 xterm 获得焦点时打印窗口标题和 pid
xdotool search --class xterm 行为 %@ focus getwindowname getwindowpid
# 模拟焦点跟随鼠标
xdotool 搜索。 行为 %@ mouse-enter windowfocus
获取窗口pid [窗户]
输出拥有给定窗口的 PID。 这需要应用程序拥有者的努力
一个窗口,可能不适用于所有窗口。 这使用了 _NET_WM_PID 属性
窗户。 有关更多信息,请参阅下面的“扩展窗口管理器提示”。
如果未给出窗口,则默认值为“%1”。 如果堆栈上没有窗口,那么这个
是一个错误。 有关详细信息,请参阅“窗口堆栈”。
示例:查找所有 xterm 的 PID:
xdotool 搜索 --class xterm getwindowpid %@
获取窗口名称 [窗户]
输出给定窗口的名称,也称为标题。 这是显示的文字
在窗口管理器的窗口标题栏中。
如果未给出窗口,则默认值为“%1”。 如果堆栈上没有窗口,那么这个
是一个错误。 有关详细信息,请参阅“窗口堆栈”。
获取窗口几何 [选项] [窗户]
输出窗口的几何形状(位置和位置)。 值包括:x、y、
宽度、高度和屏幕编号。
- 贝壳
适合于 shell 中的 'eval' 的输出值。
获取窗口焦点 [-F]
打印当前聚焦窗口的窗口 ID。 将结果保存到窗口
堆。 有关详细信息,请参阅“窗口堆栈”。
如果当前窗口没有 WM_CLASS 属性,我们认为它不是一个普通的顶级
窗口并向上遍历父级,直到我们找到一个设置了 WM_CLASS 的窗口并且
返回那个窗口ID。
如果你真的想要当前有焦点的窗口并且不关心它是否有
WM_CLASS 设置,然后使用'getwindowfocus -f'
窗口大小 [选项] [窗口] 宽高
设置给定窗口的窗口大小。 如果没有给出窗口,%1 是默认值。
有关更多详细信息,请参阅“窗口堆栈”和“命令链接”。
百分比对宽度和高度有效。 它们与物体的几何形状有关
窗口打开的屏幕。 例如,要使窗口占整个屏幕的宽度,
但半高:
xdotool 窗口大小 I 100% 50%
百分比对 --usehints 有效,并且仍然是相对于
屏幕尺寸。
可用的选项是:
--使用提示
使用窗口大小提示(如果可用)来设置宽度和高度。 这很有用
在用于根据文本的行/列而不是像素设置大小的终端上。
- 同步
发送窗口大小请求后,等待窗口实际调整大小。
如果不需要改变,我们不会等待。 这对于以下脚本很有用
在继续之前取决于已完成的操作。
注意:因为许多窗口管理器可能会忽略或更改原始调整大小
要求,我们会等到尺寸从原来的尺寸改变,没有必要
到要求的尺寸。
示例:要将终端设置为 80x24 字符,您可以使用:
xdotool 窗口大小 --usehints 一些_windowid 80 24
窗口移动 [选项] [窗户] x y
将窗口移动到给定位置。 如果没有给出窗口,%1 是默认值。 看
“WINDOW STACK”和“COMMAND CHAINING”了解更多详情。
如果给定的 x 坐标字面上是“x”,则窗口的当前 x 位置将
不变。 这同样适用于“y”。
例子:
xdotool getactivewindow windowmove 100 100 # 移动到 100,100
xdotool getactivewindow windowmove x 100 # 移动到 x,100
xdotool getactivewindow windowmove 100 y # 移动到 100,y
xdotool getactivewindow windowmove 100 y # 移动到 100,y
- 同步
发送窗口移动请求后,等待窗口实际移动。 如果
不需要移动,我们不会等待。 这对于依赖的脚本很有用
在继续之前完成的操作。
- 相对的
相对于当前窗口位置进行移动。
窗口焦点 [选项] [窗户]
聚焦一个窗口。 如果没有给出窗口,%1 是默认值。 请参阅“窗口堆栈”和
“命令链”了解更多详情。
使用一些窗口管理器或程序可能会忽略的 XSetInputFocus。
- 同步
发送窗口焦点请求后,等待窗口真正获得焦点。
这对于依赖于移动之前完成的操作的脚本很有用
上。
窗口地图 [选项] [窗户]
映射一个窗口。 在 X11 术语中,映射窗口意味着使其在
屏幕。 如果没有给出窗口,%1 是默认值。 请参阅“窗口堆栈”和“命令”
链”了解更多详情。
- 同步
请求窗口映射后,等待窗口实际映射
(可见的)。 这对于依赖于正在完成的操作的脚本很有用
在继续之前。
窗口最小化 [选项] [窗户]
最小化一个窗口。 在 X11 术语中,这称为“图标化”。 如果没有窗户
给定,%1 是默认值。 有关更多详细信息,请参阅“窗口堆栈”和“命令链接”。
- 同步
请求窗口最小化后,等待窗口真正最小化。
这对于依赖于移动之前完成的操作的脚本很有用
上。
开窗 [窗口 ID=%1]
将窗口提升到堆栈顶部。 这可能不适用于所有窗口管理器。 如果
没有给出窗口,%1 是默认值。 参见“WINDOW STACK”和“COMMAND CHAINING”
更多细节。
窗口reparent [源窗口] 目的地_窗口
重新设置一个窗口。 这使 源窗口 成为孩子的窗口
目的地_窗口. 如果未提供源,则 %1 是默认值。 “窗口堆栈”窗口
引用(如 %1)对两者都有效 源窗口 和 目的地_窗口 参见
“WINDOW STACK”和“COMMAND CHAINING”了解更多详情。
窗口关闭 [窗户]
关闭一个窗口。 此操作将破坏窗口,但不会尝试杀死窗口
客户端控制它。 如果没有给出窗口,%1 是默认值。 见“窗口堆栈”
和“命令链”了解更多详情。
杀窗 [窗户]
杀死一个窗口。 此操作将破坏窗口并杀死控制它的客户端。
如果没有给出窗口,%1 是默认值。 参见 WINDOW STACK 和“COMMAND CHAINING”
更多细节。
窗口映射 [选项] [窗口 ID=%1]
取消映射窗口,使其不再出现在您的屏幕上。 如果没有给出窗口,%1
是默认值。 有关更多详细信息,请参阅“窗口堆栈”和“命令链接”。
- 同步
请求窗口取消映射后,等待窗口实际取消映射
(隐)。 这对于依赖于之前完成的操作的脚本很有用
继续。
设置窗口 [选项] [窗口 ID=%1]
设置有关窗口的属性。 如果没有给出窗口,%1 是默认值。 见“窗口
堆栈”和“命令链”了解更多详情。
选项:
- 姓名 新名字
设置窗口 WM_NAME(窗口标题,通常)
--图标名称 新图标名称
设置窗口 WM_ICON_NAME(最小化时的窗口标题,通常)
- 角色 新角色
设置窗口 WM_WINDOW_ROLE
- 班级名称 新类名
设置窗口类名(不要与窗口类混淆)
- 班级 新班级
设置窗口类(不要与窗口类名混淆)
--覆盖重定向 折扣值
设置窗口的 override_redirect 值。 该值是对窗口管理器的提示
是否应该对其进行管理。 如果重定向值为 0,则
窗口管理器将绘制边框并正常处理此窗口。 如果值为
1、窗口管理器会忽略这个窗口。
如果您更改此值,您的窗口管理器可能不会注意到更改,直到
窗口再次映射,因此您可能需要发出 'windowunmap' 和 'windowmap' 到
让窗口管理器注意。
桌面 AND 窗口 指令
这些命令遵循 EWMH 标准。 请参阅“扩展窗口管理器提示”部分
获取更多信息。
窗口激活 [选项] [窗户]
激活窗口。 此命令与 windowfocus 不同:如果窗口打开
另一个桌面,我们将切换到该桌面。 它还使用了不同的方法
把窗户抬起来。 我建议在使用 windowfocus 之前尝试这个命令,因为
它将适用于更多的窗口管理器。
如果没有给出窗口,%1 是默认值。 参见“窗口堆栈”和“命令链”
,了解更多详情。
- 同步
发送窗口激活后,等待窗口实际激活。
这对于依赖于移动之前完成的操作的脚本很有用
上。
获取活动窗口
输出当前活动窗口。 此命令通常比
获取窗口焦点。 结果保存到窗口堆栈中。 更多信息请参见“窗口堆栈”
细节。
设置桌面数 数
更改桌面或工作区的数量。
获取桌面数
输出当前桌面数量。
获取桌面视口 [ - 贝壳]
报告当前视口的位置。 如果 --shell 给出,输出是友好的
外壳评估。
在某些窗口管理器上,有时会使用视口而不是“虚拟桌面”。 一种
视口只是一个非常大的桌面区域上的视图。
设置桌面视口 x y
将视口移动到给定位置。 并非所有请求都会得到满足 - 有些
窗口管理器只服从与工作区边界对齐的请求,例如
屏幕尺寸。
例如,如果您的屏幕是 1280x800,您可以通过执行以下操作移动到第二个工作区:
xdotool set_desktop_viewport 1280 0
设置桌面 [选项] 桌面号码
将当前视图更改为指定的桌面。
- 相对的
使用相对运动而不是绝对运动。 这使您可以相对于
当前桌面。
获取桌面
在视图中输出当前桌面。
设置窗口的桌面 [窗户] 桌面号码
将窗口移动到不同的桌面。 如果没有给出窗口,%1 是默认值。 看
“WINDOW STACK”和“COMMAND CHAINING”了解更多详情。
获取桌面for_window [窗户]
输出当前包含给定窗口的桌面。 将窗口移动到另一个
桌面。 如果没有给出窗口,%1 是默认值。 请参阅窗口堆栈和“命令
链”了解更多详情。
其他条款 指令
EXEC [选项] 命令 [...]
执行一个程序。 这在与behave_screen_edge 结合使用时通常很有用
诸如锁定屏幕之类的事情。
选项:
- 同步
阻塞直到子进程退出。 然后传递子进程退出状态
到复制它的父进程(xdotool)。
例子:
# 当鼠标位于右上角时锁定屏幕
xdotool behavior_screen_edge --delay 1000 右上角
执行 gnome-screensaver-command --lock
# 如果您使用该程序,请替换为 'xscreensaver-command -lock'。
# 以下将无法移动鼠标,因为我们使用了 '--sync' 和
# /斌/假 退出非零:
xdotool 执行 --sync /斌/假 鼠标移动 0 0
# 不过,这成功了,因为我们没有在 exec 命令上使用 --sync。
xdotool 执行器 /斌/假 鼠标移动 0 0
睡觉 秒
睡眠指定的时间。 秒的分数(如 1.3 或 0.4)在这里是有效的。
脚本
如果需要,xdotool 可以通过标准输入或文件读取命令列表。 脚本将失败
当任何命令失败时。
说实话,“脚本”模式并没有完全充实,可能会低于您的预期。 如果
您有建议,请通过电子邮件发送列表或提交错误(请参阅联系)。
脚本可以使用位置参数(由 $1, $2, ... 表示)和环境
变量(如 $HOME 或 $WINDOWID)。 引用参数应该按预期工作。
脚本被处理以进行参数和环境变量扩展,然后像这样运行
您已经在一行(使用 COMMAND CHAINING)上调用了包含整个脚本的 xdotool。
· 从文件中读取命令:
xdotool 文件名
· 从标准输入读取命令:
xdotool-
· 从重定向文件中读取命令
xdotool - < 我的文件
您还可以编写仅执行 xdotool 的脚本。 例子:
#!/usr/local/bin/xdotool
搜索 --onlyvisible --classname $1
窗口大小 %@ $2 $3
开窗 %@
窗口移动 %1 0 0
窗口移动 %2 $2 0
窗口移动 %3 0 $3
窗口移动 %4 $2 $3
此脚本将获取与 arg1 ($1) 给出的类名查询匹配的所有窗口,并且
大小/将它们移动到 2x2 网格中,窗口大小由第二个和第三个参数决定。
这是一个示例用法:
% ./myscript xterm 600 400
像这样运行它将需要 4 个可见的 xterm,将它们抬起,然后将它们移动到一个 2x2 的图块中
每个窗口大小为 600x400 像素的网格。
清除修饰符
任何命令采取 --清除修饰符 标志将尝试清除任何活动输入
命令期间的修饰符并在之后恢复它们。
例如,如果您要运行此命令:
xdotool 键 a
结果将是 'a' 或 'A' 取决于您是否按住 shift 键
在你的键盘上。 通常不希望激活任何修饰符,因此您可以判断
xdotool 清除任何活动的修饰符。
如果在运行 'xdotool key --clearmodifiers a' 时按住 shift 的操作顺序
这是:
1. 查询所有活动修饰符(在本例中找到 shift)
2. 尝试通过为 shift 键发送“key up”来清除 shift
3. 运行正常的'xdotool key a'
4.通过发送'key down'来恢复shift键
干燥 --清除修饰符 flag 目前可以清除以下内容:
· 活动键盘映射中的任何键都有与之关联的修饰符。 (看
xmodmap(1) 的 'xmodmap -pm' 输出)
· 鼠标按钮(1、2、3、4 和 5)
· 大写锁定
发送事件 附注
如果您尝试将键输入发送到特定窗口,并且它似乎不是
工作,那么很可能您的应用程序忽略了 xdotool 正在生成的事件。
这是相当普遍的。
将击键发送到特定窗口使用不同的 API,而不是简单地键入
活动窗口。 如果你指定 'xdotool type --window 12345 hello' xdotool 将生成
键事件并将它们直接发送到窗口 12345。但是,X11 服务器将设置一个
以这种方式生成的所有事件的特殊标志(请参阅 X11 中的 XEvent.xany.send_event
手动的)。 许多程序观察这个标志并拒绝这些事件。
需要注意的是,对于键和鼠标事件,我们只在以下情况下使用 XSendEvent
特定窗口是目标。 否则,我们使用 XTEST。
某些程序可以配置为接受事件,即使它们是由 xdotool 生成的。
寻求您的应用程序的文档以获得帮助。
具体应用笔记(来自作者的测试): * Firefox 3 似乎忽略了所有
没有焦点时输入。 * xterm 可以在运行时配置
ctrl+leftclick, 'Allow SendEvents' * gnome-terminal 似乎接受生成的输入
默认。
窗口 STACK
某些命令(search、getactivewindow、getwindowfocus)会为您找到窗口。
这些结果通常打印到标准输出,但它们也会保存到内存中以备将来使用
在 xdotool 进程的生命周期内使用。 更多信息请参见“命令链”
信息。
对窗口堆栈的唯一修改支持是替换它。 也就是说,两个中的两个
顺序搜索,只有最后一个的结果将是窗口堆栈。
指挥 链式
xdotool 支持在一次调用中运行多个命令。 一般来说,你会开始
使用搜索命令(请参阅“WINDOW STACK”),然后对这些命令执行一组操作
结果。
要查询窗口堆栈,您可以使用特殊符号“%N”,其中 N 是数字或
'@' 象征。 如果给定 %N,将从窗口堆栈中选择第 N 个窗口。
通常,您只需要第一个窗口或所有窗口。 注意顺序
窗口堆栈中的窗口对应窗口的堆栈顺序,即最底部
将首先报告窗口(请参阅 查询树(3))。 因此,窗口中的顺序
窗口堆栈在调用之间可能不一致。
上述符号用作任何给定命令的“窗口”参数。
例如,要将所有 xterm 的大小调整为 80x24:
xdotool 搜索 --class xterm -- 窗口大小 --usehints %@ 80 24
调整大小移动当前窗口:
xdotool getactivewindow 窗口移动 0 0
在所有情况下,默认窗口参数(如果省略)将默认为“%1”。 这是
如果省略 window 参数并且窗口堆栈为空,则显然是一个错误。 如果你
尝试使用窗口堆栈,它是空的,也是一个错误。
要激活找到的第一个 Firefox 窗口:
xdotool 搜索 --class firefox windowactivate
这些会出错:
xdotool 窗口激活
xdotool 窗口激活 %1
xdotool 窗口激活 %@
当 xdotool 退出时,当前窗口堆栈丢失。
另外,修改“WINDOW STACK”的命令将不会打印结果,如果它们
不是最后一个命令。 例如:
# 输出活动窗口:
% xdotool 获取活动窗口
20971533
# 输出活动窗口的pid,但不输出活动窗口id:
% xdotool getactivewindow getwindowpid
4686
EXTENDED 窗口 经理 HINTS
支持以下 EWMH 标准:
_NET_支持
询问窗口管理器支持什么
_NET_CURRENT_DESKTOP
查询和设置当前桌面。 对此的支持启用这些命令:
“set_desktop”、“get_desktop”。
_NET_WM_DESKTOP
查询和设置窗口所在的桌面。对此的支持使这些
命令:“set_desktop_for_window”、“get_desktop_for_window”。
_NET_ACTIVE_WINDOW
允许您通过要求窗口管理器将其带入来查询和设置活动窗口
向前。 对此的支持启用以下命令:“windowactivate”、“getactivewindow”。
_NET_WM_PID
此功能依赖于应用程序,而不依赖于窗口管理器。 查询PID
拥有给定的窗口。 对此的支持启用以下命令:“getwindowpid”。
支持的 功能
xdotool(和 libxdo)将尝试在所有情况下运行。 然而,可能有
在某些情况下,您的 X 服务器或窗口管理器不提供功能。
在这些情况下,xdotool 会尝试检测并告诉您某个操作是否需要某个功能
您的系统当前不支持。
有关窗口管理器的特定功能,请参阅“扩展窗口管理器提示”。
测试
如果您的 X 服务器不支持 XTEST,那么一些打字和鼠标移动功能
可能不起作用。 具体来说,作用于“当前窗口”的键入和鼠标操作
(libxdo 中的窗口 0)不太可能工作。
在大多数情况下,如果未启用 XTEST,您可以在 X 服务器上启用它
默认情况下。
您可以通过键入“xdpyinfo”并查看支持的 X 扩展列表来查看
文本'扩展数量:...'
使用 onworks.net 服务在线使用 xdotool