use fission_layout::{LayoutPoint, LayoutSize};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum PointerButton {
Primary,
Secondary,
Middle,
Other(u8),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum PointerEvent {
Down {
point: LayoutPoint,
button: PointerButton,
modifiers: u8,
},
Up {
point: LayoutPoint,
button: PointerButton,
modifiers: u8,
},
Move {
point: LayoutPoint,
modifiers: u8,
},
Scroll {
point: LayoutPoint,
delta: LayoutPoint,
modifiers: u8,
},
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum KeyCode {
Space,
Enter,
Escape,
Backspace,
Delete,
Tab,
Left,
Right,
Up,
Down,
Home,
End,
PageUp,
PageDown,
Char(char),
}
pub const MOD_SHIFT: u8 = 1;
pub const MOD_ALT: u8 = 2;
pub const MOD_CTRL: u8 = 4;
pub const MOD_SUPER: u8 = 8;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum KeyEvent {
Down {
key_code: KeyCode,
modifiers: u8,
},
Up { key_code: KeyCode, modifiers: u8 },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum LifecycleEvent {
Init,
Resume,
Pause,
Terminate,
Resize { size: LayoutSize },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum GestureEvent {
Tap { point: LayoutPoint },
DoubleTap { point: LayoutPoint },
PanStart { point: LayoutPoint },
PanUpdate {
point: LayoutPoint,
delta: LayoutPoint,
},
PanEnd { point: LayoutPoint },
LongPress { point: LayoutPoint },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum InputEvent {
Pointer(PointerEvent),
Keyboard(KeyEvent),
Ime(ImeEvent),
Gesture(GestureEvent),
Lifecycle(LifecycleEvent),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ImeEvent {
Preedit { text: String },
Commit { text: String },
}