All the functions in this crate have identical functionality to the underlying libspnav library, with the key change being the use of a Rust enum to represent the events returned by wait_event() safely.
libspnav
wait_event()