Crates.io | southpaw |
lib.rs | southpaw |
version | 0.1.0 |
source | src |
created_at | 2024-09-08 13:21:30.089406 |
updated_at | 2024-09-08 13:21:30.089406 |
description | Allows userspace emulation of evdev character devices. |
homepage | |
repository | |
max_upload_size | |
id | 1368086 |
size | 99,546 |
This is a crate that lets you emulate linux evdev character devices completely in userspace, using FUSE.
Linux has good support for emulating input devices, with uinput. However, it suffers from a few drawbacks:
Because FUSE mounts can be used inside mount namespaces, southpaw lets you simulate input devices in rootless containers, without even needing root inside the container.
The following ioctls are currently implemented:
Ioctl | Support |
---|---|
EVIOCGVERSION | ✅ |
EVIOCGID | ✅ |
EVIOCGREP | ❌ |
EVIOCSREP | ❌ |
EVIOCGKEYCODE | ❌ |
EVIOCGKEYCODE_V2 | ❌ |
EVIOCSKEYCODE | ❌ |
EVIOCSKEYCODE_V2 | ❌ |
EVIOCGNAME | ✅ |
EVIOCGPHYS | ❌ |
EVIOCGUNIQ | ❌ |
EVIOCGPROP | ✅ |
EVIOCGMTSLOTS | ❌ |
EVIOCGKEY | ❌ |
EVIOCGLED | ❌ |
EVIOCGSND | ❌ |
EVIOCGSW | ❌ |
EVIOCGBIT | ✅ |
EVIOCGABS | ❌ |
EVIOCSABS | ❌ |
EVIOCSFF | ❌ |
EVIOCGRMFF | ❌ |
EVIOCGEFFECTS | ❌ |
EVIOCGRAB | ✅ |
EVIOCREVOKE | ❌ |
EVIOCGMASK | ❌ |
EVIOCSMASK | ❌ |
EVIOCSCLOCKID | ❌ |
EVIOCGVERSION | ❌ |
EVIOCGVERSION | ❌ |
Basic reading and publishing events is supported, both for blocking and non-blocking readers. Force feedback is not supported yet.