use crate::platform;
macro_rules! virtual_keys {
{$($variant:ident),* $(,)?} => {
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone)]
pub enum VirtualKey {
$($variant = platform::VirtualKeyConstants::$variant),*
}
#[allow(non_upper_case_globals)]
pub(crate) trait PlatformVirtualKeyConstants {
$(const $variant: u32;)*
}
};
}
virtual_keys! {
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
_0,
_1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
Plus,
Minus,
LeftBracket,
RightBracket,
Slash,
Backslash,
Semicolon,
Apostrophe,
Comma,
Period,
Grave,
Numpad0,
Numpad1,
Numpad2,
Numpad3,
Numpad4,
Numpad5,
Numpad6,
Numpad7,
Numpad8,
Numpad9,
NumpadDecimal,
NumpadAdd,
NumpadSubtract,
NumpadMultiply,
NumpadDivide,
NumpadEnter,
LeftArrow,
UpArrow,
RightArrow,
DownArrow,
Insert,
Delete,
Home,
End,
PageUp,
PageDown,
Space,
Backspace,
Tab,
Enter,
Escape,
Pause,
PrintScreen,
F1,
F2,
F3,
F4,
F5,
F6,
F7,
F8,
F9,
F10,
F11,
F12,
F13,
F14,
F15,
F16,
F17,
F18,
F19,
F20,
F21,
F22,
F23,
F24,
CapsLock,
NumLock,
ScrollLock,
LeftShift,
RightShift,
LeftControl,
RightControl,
LeftAlt,
RightAlt,
LeftSuper,
RightSuper,
Menu,
VolumeUp,
VolumeDown,
VolumeMute,
MediaPlay,
MediaStop,
MediaPrev,
MediaNext,
}
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum KeyState {
Release = 0,
Press = 1,
Repeat = 2,
}
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum MouseButton {
Left,
Right,
Middle,
Button4,
Button5,
Button6,
Button7,
Button8,
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum ButtonState {
Release = 0,
Press = 1,
}