#input-event #keyboard-input #input #mouse #hotkey #keyboard #event-handling

inputbot

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

13 releases

0.6.0 Aug 17, 2023
0.5.1 Sep 5, 2021
0.5.0 Aug 30, 2020
0.4.0 Dec 23, 2017
0.1.2 Jun 19, 2017

#445 in Hardware support

Download history 200/week @ 2024-06-14 249/week @ 2024-06-21 124/week @ 2024-06-28 110/week @ 2024-07-05 161/week @ 2024-07-12 188/week @ 2024-07-19 298/week @ 2024-07-26 213/week @ 2024-08-02 219/week @ 2024-08-09 186/week @ 2024-08-16 158/week @ 2024-08-23 217/week @ 2024-08-30 221/week @ 2024-09-06 207/week @ 2024-09-13 247/week @ 2024-09-20 192/week @ 2024-09-27

895 downloads per month
Used in 6 crates

MIT license

59KB
1.5K SLoC

InputBot docs link crates.io version

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.

Usage

[dependencies]
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() {
            LeftButton.press();
            LeftButton.release();

            sleep(Duration::from_millis(30));
        }
    });

    // Call this to start listening for bound inputs.
    inputbot::handle_input_events();
}

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 crates.io. If you want to use the latest build, add this to your Cargo.toml:

[dependencies]
inputbot = { git = "https://github.com/obv-mikhail/InputBot", 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>.

Examples

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.

Dependencies

~0.3–1.8MB
~33K SLoC