展开描述
Enigo 可以让你模拟鼠标和键盘输入事件,效果如同真实硬件产生的事件。它支持 Linux (X11)、macOS 和 Windows。
它可以用于跨平台测试用户界面、构建远程控制应用,或自动化那些没有公开 API 或脚本语言无法访问的用户界面任务。
本库尚处于早期 alpha 状态,API 在未来可能会发生变化。
要使用本库,你只需要了解三件事:
Keyboard(trait):用于模拟按键点击、输入文本或类似操作Mouse(trait):用于操作鼠标或获取显示屏尺寸Enigo(结构体):实现了上述两个 traitKeyboardandMouse
本 crate 此前包含一个简单的 DSL,但现已移除。 为了简化代码并支持对象序列化,你现在可以对本 crate 中的大多数枚举和结构体进行序列化和反序列化,以替代原来的 DSL。 该功能通过 serde 特性启用。可以查看 serde 示例了解如何使用它以 RON 格式序列化 Token。
§示例
use enigo::{
Button, Coordinate,
Direction::{Click, Press, Release},
Enigo, Key, Keyboard, Mouse, Settings,
};
let mut enigo = Enigo::new(&Settings::default()).unwrap();
// 粘贴
enigo.key(Key::Control, Press);
enigo.key(Key::Unicode('v'), Click);
enigo.key(Key::Control, Release);
// 操作鼠标
enigo.move_mouse(500, 200, Coordinate::Abs);
enigo.button(Button::Left, Press);
enigo.move_mouse(100, 100, Coordinate::Rel);
enigo.button(Button::Left, Release);
// 输入文本
enigo.text("hello world");模块§
- agent
- 本 crate 包含
crate::agent::Token枚举和crate::agent::Agenttrait。Token 是用于让Enigo结构体执行某些操作的指令。如果希望 Enigo 模拟输入,则需要让 enigo 结构体crate::agent::Agent::execute该 token。如果想阅读相关代码,可以查看serde示例了解其工作原理。
结构体§
枚举§
- Axis
- 指定滚动的轴
- Button
- 表示鼠标按键,用于例如
Mouse::button。 - Coordinate
- 指定坐标是相对坐标还是绝对坐标
- Direction
- 按键或按钮的方向
- Input
Error - 模拟输入时的错误
- Key
- 包含所有可用的按键码。
使用
Key::Unicode输入任意 Unicode 字符。 如果缺少某个按键,请在我们的仓库中提交 issue,我们会尽快添加。同时,你可以通过Key::Othercrate::Keyboard::raw函数模拟该按键。某些按键仅在特定平台上可用,请使用条件编译来使用它们。 - NewCon
Error - 建立新连接时的错误
常量§
- EVENT_
MARKER - 用于区分由 enigo 创建的事件的任意值
- EXT
trait§
- Keyboard
- 包含模拟按键按下/释放和输入文本的函数。
- Mouse
- 包含控制鼠标和获取显示屏尺寸的函数。 Enigo 使用笛卡尔坐标系来指定坐标。该坐标系的原点位于当前屏幕的左上角,正值沿坐标轴向下和向右延伸,单位为像素。所有操作系统均使用相同的坐标系。
函数§
- set_
dpi_ awareness - 将当前进程设置为指定的每英寸点数 (dpi) 感知上下文 参见官方文档 如果希望应用程序遵循用户的缩放比例,则需要设置此项。否则鼠标坐标和屏幕尺寸将不准确。