#mouse-input #hotkey #keyboard #mouse #api-bindings

hookmap

Registers hotkeys and simulates keyboard and mouse input

17 releases

0.5.1 Dec 6, 2022
0.5.0 May 13, 2022
0.4.8 Jan 2, 2022
0.4.7 Oct 11, 2021
0.1.1 Jul 31, 2021

#915 in Hardware support

MIT/Apache

105KB
2.5K SLoC

hookmap

Crates.io API reference

Register hotkeys and simulate keyboard and mosue input.

Supported OS

  • Windows 10

Example

use hookmap::prelude::*;

fn main() {
    let mut hotkey = Hotkey::new();

    // Remap H,J,K,L keys as in vim.
    hotkey
        .register(Context::default())
        .remap(Button::H, Button::LeftArrow)
        .remap(Button::J, Button::DownArrow)
        .remap(Button::K, Button::UpArrow)
        .remap(Button::L, Button::RightArrow);

    // You can define hotkeys that work only when specific keys are pressed or released.
    hotkey
        .register(
            Context::new()
                .modifiers(buttons!(LCtrl, !RShift))
                .native_event_operation(NativeEventOperation::Block),
        )
        .on_press(Button::Space, |_| {
            seq!(with(LCtrl), A).send_ignore_modifiers();
        })
        .disable(buttons!(A, B))
        .on_release(buttons!(A, B), |event: ButtonEvent| {
            seq!(with(LShift), [event.target]).send_ignore_modifiers();
        });

    hotkey.install();
}

Dependencies

~1–30MB
~380K SLoC