Crate evdev_shortcut
source ·Expand description
Global keyboard shortcuts using evdev.
By connecting to the input devices directly with evdev the shortcuts can work regardless of the environment, they will work under X11, wayland and in the terminal.
This does come at the cost of having to run the program with elevated permissions. See shortcutd for a solution to running the elevated input handling in a separate process.
Example:
let listener = ShortcutListener::new();
listener.add(Shortcut::new(&[Modifier::Meta], Key::KeyN));
let devices =
glob::glob("/dev/input/by-id/*-kbd")?.collect::<Result<Vec<PathBuf>, GlobError>>()?;
let stream = listener.listen(&devices)?;
pin!(stream);
while let Some(event) = stream.next().await {
println!("{} {}", event.shortcut, event.state);
}
Structs
- Error emitted when an input device can’t be opened
- Set of modifier keys for shortcuts
- A keyboard shortcut consisting of zero or more modifier keys and a non-modifier key
- Event emitted when a shortcut is pressed or released.
- A listener for shortcut events
Enums
- evdev keycode
- Modifier key for shortcuts
- Whether the shortcut was pressed or released