vuinputd/uinput-ioctls
2025-10-31 19:58:53 +00:00
..
src Initial commit 2025-10-23 22:34:33 +00:00
Cargo.toml Updated documentation for release readiness 2025-10-31 19:58:53 +00:00
README.md Updated documentation for release readiness 2025-10-31 19:58:53 +00:00

uinput-ioctls

uinput-ioctls provides Rust bindings and constants for the Linux uinput subsystem's ioctl interface.

It exposes ioctl_* helper functions and constants based on the Linux kernel's uinput.h, allowing you to interact with virtual input devices (keyboards, mice, gamepads, etc.) through Rust in a low-level but type-safe way.

This crate does not attempt to abstract or validate ioctl usage; it only provides constants and wrappers. Higher-level logic (such as event management or device configuration) should be built on top.


Features

  • Idiomatic Rust wrappers around uinput ioctl definitions.
  • Uses the nix crate for safe ioctl macros.
  • Includes all UI_* constants and corresponding helper functions:
    • ui_dev_create, ui_dev_destroy
    • ui_dev_setup, ui_abs_setup
    • ui_set_evbit, ui_set_keybit, ...
    • ui_begin_ff_upload, ui_end_ff_upload, etc.

🧰 Example

Mouse example

Keyboard example

⚠️ Requires Linux and appropriate permissions to access /dev/uinput.


  • uinput: High-level abstraction for creating virtual input devices.
  • nix: Provides low-level Unix system call wrappers and ioctl macros.

📜 License

Licensed under the MIT License.


👤 Author

Johannes Leupolz dev@leupolz.eu