keyflow 0.1.0

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

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.

Hotkeys on Linux: When hotkeys are enabled, Keyflow grabs keyboard devices to detect key combinations. Do not enable hotkeys if you need to read keyboard input yourself (e.g., for key remapping applications).

Windows

No special permissions required.

Examples

Full examples are available in the examples/ directory:

Limitations

  • Linux device creation: May take 1-2 seconds for the virtual device to be fully registered
  • Hotkeys on Linux: Grabs keyboard devices, which may conflict with other input monitoring tools