Skip to main content

interstice_abi/host_calls/input/
mod.rs

1pub mod key_code;
2
3use crate::interstice_abi_macros::IntersticeType;
4use key_code::KeyCode;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Deserialize, Serialize, IntersticeType, Clone)]
8pub enum InputEvent {
9    Added {
10        device_id: u32,
11    },
12    Removed {
13        device_id: u32,
14    },
15    MouseMotion {
16        device_id: u32,
17        delta: (f64, f64),
18    },
19    MouseWheel {
20        device_id: u32,
21        delta: (f64, f64),
22    },
23    Motion {
24        device_id: u32,
25        axis_id: u32,
26        value: f64,
27    },
28    Button {
29        device_id: u32,
30        button_id: u32,
31        state: ElementState,
32    },
33
34    Key {
35        device_id: u32,
36        physical_key: PhysicalKey,
37        state: ElementState,
38    },
39}
40
41#[derive(Debug, Deserialize, Serialize, IntersticeType, Clone)]
42pub enum ElementState {
43    Pressed,
44    Released,
45}
46
47#[derive(Debug, Deserialize, Serialize, IntersticeType, Clone)]
48pub enum PhysicalKey {
49    /// A known key code
50    Code(KeyCode),
51    /// This variant is used when the key cannot be translated to a [`KeyCode`]
52    Unidentified(u32),
53}