* Prototype support for virtual uinput devices
* Tidy uinput a bit
* Have all the evtest examples use the same args/prompt code
* Switch to libc uinput* structs
* Use InputId in uinput, use libc _CNT constants
* Don't use align_to_mut
* Only check /dev/input/eventN files
* Spelling fixup
* Fix compilation error
* Ah, there we go. Much better.
Co-authored-by: Jeff Hiner <jeff-hiner@users.noreply.github.com>
Co-authored-by: Noah <33094578+coolreader18@users.noreply.github.com>
* Default impl should block. Renaming it to avoid API confusion from previous users.
* Can't get rid of libc::read because we have MaybeUninit, but we can clean up the match
* Remove extra include
* Switch everything over to io::Error
* Add initial tokio impl+example
* Move evtest_tokio to normal example
* Add documentation and clarify
* Use a VecDeque (ring buffer) instead of repeatedly popping things off the front of a Vec
* Looks like we are not using thiserror anymore; removing
* Store read buf between calls
* Add nonblocking example with epoll
Co-authored-by: Jeff Hiner <jeff-hiner@users.noreply.github.com>
Co-authored-by: Noah <33094578+coolreader18@users.noreply.github.com>
* Replace bitflags with newtypes
* Don't reexport from libc
* Add a wrapper for event_info
* Hide EvdevEnum
* Make the AttributeSet API more setlike
* Move AttributeSet to its own module
* Add some doc, tidy APIs
* Use typed ioctl calls
* Make enumerate() return an iterator instead of a vec
* Fix(?) events() behavior
* read() into a buf of mem::MaybeUninit
* Add Device.wait_ready()
* impl AsRawFd for Device
* Add remaining ioctls
* Make Key a simple u32 code for future-proofing
* Move MAX for bitflags into associated constants; fix Display, tweak compensation logic
* derive Debug for Device, move constants into constants.rs
* Add docstrings and seatbelts to eviocgbit and eviocgabs
* Increase formality per #243
* Make Device optional fields Option, address unclear naming
* Fix warnings and remove unsafe code
* Eliminate duplicate structs already in libc; fix incorrect eviocgbit lengths, remove transmute
* Avoid hiding unsafe behind macros; use File rather than libc::open
* Change signatures of eviocgbit and eviocgabs to take slices; use align_to_mut to more safely cast slices
* Replace do_ioctl_buf! with wrapper fn
* Add a sanity check for align_to_mut
* Fix incorrect slice casts, add debug asserts for sanity
* Bump revision
The dev before me left a comment on handling that
later. Not sure if there is any special case that
needed to be implemented which I now completly
ignored.