Skip to main content

gled_model/input/
event.rs

1use super::key_code::KeyCode;
2use serde::{Deserialize, Serialize};
3use strum::Display;
4
5#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
6pub enum InputEvent {
7    Key(KeyCode),
8    Gamepad(GamepadEvent),
9    Artnet(u16),
10}
11
12impl std::fmt::Display for InputEvent {
13    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14        f.write_str(&match self {
15            InputEvent::Key(key) => format!("Key: {key:?}"),
16            InputEvent::Gamepad(event) => format!("Gamepad: {event}"),
17            InputEvent::Artnet(channel) => format!("Artnet: {channel}"),
18        })
19    }
20}
21
22#[derive(
23    Serialize, Deserialize, Display, Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord,
24)]
25pub enum GamepadEvent {
26    South(usize),
27    East(usize),
28    North(usize),
29    West(usize),
30    C(usize),
31    Z(usize),
32    LeftTrigger(usize),
33    LeftTrigger2(usize),
34    RightTrigger(usize),
35    RightTrigger2(usize),
36    Select(usize),
37    Start(usize),
38    Mode(usize),
39    LeftThumb(usize),
40    RightThumb(usize),
41    DPadUp(usize),
42    DPadDown(usize),
43    DPadLeft(usize),
44    DPadRight(usize),
45    Unknown(usize),
46    LeftStickXMin(usize),
47    LeftStickXMax(usize),
48    LeftStickYMin(usize),
49    LeftStickYMax(usize),
50    LeftZMin(usize),
51    LeftZMax(usize),
52    RightStickXMin(usize),
53    RightStickXMax(usize),
54    RightStickYMin(usize),
55    RightStickYMax(usize),
56    RightZMin(usize),
57    RightZMax(usize),
58    DPadXMin(usize),
59    DPadXMax(usize),
60    DPadYMin(usize),
61    DPadYMax(usize),
62}