diff options
Diffstat (limited to 'stockton-input/src/manager.rs')
-rw-r--r-- | stockton-input/src/manager.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/stockton-input/src/manager.rs b/stockton-input/src/manager.rs index f0786b0..663b6b8 100644 --- a/stockton-input/src/manager.rs +++ b/stockton-input/src/manager.rs @@ -23,11 +23,32 @@ pub enum InputMutation { PositiveAxis, } +#[derive(Debug, Clone, Copy)] +pub enum MouseButton { + Left, + Right, + Middle, + Other(u8) +} + +impl MouseButton { + fn keycode(&self) -> u32 { + u32::MAX - match self { + MouseButton::Left => 0, + MouseButton::Right => 1, + MouseButton::Middle => 2, + MouseButton::Other(x) => *x as u32 + } + } +} + /// A key being pressed or released #[derive(Debug, Clone, Copy)] pub enum Action { KeyPress(u32), KeyRelease(u32), + MousePress(MouseButton), + MouseRelease(MouseButton) } impl Action { @@ -35,12 +56,17 @@ impl Action { match self { Action::KeyPress(x) => *x, Action::KeyRelease(x) => *x, + Action::MousePress(x) => x.keycode(), + Action::MouseRelease(x) => x.keycode(), + } } pub fn is_down(&self) -> bool { match self { Action::KeyPress(_) => true, + Action::MousePress(_) => true, Action::KeyRelease(_) => false, + Action::MouseRelease(_) => false, } } } |