#[cfg(feature = "serialize")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub enum MouseButton {
Left,
Right,
Middle,
Back,
Forward,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub struct Point {
pub x: i32,
pub y: i32,
}
#[derive(Debug, Copy, Clone, PartialEq)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub struct FloatPoint {
pub x: f64,
pub y: f64,
}
#[cfg(not(target_os = "macos"))]
pub type KeyCode = u32;
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub enum RawKey {
ScanCode(KeyCode),
WinVirtualKeycode(KeyCode),
LinuxXorgKeycode(KeyCode),
LinuxConsoleKeycode(KeyCode),
MacVirtualKeycode(KeyCode),
}
#[rustfmt::skip]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub enum Key {
Alt,
AltGr,
Backspace,
CapsLock,
ControlLeft,
ControlRight,
Delete,
DownArrow,
End,
Escape,
F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
Home,
LeftArrow,
MetaLeft,
MetaRight,
PageDown,
PageUp,
Return,
RightArrow,
ShiftLeft,
ShiftRight,
Space,
Tab,
UpArrow,
PrintScreen,
ScrollLock,
Pause,
NumLock,
BackQuote,
Num0, Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9,
Minus,
Equal,
KeyQ, KeyW, KeyE, KeyR, KeyT, KeyY, KeyU, KeyI, KeyO, KeyP,
LeftBracket,
RightBracket,
KeyA, KeyS, KeyD, KeyF, KeyG, KeyH, KeyJ, KeyK, KeyL,
SemiColon,
Quote,
BackSlash,
IntlBackslash,
IntlRo, IntlYen, KanaMode, KeyZ, KeyX, KeyC, KeyV, KeyB, KeyN, KeyM,
Comma,
Dot,
Slash,
Insert,
KpReturn,
KpMinus,
KpPlus,
KpMultiply,
KpDivide,
KpDecimal,
KpEqual,
KpComma,
Kp0, Kp1, Kp2, Kp3, Kp4, Kp5, Kp6, Kp7, Kp8, Kp9,
VolumeUp,
VolumeDown,
VolumeMute,
Lang1, Lang2, Lang3, Lang4, Lang5, Function,
Apps,
Cancel,
Clear,
Kana,
Hangul,
Junja,
Final,
Hanja,
Hanji,
Print,
Select,
Execute,
Help,
Sleep,
Separator,
Unknown(u32),
RawKey(RawKey),
}
#[derive(Debug, Copy, Clone, PartialEq)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub enum Event {
MouseMove { delta: Point },
MouseWheel { delta: FloatPoint },
MouseDown { button: MouseButton },
MouseUp { button: MouseButton },
KeyDown { key: Key },
KeyUp { key: Key },
}