aboutsummaryrefslogtreecommitdiff
path: root/stockton-input
diff options
context:
space:
mode:
Diffstat (limited to 'stockton-input')
-rw-r--r--stockton-input/Cargo.toml3
-rw-r--r--stockton-input/src/manager.rs26
2 files changed, 28 insertions, 1 deletions
diff --git a/stockton-input/Cargo.toml b/stockton-input/Cargo.toml
index fa6507f..57ea6e1 100644
--- a/stockton-input/Cargo.toml
+++ b/stockton-input/Cargo.toml
@@ -5,4 +5,5 @@ authors = ["Oscar Shrimpton <oscar.shrimpton.personal@gmail.com>"]
edition = "2018"
[dependencies]
-stockton-types = { path = "../stockton-types" } \ No newline at end of file
+stockton-types = { path = "../stockton-types" }
+egui = "^0.2"
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,
}
}
}