aboutsummaryrefslogtreecommitdiff
path: root/stockton-input/src/manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stockton-input/src/manager.rs')
-rw-r--r--stockton-input/src/manager.rs26
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,
}
}
}