1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use crate::math::prelude::Vector2;
use super::keyboard::Key;
use super::mouse::MouseButton;
use super::touchpad::TouchState;
/// Input device event, supports mouse and keyboard only.
#[derive(Debug, Clone, Copy)]
pub enum InputEvent {
/// The cursor has moved on the window.
/// The parameter are the (x, y) coords in pixels relative to the bottom-left
/// corner of th window.
MouseMoved { position: (f32, f32) },
/// Pressed event on mouse has been received.
MousePressed { button: MouseButton },
/// Released event from mouse has been received.
MouseReleased { button: MouseButton },
/// A mouse wheel movement or touchpad scroll occurred.
MouseWheel { delta: (f32, f32) },
/// Pressed event on keyboard has been received.
KeyboardPressed { key: Key },
/// Released event from keyboard has been received.
KeyboardReleased { key: Key },
/// Received a unicode character.
ReceivedCharacter { character: char },
/// Represent touch event.
///
/// Every time user touches screen new Start event with some finger id is generated. When
/// the finger is removed from the screen End event with same id is generated.
///
/// For every id there will be at least 2 events with phases Start and End (or Cancel).
/// There may be 0 or more Move events.
///
/// Depending on platform implementation id may or may not be reused by system after End event.
Touch {
id: u8,
state: TouchState,
position: Vector2<f32>,
},
}