use crate::*;
pub fn mouse_wheel() -> (f32, f32) {
GLOBAL_STATE.borrow().mouse_wheel
}
pub fn is_mouse_button_down(button: MouseButton) -> bool {
GLOBAL_STATE.borrow().mouse_pressed.contains(&button)
}
pub fn is_mouse_button_pressed(button: MouseButton) -> bool {
GLOBAL_STATE.borrow().mouse_just_pressed.contains(&button)
}
pub fn is_mouse_button_released(button: MouseButton) -> bool {
GLOBAL_STATE.borrow().mouse_just_released.contains(&button)
}
pub fn is_key_pressed(keycode: KeyCode) -> bool {
GLOBAL_STATE.borrow().just_pressed.contains(&keycode)
}
pub fn is_key_released(keycode: KeyCode) -> bool {
GLOBAL_STATE.borrow().just_released.contains(&keycode)
}
pub fn is_key_down(keycode: KeyCode) -> bool {
GLOBAL_STATE.borrow().pressed.contains(&keycode)
}
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
pub enum MouseButton {
Left,
Right,
Middle,
Other(u16),
}
#[allow(dead_code)]
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum KeyCode {
Backspace,
Tab,
Return,
Escape,
Space,
Exclaim,
Quotedbl,
Hash,
Dollar,
Percent,
Ampersand,
Quote,
LeftParen,
RightParen,
Asterisk,
Plus,
Comma,
Minus,
Period,
Slash,
Num0,
Num1,
Num2,
Num3,
Num4,
Num5,
Num6,
Num7,
Num8,
Num9,
Colon,
Semicolon,
Less,
Equals,
Greater,
Question,
At,
LeftBracket,
Backslash,
RightBracket,
Caret,
Underscore,
Backquote,
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,
Delete,
CapsLock,
F1,
F2,
F3,
F4,
F5,
F6,
F7,
F8,
F9,
F10,
F11,
F12,
PrintScreen,
ScrollLock,
Pause,
Insert,
Home,
PageUp,
End,
PageDown,
Right,
Left,
Down,
Up,
NumLockClear,
KpDivide,
KpMultiply,
KpMinus,
KpPlus,
KpEnter,
Kp1,
Kp2,
Kp3,
Kp4,
Kp5,
Kp6,
Kp7,
Kp8,
Kp9,
Kp0,
KpPeriod,
Application,
Power,
KpEquals,
F13,
F14,
F15,
F16,
F17,
F18,
F19,
F20,
F21,
F22,
F23,
F24,
Execute,
Help,
Menu,
Select,
Stop,
Again,
Undo,
Cut,
Copy,
Paste,
Find,
Mute,
VolumeUp,
VolumeDown,
KpComma,
KpEqualsAS400,
AltErase,
Sysreq,
Cancel,
Clear,
Prior,
Return2,
Separator,
Out,
Oper,
ClearAgain,
CrSel,
ExSel,
Kp00,
Kp000,
ThousandsSeparator,
DecimalSeparator,
CurrencyUnit,
CurrencySubUnit,
KpLeftParen,
KpRightParen,
KpLeftBrace,
KpRightBrace,
KpTab,
KpBackspace,
KpA,
KpB,
KpC,
KpD,
KpE,
KpF,
KpXor,
KpPower,
KpPercent,
KpLess,
KpGreater,
KpAmpersand,
KpDblAmpersand,
KpVerticalBar,
KpDblVerticalBar,
KpColon,
KpHash,
KpSpace,
KpAt,
KpExclam,
KpMemStore,
KpMemRecall,
KpMemClear,
KpMemAdd,
KpMemSubtract,
KpMemMultiply,
KpMemDivide,
KpPlusMinus,
KpClear,
KpClearEntry,
KpBinary,
KpOctal,
KpDecimal,
KpHexadecimal,
LCtrl,
LShift,
LAlt,
LGui,
RCtrl,
RShift,
RAlt,
RGui,
Mode,
AudioNext,
AudioPrev,
AudioStop,
AudioPlay,
AudioMute,
MediaSelect,
Www,
Mail,
Calculator,
Computer,
AcSearch,
AcHome,
AcBack,
AcForward,
AcStop,
AcRefresh,
AcBookmarks,
BrightnessDown,
BrightnessUp,
DisplaySwitch,
KbdIllumToggle,
KbdIllumDown,
KbdIllumUp,
Eject,
Sleep,
}
#[rustfmt::skip]
impl KeyCode {
pub fn try_from_winit(code: VirtualKeyCode) -> Option<KeyCode> {
match code {
winit::event::VirtualKeyCode::A => Some(KeyCode::A),
winit::event::VirtualKeyCode::B => Some(KeyCode::B),
winit::event::VirtualKeyCode::C => Some(KeyCode::C),
winit::event::VirtualKeyCode::D => Some(KeyCode::D),
winit::event::VirtualKeyCode::E => Some(KeyCode::E),
winit::event::VirtualKeyCode::F => Some(KeyCode::F),
winit::event::VirtualKeyCode::G => Some(KeyCode::G),
winit::event::VirtualKeyCode::H => Some(KeyCode::H),
winit::event::VirtualKeyCode::I => Some(KeyCode::I),
winit::event::VirtualKeyCode::J => Some(KeyCode::J),
winit::event::VirtualKeyCode::K => Some(KeyCode::K),
winit::event::VirtualKeyCode::L => Some(KeyCode::L),
winit::event::VirtualKeyCode::M => Some(KeyCode::M),
winit::event::VirtualKeyCode::N => Some(KeyCode::N),
winit::event::VirtualKeyCode::O => Some(KeyCode::O),
winit::event::VirtualKeyCode::P => Some(KeyCode::P),
winit::event::VirtualKeyCode::Q => Some(KeyCode::Q),
winit::event::VirtualKeyCode::R => Some(KeyCode::R),
winit::event::VirtualKeyCode::S => Some(KeyCode::S),
winit::event::VirtualKeyCode::T => Some(KeyCode::T),
winit::event::VirtualKeyCode::U => Some(KeyCode::U),
winit::event::VirtualKeyCode::V => Some(KeyCode::V),
winit::event::VirtualKeyCode::W => Some(KeyCode::W),
winit::event::VirtualKeyCode::X => Some(KeyCode::X),
winit::event::VirtualKeyCode::Y => Some(KeyCode::Y),
winit::event::VirtualKeyCode::Z => Some(KeyCode::Z),
winit::event::VirtualKeyCode::Grave => Some(KeyCode::Backquote),
winit::event::VirtualKeyCode::Tab => Some(KeyCode::Tab),
winit::event::VirtualKeyCode::Return => Some(KeyCode::Return),
winit::event::VirtualKeyCode::Escape => Some(KeyCode::Escape),
winit::event::VirtualKeyCode::Space => Some(KeyCode::Space),
winit::event::VirtualKeyCode::Plus => Some(KeyCode::Plus),
winit::event::VirtualKeyCode::Comma => Some(KeyCode::Comma),
winit::event::VirtualKeyCode::Minus => Some(KeyCode::Minus),
winit::event::VirtualKeyCode::Period => Some(KeyCode::Period),
winit::event::VirtualKeyCode::Slash => Some(KeyCode::Slash),
winit::event::VirtualKeyCode::Key0 => Some(KeyCode::Num0),
winit::event::VirtualKeyCode::Key1 => Some(KeyCode::Num1),
winit::event::VirtualKeyCode::Key2 => Some(KeyCode::Num2),
winit::event::VirtualKeyCode::Key3 => Some(KeyCode::Num3),
winit::event::VirtualKeyCode::Key4 => Some(KeyCode::Num4),
winit::event::VirtualKeyCode::Key5 => Some(KeyCode::Num5),
winit::event::VirtualKeyCode::Key6 => Some(KeyCode::Num6),
winit::event::VirtualKeyCode::Key7 => Some(KeyCode::Num7),
winit::event::VirtualKeyCode::Key8 => Some(KeyCode::Num8),
winit::event::VirtualKeyCode::Key9 => Some(KeyCode::Num9),
winit::event::VirtualKeyCode::Colon => Some(KeyCode::Colon),
winit::event::VirtualKeyCode::Semicolon => Some(KeyCode::Semicolon),
winit::event::VirtualKeyCode::Equals => Some(KeyCode::Equals),
winit::event::VirtualKeyCode::At => Some(KeyCode::At),
winit::event::VirtualKeyCode::Backslash => Some(KeyCode::Backslash),
winit::event::VirtualKeyCode::Caret => Some(KeyCode::Caret),
winit::event::VirtualKeyCode::Delete => Some(KeyCode::Delete),
winit::event::VirtualKeyCode::F1 => Some(KeyCode::F1),
winit::event::VirtualKeyCode::F2 => Some(KeyCode::F2),
winit::event::VirtualKeyCode::F3 => Some(KeyCode::F3),
winit::event::VirtualKeyCode::F4 => Some(KeyCode::F4),
winit::event::VirtualKeyCode::F5 => Some(KeyCode::F5),
winit::event::VirtualKeyCode::F6 => Some(KeyCode::F6),
winit::event::VirtualKeyCode::F7 => Some(KeyCode::F7),
winit::event::VirtualKeyCode::F8 => Some(KeyCode::F8),
winit::event::VirtualKeyCode::F9 => Some(KeyCode::F9),
winit::event::VirtualKeyCode::F10 => Some(KeyCode::F10),
winit::event::VirtualKeyCode::F11 => Some(KeyCode::F11),
winit::event::VirtualKeyCode::F12 => Some(KeyCode::F12),
winit::event::VirtualKeyCode::Pause => Some(KeyCode::Pause),
winit::event::VirtualKeyCode::Insert => Some(KeyCode::Insert),
winit::event::VirtualKeyCode::Home => Some(KeyCode::Home),
winit::event::VirtualKeyCode::PageUp => Some(KeyCode::PageUp),
winit::event::VirtualKeyCode::End => Some(KeyCode::End),
winit::event::VirtualKeyCode::PageDown => Some(KeyCode::PageDown),
winit::event::VirtualKeyCode::Right => Some(KeyCode::Right),
winit::event::VirtualKeyCode::Left => Some(KeyCode::Left),
winit::event::VirtualKeyCode::Down => Some(KeyCode::Down),
winit::event::VirtualKeyCode::Up => Some(KeyCode::Up),
winit::event::VirtualKeyCode::Power => Some(KeyCode::Power),
winit::event::VirtualKeyCode::F13 => Some(KeyCode::F13),
winit::event::VirtualKeyCode::F14 => Some(KeyCode::F14),
winit::event::VirtualKeyCode::F15 => Some(KeyCode::F15),
winit::event::VirtualKeyCode::F16 => Some(KeyCode::F16),
winit::event::VirtualKeyCode::F17 => Some(KeyCode::F17),
winit::event::VirtualKeyCode::F18 => Some(KeyCode::F18),
winit::event::VirtualKeyCode::F19 => Some(KeyCode::F19),
winit::event::VirtualKeyCode::F20 => Some(KeyCode::F20),
winit::event::VirtualKeyCode::F21 => Some(KeyCode::F21),
winit::event::VirtualKeyCode::F22 => Some(KeyCode::F22),
winit::event::VirtualKeyCode::F23 => Some(KeyCode::F23),
winit::event::VirtualKeyCode::F24 => Some(KeyCode::F24),
winit::event::VirtualKeyCode::Stop => Some(KeyCode::Stop),
winit::event::VirtualKeyCode::Cut => Some(KeyCode::Cut),
winit::event::VirtualKeyCode::Copy => Some(KeyCode::Copy),
winit::event::VirtualKeyCode::Paste => Some(KeyCode::Paste),
winit::event::VirtualKeyCode::Mute => Some(KeyCode::Mute),
winit::event::VirtualKeyCode::VolumeUp => Some(KeyCode::VolumeUp),
winit::event::VirtualKeyCode::VolumeDown => Some(KeyCode::VolumeDown),
winit::event::VirtualKeyCode::LControl => Some(KeyCode::LCtrl),
winit::event::VirtualKeyCode::LShift => Some(KeyCode::LShift),
winit::event::VirtualKeyCode::LAlt => Some(KeyCode::LAlt),
winit::event::VirtualKeyCode::LWin => Some(KeyCode::LGui),
winit::event::VirtualKeyCode::RControl => Some(KeyCode::RCtrl),
winit::event::VirtualKeyCode::RShift => Some(KeyCode::RShift),
winit::event::VirtualKeyCode::RAlt => Some(KeyCode::RAlt),
winit::event::VirtualKeyCode::RWin => Some(KeyCode::RGui),
_ => None,
}
}
}