gled_model/input/
event.rs1use 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}