#mouse-event #mouse #events #listen #click #simulation #action

bin+lib mouce

一个旨在帮助在不同平台间模拟和监听鼠标动作的库

15 个版本

0.2.44 2024 年 3 月 2 日
0.2.43 2023 年 5 月 30 日
0.2.42 2023 年 4 月 6 日
0.2.41 2022 年 11 月 10 日
0.2.3 2022 年 7 月 19 日

#120 in GUI

Download history 20/week @ 2024-04-08 150/week @ 2024-04-15 140/week @ 2024-04-22 125/week @ 2024-04-29 119/week @ 2024-05-06 61/week @ 2024-05-13 39/week @ 2024-05-20 79/week @ 2024-05-27 65/week @ 2024-06-03 8/week @ 2024-06-10 23/week @ 2024-06-17 16/week @ 2024-06-24 15/week @ 2024-07-08 32/week @ 2024-07-15 51/week @ 2024-07-22

99 每月下载量
3 crates 中使用

MIT 许可证

71KB
1.5K SLoC

mouce

Mouce 是一个用 Rust 编写的库,旨在帮助在不同平台间模拟和监听鼠标动作。

支持的平台

  • Windows
    • 在 Windows 10 上进行测试
    • 使用 User32 系统库
  • MacOS
    • 在安装了 Big Sur 的 MacBook Pro (Retina, 13-inch, Mid 2014) 上进行测试
    • 使用 CoreGraphics 和 CoreFoundation 框架
  • 类 Unix 系统
    • X11
      • 在 i3wm Arch Linux 上进行测试
      • 使用 X11 和 XTest 库
    • 其他(部分支持)
      • 对于其他系统,库默认使用 uinput
      • 在使用 uinput 时,库有一些限制
        • get_position 函数未实现,因为 uinput 不提供此功能
        • 其余动作在 KDE Wayland 和 sway 上工作并经过测试

库接口

/// Move the mouse to the given `x`, `y` coordinates
fn move_to(&self, x: usize, y: usize) -> Result<(), Error>;
/// Move the mouse relative to the current position
fn move_relative(&self, x_offset: i32, y_offset: i32) -> Result<(), Error>;
/// Get the current position of the mouse
fn get_position(&self) -> Result<(i32, i32), Error>;
/// Press down the given mouse button
fn press_button(&self, button: &MouseButton) -> Result<(), Error>;
/// Release the given mouse button
fn release_button(&self, button: &MouseButton) -> Result<(), Error>;
/// Click the given mouse button
fn click_button(&self, button: &MouseButton) -> Result<(), Error>;
/// Scroll the mouse wheel towards to the given direction
fn scroll_wheel(&self, direction: &ScrollDirection) -> Result<(), Error>;
/// Attach a callback function to mouse events
fn hook(&mut self, callback: Box<dyn Fn(&MouseEvent) + Send>) -> Result<CallbackId, Error>;
/// Remove the callback function with the given `CallbackId`
fn unhook(&mut self, callback_id: CallbackId) -> Result<(), Error>;
/// Remove all callback functions
fn unhook_all(&mut self) -> Result<(), Error>;

示例

此示例程序将鼠标从左向右移动;

use std::thread;
use std::time::Duration;

use mouce::Mouse;

fn main() {
    let mouse_manager = Mouse::new();

    let mut x = 0;
    while x < 1920 {
        mouse_manager.move_to(x, 540);
        x += 1;
        thread::sleep(Duration::from_millis(2));
    }
}

要查看更多示例,您可以通过运行查看文档;

cargo doc --open

CLI 二进制文件

mouce 随附一个示例 CLI 程序,该程序使用 mouce 库函数。您可以使用以下命令安装二进制文件;

cargo install mouce --features="cli"

并使用 mouce --help 获取更多详细信息。

依赖项

~0–485KB