1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use core::Scalar;
use std::any::Any;

pub trait InputDevice: Any + Send + Sync {
    fn name(&self) -> &str;
    fn on_register(&mut self) {}
    fn on_unregister(&mut self) {}
    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;
}