#keyboard #input-simulation #automation #mouse-input #mouse #mouse-automation

keyflow

Cross-platform input simulation library for keyboard, mouse and hotkeys

2 releases

Uses new Rust 2024

0.1.1 Mar 7, 2026
0.1.0 Mar 6, 2026

#911 in Simulation

MIT/Apache

98KB
2K SLoC

Keyflow

Crates.io Documentation

Cross-platform input simulation library for Rust. Simulate keyboard and mouse input, and register global hotkeys on Linux and Windows.

Optional Features

[dependencies]
keyflow = { version = "0.1", features = ["serde"] }
  • serde - Enable serialization/deserialization of input events

Quick Start

use keyflow::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Initialize Keyflow
    Keyflow::initialize()?;
    
    // Simulate keyboard
    Keyflow::press_key(Key::A);
    Keyflow::click_key(Key::Enter);
    
    // Simulate mouse
    Keyflow::move_to(500, 300);
    Keyflow::click_button(Button::Left);
    Keyflow::scroll_vertical(-3);
    
    Ok(())
}

Platform Requirements

Linux

Keyflow requires access to /dev/uinput for input simulation. Add your user to the input group:

sudo usermod -aG input $USER

Then log out and back in, or run your program with sudo.

Note: On Linux, the virtual device may take 1-2 seconds to be fully registered after initialization.

Windows

No special permissions required.

Examples

Full examples are available in the examples/ directory:

Dependencies

~1–31MB
~507K SLoC