Crate inputbot

source ·
Expand description

Cross-platform (Windows & Linux) library for simulating keyboard/mouse input events and registering global input device event handlers.

Allows writing automation programs that collapse long action-sequences into single key-presses.


inputbot = "0.6"
use inputbot::{KeySequence, KeybdKey::*, MouseButton::*};
use std::{thread::sleep, time::Duration};

fn main() {
    // Bind the number 1 key your keyboard to a function that types 
    // "Hello, world!" when pressed.
    Numrow1Key.bind(|| KeySequence("Hello, world!").send());

    // Bind your caps lock key to a function that starts an autoclicker.
    CapsLockKey.bind(move || {
        while CapsLockKey.is_toggled() {


    // Call this to start listening for bound inputs.

NOTE: The README and examples are based off the develop branch of InputBot. If a feature is not working, you are probably using the version from If you want to use the latest build, add this to your Cargo.toml:

inputbot = { git = "", branch = "develop" }

Check out examples for comprehensive examples on how to use each feature.

Build Dependencies

Debian or Ubuntu based distros

  • libx11-dev
  • libxtst-dev
  • libudev-dev
  • libinput-dev

Note: libinput requires InputBot to be run with sudo on Linux - sudo ./target/debug/<program name>.


You can run the included examples by cloning the library and running cargo run --example <example name>. Similar to the note above, on Linux you have to run cargo build --examples && sudo ./target/debug/<example name>.

This is especially useful for testing the library when contributing.