pub trait InputDevice:
Any
+ Send
+ Sync {
// Required methods
fn name(&self) -> &str;
fn process(&mut self);
fn query_axis(&self, name: &str) -> Option<Scalar>;
fn query_trigger(&self, name: &str) -> Option<bool>;
fn as_any(&self) -> &dyn Any;
// Provided methods
fn on_register(&mut self) { ... }
fn on_unregister(&mut self) { ... }
}