#mouse #input #input-event #mouse-event #keyboard #automation #keyboard-events

enigo

跨平台(Linux、Windows、macOS & BSD)库,用于模拟键盘和鼠标事件

22 个版本

0.2.1 2024年5月16日
0.2.0-rc22023年11月18日
0.1.2 2023年4月3日
0.1.1 2023年3月30日
0.0.7 2017年2月5日

#12 in 硬件支持

Download history 1447/week @ 2024-05-02 1154/week @ 2024-05-09 1466/week @ 2024-05-16 1147/week @ 2024-05-23 1194/week @ 2024-05-30 1102/week @ 2024-06-06 1247/week @ 2024-06-13 1392/week @ 2024-06-20 1136/week @ 2024-06-27 966/week @ 2024-07-04 1142/week @ 2024-07-11 1319/week @ 2024-07-18 1459/week @ 2024-07-25 1385/week @ 2024-08-01 1590/week @ 2024-08-08 1091/week @ 2024-08-15

5,704 每月下载量
45 个crates中使用(38 个直接使用)

MIT 许可证

250KB
5.5K SLoC

Build status Docs Dependency status

Rust version Crates.io

enigo

Rust中的跨平台输入模拟!

  • 序列化/反序列化
  • Linux (X11) 鼠标
  • Linux (X11) 文本
  • Linux (Wayland) 鼠标
  • Linux (Wayland) 文本
  • Linux (libei) 鼠标
  • Linux (libei) 文本
  • MacOS 鼠标
  • MacOS 文本
  • Windows 鼠标
  • Windows 文本

如果*BSD使用X11或Wayland,Enigo也可以在其上运行。我没有测试机器,也没有GitHub Action运行器,因此BSD支持没有明确列出。

let mut enigo = Enigo::new(&Settings::default()).unwrap();

enigo.move_mouse(500, 200, Abs).unwrap();
enigo.button(Button::Left, Click).unwrap();
enigo.text("Hello World! here is a lot of text  ❤️").unwrap();

更多内容,请参阅(示例)。

特性

默认情况下,Enigo目前适用于Windows、macOS和Linux(X11)。如果您想能够序列化和反序列化Enigo的命令(示例),您需要激活serde特性。

在Linux上模拟输入有多种方式,并非所有系统都支持所有功能。Enigo也可以使用wayland协议和libei来模拟输入,但其中有一些bug,因此它们被隐藏在特性标志后面。

如果您不希望您的用户在Linux上使用X11时安装任何运行时依赖项,您可以尝试实验性的x11rb特性。

运行时依赖

如果Linux用户使用X11,他们可能需要安装libxdo-dev。例如,在基于Debian的发行版上

apt-get install libxdo-dev

在Arch上

pacman -S xdotool

在Fedora上

dnf install libX11-devel libxdo-devel

在Gentoo上

emerge -a xdotool

从旧版本迁移

请查看我们的变更日志,了解如果使用过旧版本需要做什么。

权限

一些平台有安全措施,防止程序输入键或控制鼠标。查看权限文档,了解如何允许。

依赖项

~0–45MB
~734K SLoC