use crate::Vec2;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct PointerId(pub u64);
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PointerKind {
Mouse,
Touch,
Pen,
}
#[derive(Clone, Copy, Debug)]
pub enum PointerButton {
Primary, Secondary, Tertiary, }
#[derive(Clone, Copy, Debug)]
pub enum PointerEventKind {
Down(PointerButton),
Up(PointerButton),
Move,
Cancel,
Enter,
Leave,
}
#[derive(Clone, Debug)]
pub struct PointerEvent {
pub id: PointerId,
pub kind: PointerKind,
pub event: PointerEventKind,
pub position: Vec2,
pub pressure: f32,
pub modifiers: Modifiers,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct Modifiers {
pub shift: bool,
pub ctrl: bool,
pub alt: bool,
pub meta: bool, pub command: bool, }
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum Key {
Character(char),
Enter,
Tab,
Backspace,
Delete,
Escape,
ArrowLeft,
ArrowRight,
ArrowUp,
ArrowDown,
Home,
End,
PageUp,
PageDown,
Space,
F(u8), Unknown,
}
#[derive(Clone, Debug)]
pub struct KeyEvent {
pub key: Key,
pub modifiers: Modifiers,
pub is_repeat: bool,
}
#[derive(Clone, Debug)]
pub struct TextInputEvent {
pub text: String,
}
#[derive(Clone, Debug)]
pub enum ImeEvent {
Start,
Update {
text: String,
cursor: Option<(usize, usize)>, },
Commit(String),
Cancel,
}
#[derive(Clone, Debug)]
pub enum InputEvent {
Pointer(PointerEvent),
Key(KeyEvent),
Text(TextInputEvent),
Ime(ImeEvent),
}