#keyboard #keyboard-events #input-event #mouse-event #keystroke #key

simulate

此包允许您通过代码模拟按键操作

4 个版本 (2 个重大更改)

0.3.0 2020 年 12 月 7 日
0.2.1 2020 年 9 月 15 日
0.2.0 2020 年 8 月 26 日
0.1.3 2020 年 8 月 25 日

#132模拟

MIT 许可证

33KB
792

simulate 允许您通过代码模拟输入事件(如键盘按键或鼠标移动)。

进度

目前只支持 Windows。

示例

simulate 可用于模拟键盘按键

use simulate;
use simulate::Key;

// Release a key
simulate::press(Key::Shift).unwrap();

// Send a key (press + release)
simulate::send(Key::H).unwrap();

// Release a key
simulate::release(Key::Shift).unwrap();

// Send a single character
simulate::send('').unwrap();

// Type a string
simulate::type_str("Hello, world!").unwrap();

它还可以模拟鼠标事件

use simulate::{self, Key};

// Mouse buttons are treated as keys
simulate::send(Key::MouseLeft).unwrap();

// Move the mouse 100 pixels  left, 50 pixels down
simulate::move_mouse_relative(100, 50).unwrap();

// Move the mouse at the center of the screen.
simulate::move_mouse_absolute(0.5, 0.5).unwrap();

// Rotate the mouse wheel forward
simulate::scroll(1.0).unwrap();

// Rotate the mouse wheel to the left
simulate::scroll_horizontal(-1.0).unwrap();

可以使用 EventBuffer 结构来缓冲事件

use simulate::{self, Key, EventBuffer};

// This is really just a Vec<simulate::Event>
let mut buffer = EventBuffer::new();

buffer.press(Key::Shift);
buffer.send(Key::A);
buffer.send(Key::B);
buffer.release(Key::Shift);

buffer.move_mouse_relative(10, 0);
buffer.send(Key::MouseLeft);

buffer.simulate().unwrap();

可以直接使用 Event 结构来创建事件

use simulate::{self, Event};

let my_event = Event::MoveMouseAbsolute {
    x: 0.5,
    y: 0.25,
    map_to_virtual_desktop: true,
};

// Send a single event
simulate::send_event(my_event).unwrap();

依赖项

~185KB