convert sdl2 events to our own equivalents
this is to not force _some_ sdl2 type usage onto applications, thus forcing them to also include sdl2 as a dependency themselves. that being said, this is still pretty gross feeling to me and i wish there was a better solution. i've not added all possible sdl2 event equivalents. only the ones that i am currently interested in and use. i'll add more as is needed. likely the joystick / controller events will be added in the very near future.
This commit is contained in:
parent
7c568fd09d
commit
a7c91adaf0
|
@ -16,6 +16,7 @@ byteorder = "1.4.3"
|
|||
thiserror = "=1.0.30"
|
||||
rand = "0.8.5"
|
||||
num-traits = "0.2.14"
|
||||
bitflags = "1.3"
|
||||
|
||||
[dev-dependencies]
|
||||
claim = "0.5.0"
|
||||
|
|
192
libretrogd/src/system/event.rs
Normal file
192
libretrogd/src/system/event.rs
Normal file
|
@ -0,0 +1,192 @@
|
|||
// The primary reason for these "event" enumerations existing is to allow
|
||||
// us to *not* expose SDL2 types back to applications, thus preventing them
|
||||
// from being required to explicitly add SDL2 as a dependency even if they
|
||||
// never call into SDL2 directly anywhere (the SDL2 dependency can just be
|
||||
// provided automatically by libretrogd).
|
||||
//
|
||||
// Also note, that with the intended use-cases (for now) that I have for libretrogd,
|
||||
// I don't really care about all possible SDL2 events that could be raised. Thus,
|
||||
// I only map the SDL2 events which I care about here. I will extend this in the
|
||||
// future should I require it.
|
||||
|
||||
use bitflags::bitflags;
|
||||
|
||||
use crate::system::{Keycode, MouseButton, MouseButtons, Scancode};
|
||||
use crate::system::MouseEvent::MouseButtonUp;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum WindowEvent {
|
||||
Shown,
|
||||
Hidden,
|
||||
Exposed,
|
||||
Moved(i32, i32),
|
||||
Resized(i32, i32),
|
||||
SizeChanged(i32, i32),
|
||||
Minimized,
|
||||
Maximized,
|
||||
Restored,
|
||||
Enter,
|
||||
Leave,
|
||||
FocusGained,
|
||||
FocusLost,
|
||||
Close,
|
||||
}
|
||||
|
||||
impl TryFrom<sdl2::event::WindowEvent> for WindowEvent {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(value: sdl2::event::WindowEvent) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
sdl2::event::WindowEvent::Shown => Ok(WindowEvent::Shown),
|
||||
sdl2::event::WindowEvent::Hidden => Ok(WindowEvent::Hidden),
|
||||
sdl2::event::WindowEvent::Exposed => Ok(WindowEvent::Exposed),
|
||||
sdl2::event::WindowEvent::Moved(x, y) => Ok(WindowEvent::Moved(x, y)),
|
||||
sdl2::event::WindowEvent::Resized(width, height) => Ok(WindowEvent::Resized(width, height)),
|
||||
sdl2::event::WindowEvent::SizeChanged(width, height) => Ok(WindowEvent::SizeChanged(width, height)),
|
||||
sdl2::event::WindowEvent::Minimized => Ok(WindowEvent::Minimized),
|
||||
sdl2::event::WindowEvent::Maximized => Ok(WindowEvent::Maximized),
|
||||
sdl2::event::WindowEvent::Restored => Ok(WindowEvent::Restored),
|
||||
sdl2::event::WindowEvent::Enter => Ok(WindowEvent::Enter),
|
||||
sdl2::event::WindowEvent::Leave => Ok(WindowEvent::Leave),
|
||||
sdl2::event::WindowEvent::FocusGained => Ok(WindowEvent::FocusGained),
|
||||
sdl2::event::WindowEvent::FocusLost => Ok(WindowEvent::FocusLost),
|
||||
sdl2::event::WindowEvent::Close => Ok(WindowEvent::Close),
|
||||
_ => Err(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
pub struct KeyModifiers: u16 {
|
||||
const NOMOD = 0x0000;
|
||||
const LSHIFTMOD = 0x0001;
|
||||
const RSHIFTMOD = 0x0002;
|
||||
const LCTRLMOD = 0x0040;
|
||||
const RCTRLMOD = 0x0080;
|
||||
const LALTMOD = 0x0100;
|
||||
const RALTMOD = 0x0200;
|
||||
const LGUIMOD = 0x0400;
|
||||
const RGUIMOD = 0x0800;
|
||||
const NUMMOD = 0x1000;
|
||||
const CAPSMOD = 0x2000;
|
||||
const MODEMOD = 0x4000;
|
||||
const RESERVEDMOD = 0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum KeyboardEvent {
|
||||
KeyUp {
|
||||
keycode: Option<Keycode>,
|
||||
scancode: Option<Scancode>,
|
||||
keymod: KeyModifiers,
|
||||
repeat: bool,
|
||||
},
|
||||
KeyDown {
|
||||
keycode: Option<Keycode>,
|
||||
scancode: Option<Scancode>,
|
||||
keymod: KeyModifiers,
|
||||
repeat: bool,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum MouseEvent {
|
||||
MouseMotion {
|
||||
x: i32,
|
||||
y: i32,
|
||||
x_delta: i32,
|
||||
y_delta: i32,
|
||||
buttons: MouseButtons,
|
||||
},
|
||||
MouseButtonDown {
|
||||
x: i32,
|
||||
y: i32,
|
||||
button: MouseButton,
|
||||
clicks: u8,
|
||||
},
|
||||
MouseButtonUp {
|
||||
x: i32,
|
||||
y: i32,
|
||||
button: MouseButton,
|
||||
clicks: u8,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum SystemEvent {
|
||||
Quit,
|
||||
AppTerminating,
|
||||
AppLowMemory,
|
||||
AppWillEnterBackground,
|
||||
AppDidEnterBackground,
|
||||
AppWillEnterForeground,
|
||||
AppDidEnterForeground,
|
||||
Window(WindowEvent),
|
||||
Keyboard(KeyboardEvent),
|
||||
Mouse(MouseEvent),
|
||||
}
|
||||
|
||||
impl TryFrom<sdl2::event::Event> for SystemEvent {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(value: sdl2::event::Event) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
sdl2::event::Event::Quit { .. } => Ok(SystemEvent::Quit),
|
||||
sdl2::event::Event::AppTerminating { .. } => Ok(SystemEvent::AppTerminating),
|
||||
sdl2::event::Event::AppLowMemory { .. } => Ok(SystemEvent::AppLowMemory),
|
||||
sdl2::event::Event::AppWillEnterBackground { .. } => Ok(SystemEvent::AppWillEnterBackground),
|
||||
sdl2::event::Event::AppDidEnterBackground { .. } => Ok(SystemEvent::AppDidEnterBackground),
|
||||
sdl2::event::Event::AppWillEnterForeground { .. } => Ok(SystemEvent::AppWillEnterForeground),
|
||||
sdl2::event::Event::AppDidEnterForeground { .. } => Ok(SystemEvent::AppDidEnterForeground),
|
||||
sdl2::event::Event::Window { win_event, .. } => {
|
||||
match win_event.try_into() {
|
||||
Ok(window_event) => Ok(SystemEvent::Window(window_event)),
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
},
|
||||
sdl2::event::Event::KeyDown { keycode, scancode, keymod, repeat, .. } => {
|
||||
Ok(SystemEvent::Keyboard(KeyboardEvent::KeyDown {
|
||||
keycode: keycode.map(|keycode| keycode.into()),
|
||||
scancode: scancode.map(|scancode| scancode.into()),
|
||||
keymod: KeyModifiers::from_bits_truncate(keymod.bits()),
|
||||
repeat
|
||||
}))
|
||||
},
|
||||
sdl2::event::Event::KeyUp { keycode, scancode, keymod, repeat, .. } => {
|
||||
Ok(SystemEvent::Keyboard(KeyboardEvent::KeyUp {
|
||||
keycode: keycode.map(|keycode| keycode.into()),
|
||||
scancode: scancode.map(|scancode| scancode.into()),
|
||||
keymod: KeyModifiers::from_bits_truncate(keymod.bits()),
|
||||
repeat
|
||||
}))
|
||||
}
|
||||
sdl2::event::Event::MouseMotion { mousestate, x, y, xrel, yrel, .. } => {
|
||||
Ok(SystemEvent::Mouse(MouseEvent::MouseMotion {
|
||||
x,
|
||||
y,
|
||||
x_delta: xrel,
|
||||
y_delta: yrel,
|
||||
buttons: MouseButtons::from_bits_truncate(mousestate.to_sdl_state()),
|
||||
}))
|
||||
},
|
||||
sdl2::event::Event::MouseButtonDown { mouse_btn, clicks, x, y, .. } => {
|
||||
Ok(SystemEvent::Mouse(MouseEvent::MouseButtonDown {
|
||||
x,
|
||||
y,
|
||||
clicks,
|
||||
button: mouse_btn.into(),
|
||||
}))
|
||||
},
|
||||
sdl2::event::Event::MouseButtonUp { mouse_btn, clicks, x, y, .. } => {
|
||||
Ok(SystemEvent::Mouse(MouseButtonUp {
|
||||
x,
|
||||
y,
|
||||
clicks,
|
||||
button: mouse_btn.into(),
|
||||
}))
|
||||
},
|
||||
_ => Err(())
|
||||
}
|
||||
}
|
||||
}
|
483
libretrogd/src/system/input_devices/keyboard/codes.rs
Normal file
483
libretrogd/src/system/input_devices/keyboard/codes.rs
Normal file
|
@ -0,0 +1,483 @@
|
|||
// ugh
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
|
||||
#[repr(i32)]
|
||||
pub enum Keycode {
|
||||
Backspace = sdl2::keyboard::Keycode::Backspace as i32,
|
||||
Tab = sdl2::keyboard::Keycode::Tab as i32,
|
||||
Return = sdl2::keyboard::Keycode::Return as i32,
|
||||
Escape = sdl2::keyboard::Keycode::Escape as i32,
|
||||
Space = sdl2::keyboard::Keycode::Space as i32,
|
||||
Exclaim = sdl2::keyboard::Keycode::Exclaim as i32,
|
||||
Quotedbl = sdl2::keyboard::Keycode::Quotedbl as i32,
|
||||
Hash = sdl2::keyboard::Keycode::Hash as i32,
|
||||
Dollar = sdl2::keyboard::Keycode::Dollar as i32,
|
||||
Percent = sdl2::keyboard::Keycode::Percent as i32,
|
||||
Ampersand = sdl2::keyboard::Keycode::Ampersand as i32,
|
||||
Quote = sdl2::keyboard::Keycode::Quote as i32,
|
||||
LeftParen = sdl2::keyboard::Keycode::LeftParen as i32,
|
||||
RightParen = sdl2::keyboard::Keycode::RightParen as i32,
|
||||
Asterisk = sdl2::keyboard::Keycode::Asterisk as i32,
|
||||
Plus = sdl2::keyboard::Keycode::Plus as i32,
|
||||
Comma = sdl2::keyboard::Keycode::Comma as i32,
|
||||
Minus = sdl2::keyboard::Keycode::Minus as i32,
|
||||
Period = sdl2::keyboard::Keycode::Period as i32,
|
||||
Slash = sdl2::keyboard::Keycode::Slash as i32,
|
||||
Num0 = sdl2::keyboard::Keycode::Num0 as i32,
|
||||
Num1 = sdl2::keyboard::Keycode::Num1 as i32,
|
||||
Num2 = sdl2::keyboard::Keycode::Num2 as i32,
|
||||
Num3 = sdl2::keyboard::Keycode::Num3 as i32,
|
||||
Num4 = sdl2::keyboard::Keycode::Num4 as i32,
|
||||
Num5 = sdl2::keyboard::Keycode::Num5 as i32,
|
||||
Num6 = sdl2::keyboard::Keycode::Num6 as i32,
|
||||
Num7 = sdl2::keyboard::Keycode::Num7 as i32,
|
||||
Num8 = sdl2::keyboard::Keycode::Num8 as i32,
|
||||
Num9 = sdl2::keyboard::Keycode::Num9 as i32,
|
||||
Colon = sdl2::keyboard::Keycode::Colon as i32,
|
||||
Semicolon = sdl2::keyboard::Keycode::Semicolon as i32,
|
||||
Less = sdl2::keyboard::Keycode::Less as i32,
|
||||
Equals = sdl2::keyboard::Keycode::Equals as i32,
|
||||
Greater = sdl2::keyboard::Keycode::Greater as i32,
|
||||
Question = sdl2::keyboard::Keycode::Question as i32,
|
||||
At = sdl2::keyboard::Keycode::At as i32,
|
||||
LeftBracket = sdl2::keyboard::Keycode::LeftBracket as i32,
|
||||
Backslash = sdl2::keyboard::Keycode::Backslash as i32,
|
||||
RightBracket = sdl2::keyboard::Keycode::RightBracket as i32,
|
||||
Caret = sdl2::keyboard::Keycode::Caret as i32,
|
||||
Underscore = sdl2::keyboard::Keycode::Underscore as i32,
|
||||
Backquote = sdl2::keyboard::Keycode::Backquote as i32,
|
||||
A = sdl2::keyboard::Keycode::A as i32,
|
||||
B = sdl2::keyboard::Keycode::B as i32,
|
||||
C = sdl2::keyboard::Keycode::C as i32,
|
||||
D = sdl2::keyboard::Keycode::D as i32,
|
||||
E = sdl2::keyboard::Keycode::E as i32,
|
||||
F = sdl2::keyboard::Keycode::F as i32,
|
||||
G = sdl2::keyboard::Keycode::G as i32,
|
||||
H = sdl2::keyboard::Keycode::H as i32,
|
||||
I = sdl2::keyboard::Keycode::I as i32,
|
||||
J = sdl2::keyboard::Keycode::J as i32,
|
||||
K = sdl2::keyboard::Keycode::K as i32,
|
||||
L = sdl2::keyboard::Keycode::L as i32,
|
||||
M = sdl2::keyboard::Keycode::M as i32,
|
||||
N = sdl2::keyboard::Keycode::N as i32,
|
||||
O = sdl2::keyboard::Keycode::O as i32,
|
||||
P = sdl2::keyboard::Keycode::P as i32,
|
||||
Q = sdl2::keyboard::Keycode::Q as i32,
|
||||
R = sdl2::keyboard::Keycode::R as i32,
|
||||
S = sdl2::keyboard::Keycode::S as i32,
|
||||
T = sdl2::keyboard::Keycode::T as i32,
|
||||
U = sdl2::keyboard::Keycode::U as i32,
|
||||
V = sdl2::keyboard::Keycode::V as i32,
|
||||
W = sdl2::keyboard::Keycode::W as i32,
|
||||
X = sdl2::keyboard::Keycode::X as i32,
|
||||
Y = sdl2::keyboard::Keycode::Y as i32,
|
||||
Z = sdl2::keyboard::Keycode::Z as i32,
|
||||
Delete = sdl2::keyboard::Keycode::Delete as i32,
|
||||
CapsLock = sdl2::keyboard::Keycode::CapsLock as i32,
|
||||
F1 = sdl2::keyboard::Keycode::F1 as i32,
|
||||
F2 = sdl2::keyboard::Keycode::F2 as i32,
|
||||
F3 = sdl2::keyboard::Keycode::F3 as i32,
|
||||
F4 = sdl2::keyboard::Keycode::F4 as i32,
|
||||
F5 = sdl2::keyboard::Keycode::F5 as i32,
|
||||
F6 = sdl2::keyboard::Keycode::F6 as i32,
|
||||
F7 = sdl2::keyboard::Keycode::F7 as i32,
|
||||
F8 = sdl2::keyboard::Keycode::F8 as i32,
|
||||
F9 = sdl2::keyboard::Keycode::F9 as i32,
|
||||
F10 = sdl2::keyboard::Keycode::F10 as i32,
|
||||
F11 = sdl2::keyboard::Keycode::F11 as i32,
|
||||
F12 = sdl2::keyboard::Keycode::F12 as i32,
|
||||
PrintScreen = sdl2::keyboard::Keycode::PrintScreen as i32,
|
||||
ScrollLock = sdl2::keyboard::Keycode::ScrollLock as i32,
|
||||
Pause = sdl2::keyboard::Keycode::Pause as i32,
|
||||
Insert = sdl2::keyboard::Keycode::Insert as i32,
|
||||
Home = sdl2::keyboard::Keycode::Home as i32,
|
||||
PageUp = sdl2::keyboard::Keycode::PageUp as i32,
|
||||
End = sdl2::keyboard::Keycode::End as i32,
|
||||
PageDown = sdl2::keyboard::Keycode::PageDown as i32,
|
||||
Right = sdl2::keyboard::Keycode::Right as i32,
|
||||
Left = sdl2::keyboard::Keycode::Left as i32,
|
||||
Down = sdl2::keyboard::Keycode::Down as i32,
|
||||
Up = sdl2::keyboard::Keycode::Up as i32,
|
||||
NumLockClear = sdl2::keyboard::Keycode::NumLockClear as i32,
|
||||
KpDivide = sdl2::keyboard::Keycode::KpDivide as i32,
|
||||
KpMultiply = sdl2::keyboard::Keycode::KpMultiply as i32,
|
||||
KpMinus = sdl2::keyboard::Keycode::KpMinus as i32,
|
||||
KpPlus = sdl2::keyboard::Keycode::KpPlus as i32,
|
||||
KpEnter = sdl2::keyboard::Keycode::KpEnter as i32,
|
||||
Kp1 = sdl2::keyboard::Keycode::Kp1 as i32,
|
||||
Kp2 = sdl2::keyboard::Keycode::Kp2 as i32,
|
||||
Kp3 = sdl2::keyboard::Keycode::Kp3 as i32,
|
||||
Kp4 = sdl2::keyboard::Keycode::Kp4 as i32,
|
||||
Kp5 = sdl2::keyboard::Keycode::Kp5 as i32,
|
||||
Kp6 = sdl2::keyboard::Keycode::Kp6 as i32,
|
||||
Kp7 = sdl2::keyboard::Keycode::Kp7 as i32,
|
||||
Kp8 = sdl2::keyboard::Keycode::Kp8 as i32,
|
||||
Kp9 = sdl2::keyboard::Keycode::Kp9 as i32,
|
||||
Kp0 = sdl2::keyboard::Keycode::Kp0 as i32,
|
||||
KpPeriod = sdl2::keyboard::Keycode::KpPeriod as i32,
|
||||
Application = sdl2::keyboard::Keycode::Application as i32,
|
||||
Power = sdl2::keyboard::Keycode::Power as i32,
|
||||
KpEquals = sdl2::keyboard::Keycode::KpEquals as i32,
|
||||
F13 = sdl2::keyboard::Keycode::F13 as i32,
|
||||
F14 = sdl2::keyboard::Keycode::F14 as i32,
|
||||
F15 = sdl2::keyboard::Keycode::F15 as i32,
|
||||
F16 = sdl2::keyboard::Keycode::F16 as i32,
|
||||
F17 = sdl2::keyboard::Keycode::F17 as i32,
|
||||
F18 = sdl2::keyboard::Keycode::F18 as i32,
|
||||
F19 = sdl2::keyboard::Keycode::F19 as i32,
|
||||
F20 = sdl2::keyboard::Keycode::F20 as i32,
|
||||
F21 = sdl2::keyboard::Keycode::F21 as i32,
|
||||
F22 = sdl2::keyboard::Keycode::F22 as i32,
|
||||
F23 = sdl2::keyboard::Keycode::F23 as i32,
|
||||
F24 = sdl2::keyboard::Keycode::F24 as i32,
|
||||
Execute = sdl2::keyboard::Keycode::Execute as i32,
|
||||
Help = sdl2::keyboard::Keycode::Help as i32,
|
||||
Menu = sdl2::keyboard::Keycode::Menu as i32,
|
||||
Select = sdl2::keyboard::Keycode::Select as i32,
|
||||
Stop = sdl2::keyboard::Keycode::Stop as i32,
|
||||
Again = sdl2::keyboard::Keycode::Again as i32,
|
||||
Undo = sdl2::keyboard::Keycode::Undo as i32,
|
||||
Cut = sdl2::keyboard::Keycode::Cut as i32,
|
||||
Copy = sdl2::keyboard::Keycode::Copy as i32,
|
||||
Paste = sdl2::keyboard::Keycode::Paste as i32,
|
||||
Find = sdl2::keyboard::Keycode::Find as i32,
|
||||
Mute = sdl2::keyboard::Keycode::Mute as i32,
|
||||
VolumeUp = sdl2::keyboard::Keycode::VolumeUp as i32,
|
||||
VolumeDown = sdl2::keyboard::Keycode::VolumeDown as i32,
|
||||
KpComma = sdl2::keyboard::Keycode::KpComma as i32,
|
||||
KpEqualsAS400 = sdl2::keyboard::Keycode::KpEqualsAS400 as i32,
|
||||
AltErase = sdl2::keyboard::Keycode::AltErase as i32,
|
||||
Sysreq = sdl2::keyboard::Keycode::Sysreq as i32,
|
||||
Cancel = sdl2::keyboard::Keycode::Cancel as i32,
|
||||
Clear = sdl2::keyboard::Keycode::Clear as i32,
|
||||
Prior = sdl2::keyboard::Keycode::Prior as i32,
|
||||
Return2 = sdl2::keyboard::Keycode::Return2 as i32,
|
||||
Separator = sdl2::keyboard::Keycode::Separator as i32,
|
||||
Out = sdl2::keyboard::Keycode::Out as i32,
|
||||
Oper = sdl2::keyboard::Keycode::Oper as i32,
|
||||
ClearAgain = sdl2::keyboard::Keycode::ClearAgain as i32,
|
||||
CrSel = sdl2::keyboard::Keycode::CrSel as i32,
|
||||
ExSel = sdl2::keyboard::Keycode::ExSel as i32,
|
||||
Kp00 = sdl2::keyboard::Keycode::Kp00 as i32,
|
||||
Kp000 = sdl2::keyboard::Keycode::Kp000 as i32,
|
||||
ThousandsSeparator = sdl2::keyboard::Keycode::ThousandsSeparator as i32,
|
||||
DecimalSeparator = sdl2::keyboard::Keycode::DecimalSeparator as i32,
|
||||
CurrencyUnit = sdl2::keyboard::Keycode::CurrencyUnit as i32,
|
||||
CurrencySubUnit = sdl2::keyboard::Keycode::CurrencySubUnit as i32,
|
||||
KpLeftParen = sdl2::keyboard::Keycode::KpLeftParen as i32,
|
||||
KpRightParen = sdl2::keyboard::Keycode::KpRightParen as i32,
|
||||
KpLeftBrace = sdl2::keyboard::Keycode::KpLeftBrace as i32,
|
||||
KpRightBrace = sdl2::keyboard::Keycode::KpRightBrace as i32,
|
||||
KpTab = sdl2::keyboard::Keycode::KpTab as i32,
|
||||
KpBackspace = sdl2::keyboard::Keycode::KpBackspace as i32,
|
||||
KpA = sdl2::keyboard::Keycode::KpA as i32,
|
||||
KpB = sdl2::keyboard::Keycode::KpB as i32,
|
||||
KpC = sdl2::keyboard::Keycode::KpC as i32,
|
||||
KpD = sdl2::keyboard::Keycode::KpD as i32,
|
||||
KpE = sdl2::keyboard::Keycode::KpE as i32,
|
||||
KpF = sdl2::keyboard::Keycode::KpF as i32,
|
||||
KpXor = sdl2::keyboard::Keycode::KpXor as i32,
|
||||
KpPower = sdl2::keyboard::Keycode::KpPower as i32,
|
||||
KpPercent = sdl2::keyboard::Keycode::KpPercent as i32,
|
||||
KpLess = sdl2::keyboard::Keycode::KpLess as i32,
|
||||
KpGreater = sdl2::keyboard::Keycode::KpGreater as i32,
|
||||
KpAmpersand = sdl2::keyboard::Keycode::KpAmpersand as i32,
|
||||
KpDblAmpersand = sdl2::keyboard::Keycode::KpDblAmpersand as i32,
|
||||
KpVerticalBar = sdl2::keyboard::Keycode::KpVerticalBar as i32,
|
||||
KpDblVerticalBar = sdl2::keyboard::Keycode::KpDblVerticalBar as i32,
|
||||
KpColon = sdl2::keyboard::Keycode::KpColon as i32,
|
||||
KpHash = sdl2::keyboard::Keycode::KpHash as i32,
|
||||
KpSpace = sdl2::keyboard::Keycode::KpSpace as i32,
|
||||
KpAt = sdl2::keyboard::Keycode::KpAt as i32,
|
||||
KpExclam = sdl2::keyboard::Keycode::KpExclam as i32,
|
||||
KpMemStore = sdl2::keyboard::Keycode::KpMemStore as i32,
|
||||
KpMemRecall = sdl2::keyboard::Keycode::KpMemRecall as i32,
|
||||
KpMemClear = sdl2::keyboard::Keycode::KpMemClear as i32,
|
||||
KpMemAdd = sdl2::keyboard::Keycode::KpMemAdd as i32,
|
||||
KpMemSubtract = sdl2::keyboard::Keycode::KpMemSubtract as i32,
|
||||
KpMemMultiply = sdl2::keyboard::Keycode::KpMemMultiply as i32,
|
||||
KpMemDivide = sdl2::keyboard::Keycode::KpMemDivide as i32,
|
||||
KpPlusMinus = sdl2::keyboard::Keycode::KpPlusMinus as i32,
|
||||
KpClear = sdl2::keyboard::Keycode::KpClear as i32,
|
||||
KpClearEntry = sdl2::keyboard::Keycode::KpClearEntry as i32,
|
||||
KpBinary = sdl2::keyboard::Keycode::KpBinary as i32,
|
||||
KpOctal = sdl2::keyboard::Keycode::KpOctal as i32,
|
||||
KpDecimal = sdl2::keyboard::Keycode::KpDecimal as i32,
|
||||
KpHexadecimal = sdl2::keyboard::Keycode::KpHexadecimal as i32,
|
||||
LCtrl = sdl2::keyboard::Keycode::LCtrl as i32,
|
||||
LShift = sdl2::keyboard::Keycode::LShift as i32,
|
||||
LAlt = sdl2::keyboard::Keycode::LAlt as i32,
|
||||
LGui = sdl2::keyboard::Keycode::LGui as i32,
|
||||
RCtrl = sdl2::keyboard::Keycode::RCtrl as i32,
|
||||
RShift = sdl2::keyboard::Keycode::RShift as i32,
|
||||
RAlt = sdl2::keyboard::Keycode::RAlt as i32,
|
||||
RGui = sdl2::keyboard::Keycode::RGui as i32,
|
||||
Mode = sdl2::keyboard::Keycode::Mode as i32,
|
||||
AudioNext = sdl2::keyboard::Keycode::AudioNext as i32,
|
||||
AudioPrev = sdl2::keyboard::Keycode::AudioPrev as i32,
|
||||
AudioStop = sdl2::keyboard::Keycode::AudioStop as i32,
|
||||
AudioPlay = sdl2::keyboard::Keycode::AudioPlay as i32,
|
||||
AudioMute = sdl2::keyboard::Keycode::AudioMute as i32,
|
||||
MediaSelect = sdl2::keyboard::Keycode::MediaSelect as i32,
|
||||
Www = sdl2::keyboard::Keycode::Www as i32,
|
||||
Mail = sdl2::keyboard::Keycode::Mail as i32,
|
||||
Calculator = sdl2::keyboard::Keycode::Calculator as i32,
|
||||
Computer = sdl2::keyboard::Keycode::Computer as i32,
|
||||
AcSearch = sdl2::keyboard::Keycode::AcSearch as i32,
|
||||
AcHome = sdl2::keyboard::Keycode::AcHome as i32,
|
||||
AcBack = sdl2::keyboard::Keycode::AcBack as i32,
|
||||
AcForward = sdl2::keyboard::Keycode::AcForward as i32,
|
||||
AcStop = sdl2::keyboard::Keycode::AcStop as i32,
|
||||
AcRefresh = sdl2::keyboard::Keycode::AcRefresh as i32,
|
||||
AcBookmarks = sdl2::keyboard::Keycode::AcBookmarks as i32,
|
||||
BrightnessDown = sdl2::keyboard::Keycode::BrightnessDown as i32,
|
||||
BrightnessUp = sdl2::keyboard::Keycode::BrightnessUp as i32,
|
||||
DisplaySwitch = sdl2::keyboard::Keycode::DisplaySwitch as i32,
|
||||
KbdIllumToggle = sdl2::keyboard::Keycode::KbdIllumToggle as i32,
|
||||
KbdIllumDown = sdl2::keyboard::Keycode::KbdIllumDown as i32,
|
||||
KbdIllumUp = sdl2::keyboard::Keycode::KbdIllumUp as i32,
|
||||
Eject = sdl2::keyboard::Keycode::Eject as i32,
|
||||
Sleep = sdl2::keyboard::Keycode::Sleep as i32,
|
||||
}
|
||||
|
||||
impl From<sdl2::keyboard::Keycode> for Keycode {
|
||||
fn from(value: sdl2::keyboard::Keycode) -> Self {
|
||||
match value {
|
||||
sdl2::keyboard::Keycode::Backspace => Keycode::Backspace,
|
||||
sdl2::keyboard::Keycode::Tab => Keycode::Tab,
|
||||
sdl2::keyboard::Keycode::Return => Keycode::Return,
|
||||
sdl2::keyboard::Keycode::Escape => Keycode::Escape,
|
||||
sdl2::keyboard::Keycode::Space => Keycode::Space,
|
||||
sdl2::keyboard::Keycode::Exclaim => Keycode::Exclaim,
|
||||
sdl2::keyboard::Keycode::Quotedbl => Keycode::Quotedbl,
|
||||
sdl2::keyboard::Keycode::Hash => Keycode::Hash,
|
||||
sdl2::keyboard::Keycode::Dollar => Keycode::Dollar,
|
||||
sdl2::keyboard::Keycode::Percent => Keycode::Percent,
|
||||
sdl2::keyboard::Keycode::Ampersand => Keycode::Ampersand,
|
||||
sdl2::keyboard::Keycode::Quote => Keycode::Quote,
|
||||
sdl2::keyboard::Keycode::LeftParen => Keycode::LeftParen,
|
||||
sdl2::keyboard::Keycode::RightParen => Keycode::RightParen,
|
||||
sdl2::keyboard::Keycode::Asterisk => Keycode::Asterisk,
|
||||
sdl2::keyboard::Keycode::Plus => Keycode::Plus,
|
||||
sdl2::keyboard::Keycode::Comma => Keycode::Comma,
|
||||
sdl2::keyboard::Keycode::Minus => Keycode::Minus,
|
||||
sdl2::keyboard::Keycode::Period => Keycode::Period,
|
||||
sdl2::keyboard::Keycode::Slash => Keycode::Slash,
|
||||
sdl2::keyboard::Keycode::Num0 => Keycode::Num0,
|
||||
sdl2::keyboard::Keycode::Num1 => Keycode::Num1,
|
||||
sdl2::keyboard::Keycode::Num2 => Keycode::Num2,
|
||||
sdl2::keyboard::Keycode::Num3 => Keycode::Num3,
|
||||
sdl2::keyboard::Keycode::Num4 => Keycode::Num4,
|
||||
sdl2::keyboard::Keycode::Num5 => Keycode::Num5,
|
||||
sdl2::keyboard::Keycode::Num6 => Keycode::Num6,
|
||||
sdl2::keyboard::Keycode::Num7 => Keycode::Num7,
|
||||
sdl2::keyboard::Keycode::Num8 => Keycode::Num8,
|
||||
sdl2::keyboard::Keycode::Num9 => Keycode::Num9,
|
||||
sdl2::keyboard::Keycode::Colon => Keycode::Colon,
|
||||
sdl2::keyboard::Keycode::Semicolon => Keycode::Semicolon,
|
||||
sdl2::keyboard::Keycode::Less => Keycode::Less,
|
||||
sdl2::keyboard::Keycode::Equals => Keycode::Equals,
|
||||
sdl2::keyboard::Keycode::Greater => Keycode::Greater,
|
||||
sdl2::keyboard::Keycode::Question => Keycode::Question,
|
||||
sdl2::keyboard::Keycode::At => Keycode::At,
|
||||
sdl2::keyboard::Keycode::LeftBracket => Keycode::LeftBracket,
|
||||
sdl2::keyboard::Keycode::Backslash => Keycode::Backslash,
|
||||
sdl2::keyboard::Keycode::RightBracket => Keycode::RightBracket,
|
||||
sdl2::keyboard::Keycode::Caret => Keycode::Caret,
|
||||
sdl2::keyboard::Keycode::Underscore => Keycode::Underscore,
|
||||
sdl2::keyboard::Keycode::Backquote => Keycode::Backquote,
|
||||
sdl2::keyboard::Keycode::A => Keycode::A,
|
||||
sdl2::keyboard::Keycode::B => Keycode::B,
|
||||
sdl2::keyboard::Keycode::C => Keycode::C,
|
||||
sdl2::keyboard::Keycode::D => Keycode::D,
|
||||
sdl2::keyboard::Keycode::E => Keycode::E,
|
||||
sdl2::keyboard::Keycode::F => Keycode::F,
|
||||
sdl2::keyboard::Keycode::G => Keycode::G,
|
||||
sdl2::keyboard::Keycode::H => Keycode::H,
|
||||
sdl2::keyboard::Keycode::I => Keycode::I,
|
||||
sdl2::keyboard::Keycode::J => Keycode::J,
|
||||
sdl2::keyboard::Keycode::K => Keycode::K,
|
||||
sdl2::keyboard::Keycode::L => Keycode::L,
|
||||
sdl2::keyboard::Keycode::M => Keycode::M,
|
||||
sdl2::keyboard::Keycode::N => Keycode::N,
|
||||
sdl2::keyboard::Keycode::O => Keycode::O,
|
||||
sdl2::keyboard::Keycode::P => Keycode::P,
|
||||
sdl2::keyboard::Keycode::Q => Keycode::Q,
|
||||
sdl2::keyboard::Keycode::R => Keycode::R,
|
||||
sdl2::keyboard::Keycode::S => Keycode::S,
|
||||
sdl2::keyboard::Keycode::T => Keycode::T,
|
||||
sdl2::keyboard::Keycode::U => Keycode::U,
|
||||
sdl2::keyboard::Keycode::V => Keycode::V,
|
||||
sdl2::keyboard::Keycode::W => Keycode::W,
|
||||
sdl2::keyboard::Keycode::X => Keycode::X,
|
||||
sdl2::keyboard::Keycode::Y => Keycode::Y,
|
||||
sdl2::keyboard::Keycode::Z => Keycode::Z,
|
||||
sdl2::keyboard::Keycode::Delete => Keycode::Delete,
|
||||
sdl2::keyboard::Keycode::CapsLock => Keycode::CapsLock,
|
||||
sdl2::keyboard::Keycode::F1 => Keycode::F1,
|
||||
sdl2::keyboard::Keycode::F2 => Keycode::F2,
|
||||
sdl2::keyboard::Keycode::F3 => Keycode::F3,
|
||||
sdl2::keyboard::Keycode::F4 => Keycode::F4,
|
||||
sdl2::keyboard::Keycode::F5 => Keycode::F5,
|
||||
sdl2::keyboard::Keycode::F6 => Keycode::F6,
|
||||
sdl2::keyboard::Keycode::F7 => Keycode::F7,
|
||||
sdl2::keyboard::Keycode::F8 => Keycode::F8,
|
||||
sdl2::keyboard::Keycode::F9 => Keycode::F9,
|
||||
sdl2::keyboard::Keycode::F10 => Keycode::F10,
|
||||
sdl2::keyboard::Keycode::F11 => Keycode::F11,
|
||||
sdl2::keyboard::Keycode::F12 => Keycode::F12,
|
||||
sdl2::keyboard::Keycode::PrintScreen => Keycode::PrintScreen,
|
||||
sdl2::keyboard::Keycode::ScrollLock => Keycode::ScrollLock,
|
||||
sdl2::keyboard::Keycode::Pause => Keycode::Pause,
|
||||
sdl2::keyboard::Keycode::Insert => Keycode::Insert,
|
||||
sdl2::keyboard::Keycode::Home => Keycode::Home,
|
||||
sdl2::keyboard::Keycode::PageUp => Keycode::PageUp,
|
||||
sdl2::keyboard::Keycode::End => Keycode::End,
|
||||
sdl2::keyboard::Keycode::PageDown => Keycode::PageDown,
|
||||
sdl2::keyboard::Keycode::Right => Keycode::Right,
|
||||
sdl2::keyboard::Keycode::Left => Keycode::Left,
|
||||
sdl2::keyboard::Keycode::Down => Keycode::Down,
|
||||
sdl2::keyboard::Keycode::Up => Keycode::Up,
|
||||
sdl2::keyboard::Keycode::NumLockClear => Keycode::NumLockClear,
|
||||
sdl2::keyboard::Keycode::KpDivide => Keycode::KpDivide,
|
||||
sdl2::keyboard::Keycode::KpMultiply => Keycode::KpMultiply,
|
||||
sdl2::keyboard::Keycode::KpMinus => Keycode::KpMinus,
|
||||
sdl2::keyboard::Keycode::KpPlus => Keycode::KpPlus,
|
||||
sdl2::keyboard::Keycode::KpEnter => Keycode::KpEnter,
|
||||
sdl2::keyboard::Keycode::Kp1 => Keycode::Kp1,
|
||||
sdl2::keyboard::Keycode::Kp2 => Keycode::Kp2,
|
||||
sdl2::keyboard::Keycode::Kp3 => Keycode::Kp3,
|
||||
sdl2::keyboard::Keycode::Kp4 => Keycode::Kp4,
|
||||
sdl2::keyboard::Keycode::Kp5 => Keycode::Kp5,
|
||||
sdl2::keyboard::Keycode::Kp6 => Keycode::Kp6,
|
||||
sdl2::keyboard::Keycode::Kp7 => Keycode::Kp7,
|
||||
sdl2::keyboard::Keycode::Kp8 => Keycode::Kp8,
|
||||
sdl2::keyboard::Keycode::Kp9 => Keycode::Kp9,
|
||||
sdl2::keyboard::Keycode::Kp0 => Keycode::Kp0,
|
||||
sdl2::keyboard::Keycode::KpPeriod => Keycode::KpPeriod,
|
||||
sdl2::keyboard::Keycode::Application => Keycode::Application,
|
||||
sdl2::keyboard::Keycode::Power => Keycode::Power,
|
||||
sdl2::keyboard::Keycode::KpEquals => Keycode::KpEquals,
|
||||
sdl2::keyboard::Keycode::F13 => Keycode::F13,
|
||||
sdl2::keyboard::Keycode::F14 => Keycode::F14,
|
||||
sdl2::keyboard::Keycode::F15 => Keycode::F15,
|
||||
sdl2::keyboard::Keycode::F16 => Keycode::F16,
|
||||
sdl2::keyboard::Keycode::F17 => Keycode::F17,
|
||||
sdl2::keyboard::Keycode::F18 => Keycode::F18,
|
||||
sdl2::keyboard::Keycode::F19 => Keycode::F19,
|
||||
sdl2::keyboard::Keycode::F20 => Keycode::F20,
|
||||
sdl2::keyboard::Keycode::F21 => Keycode::F21,
|
||||
sdl2::keyboard::Keycode::F22 => Keycode::F22,
|
||||
sdl2::keyboard::Keycode::F23 => Keycode::F23,
|
||||
sdl2::keyboard::Keycode::F24 => Keycode::F24,
|
||||
sdl2::keyboard::Keycode::Execute => Keycode::Execute,
|
||||
sdl2::keyboard::Keycode::Help => Keycode::Help,
|
||||
sdl2::keyboard::Keycode::Menu => Keycode::Menu,
|
||||
sdl2::keyboard::Keycode::Select => Keycode::Select,
|
||||
sdl2::keyboard::Keycode::Stop => Keycode::Stop,
|
||||
sdl2::keyboard::Keycode::Again => Keycode::Again,
|
||||
sdl2::keyboard::Keycode::Undo => Keycode::Undo,
|
||||
sdl2::keyboard::Keycode::Cut => Keycode::Cut,
|
||||
sdl2::keyboard::Keycode::Copy => Keycode::Copy,
|
||||
sdl2::keyboard::Keycode::Paste => Keycode::Paste,
|
||||
sdl2::keyboard::Keycode::Find => Keycode::Find,
|
||||
sdl2::keyboard::Keycode::Mute => Keycode::Mute,
|
||||
sdl2::keyboard::Keycode::VolumeUp => Keycode::VolumeUp,
|
||||
sdl2::keyboard::Keycode::VolumeDown => Keycode::VolumeDown,
|
||||
sdl2::keyboard::Keycode::KpComma => Keycode::KpComma,
|
||||
sdl2::keyboard::Keycode::KpEqualsAS400 => Keycode::KpEqualsAS400,
|
||||
sdl2::keyboard::Keycode::AltErase => Keycode::AltErase,
|
||||
sdl2::keyboard::Keycode::Sysreq => Keycode::Sysreq,
|
||||
sdl2::keyboard::Keycode::Cancel => Keycode::Cancel,
|
||||
sdl2::keyboard::Keycode::Clear => Keycode::Clear,
|
||||
sdl2::keyboard::Keycode::Prior => Keycode::Prior,
|
||||
sdl2::keyboard::Keycode::Return2 => Keycode::Return2,
|
||||
sdl2::keyboard::Keycode::Separator => Keycode::Separator,
|
||||
sdl2::keyboard::Keycode::Out => Keycode::Out,
|
||||
sdl2::keyboard::Keycode::Oper => Keycode::Oper,
|
||||
sdl2::keyboard::Keycode::ClearAgain => Keycode::ClearAgain,
|
||||
sdl2::keyboard::Keycode::CrSel => Keycode::CrSel,
|
||||
sdl2::keyboard::Keycode::ExSel => Keycode::ExSel,
|
||||
sdl2::keyboard::Keycode::Kp00 => Keycode::Kp00,
|
||||
sdl2::keyboard::Keycode::Kp000 => Keycode::Kp000,
|
||||
sdl2::keyboard::Keycode::ThousandsSeparator => Keycode::ThousandsSeparator,
|
||||
sdl2::keyboard::Keycode::DecimalSeparator => Keycode::DecimalSeparator,
|
||||
sdl2::keyboard::Keycode::CurrencyUnit => Keycode::CurrencyUnit,
|
||||
sdl2::keyboard::Keycode::CurrencySubUnit => Keycode::CurrencySubUnit,
|
||||
sdl2::keyboard::Keycode::KpLeftParen => Keycode::KpLeftParen,
|
||||
sdl2::keyboard::Keycode::KpRightParen => Keycode::KpRightParen,
|
||||
sdl2::keyboard::Keycode::KpLeftBrace => Keycode::KpLeftBrace,
|
||||
sdl2::keyboard::Keycode::KpRightBrace => Keycode::KpRightBrace,
|
||||
sdl2::keyboard::Keycode::KpTab => Keycode::KpTab,
|
||||
sdl2::keyboard::Keycode::KpBackspace => Keycode::KpBackspace,
|
||||
sdl2::keyboard::Keycode::KpA => Keycode::KpA,
|
||||
sdl2::keyboard::Keycode::KpB => Keycode::KpB,
|
||||
sdl2::keyboard::Keycode::KpC => Keycode::KpC,
|
||||
sdl2::keyboard::Keycode::KpD => Keycode::KpD,
|
||||
sdl2::keyboard::Keycode::KpE => Keycode::KpE,
|
||||
sdl2::keyboard::Keycode::KpF => Keycode::KpF,
|
||||
sdl2::keyboard::Keycode::KpXor => Keycode::KpXor,
|
||||
sdl2::keyboard::Keycode::KpPower => Keycode::KpPower,
|
||||
sdl2::keyboard::Keycode::KpPercent => Keycode::KpPercent,
|
||||
sdl2::keyboard::Keycode::KpLess => Keycode::KpLess,
|
||||
sdl2::keyboard::Keycode::KpGreater => Keycode::KpGreater,
|
||||
sdl2::keyboard::Keycode::KpAmpersand => Keycode::KpAmpersand,
|
||||
sdl2::keyboard::Keycode::KpDblAmpersand => Keycode::KpDblAmpersand,
|
||||
sdl2::keyboard::Keycode::KpVerticalBar => Keycode::KpVerticalBar,
|
||||
sdl2::keyboard::Keycode::KpDblVerticalBar => Keycode::KpDblVerticalBar,
|
||||
sdl2::keyboard::Keycode::KpColon => Keycode::KpColon,
|
||||
sdl2::keyboard::Keycode::KpHash => Keycode::KpHash,
|
||||
sdl2::keyboard::Keycode::KpSpace => Keycode::KpSpace,
|
||||
sdl2::keyboard::Keycode::KpAt => Keycode::KpAt,
|
||||
sdl2::keyboard::Keycode::KpExclam => Keycode::KpExclam,
|
||||
sdl2::keyboard::Keycode::KpMemStore => Keycode::KpMemStore,
|
||||
sdl2::keyboard::Keycode::KpMemRecall => Keycode::KpMemRecall,
|
||||
sdl2::keyboard::Keycode::KpMemClear => Keycode::KpMemClear,
|
||||
sdl2::keyboard::Keycode::KpMemAdd => Keycode::KpMemAdd,
|
||||
sdl2::keyboard::Keycode::KpMemSubtract => Keycode::KpMemSubtract,
|
||||
sdl2::keyboard::Keycode::KpMemMultiply => Keycode::KpMemMultiply,
|
||||
sdl2::keyboard::Keycode::KpMemDivide => Keycode::KpMemDivide,
|
||||
sdl2::keyboard::Keycode::KpPlusMinus => Keycode::KpPlusMinus,
|
||||
sdl2::keyboard::Keycode::KpClear => Keycode::KpClear,
|
||||
sdl2::keyboard::Keycode::KpClearEntry => Keycode::KpClearEntry,
|
||||
sdl2::keyboard::Keycode::KpBinary => Keycode::KpBinary,
|
||||
sdl2::keyboard::Keycode::KpOctal => Keycode::KpOctal,
|
||||
sdl2::keyboard::Keycode::KpDecimal => Keycode::KpDecimal,
|
||||
sdl2::keyboard::Keycode::KpHexadecimal => Keycode::KpHexadecimal,
|
||||
sdl2::keyboard::Keycode::LCtrl => Keycode::LCtrl,
|
||||
sdl2::keyboard::Keycode::LShift => Keycode::LShift,
|
||||
sdl2::keyboard::Keycode::LAlt => Keycode::LAlt,
|
||||
sdl2::keyboard::Keycode::LGui => Keycode::LGui,
|
||||
sdl2::keyboard::Keycode::RCtrl => Keycode::RCtrl,
|
||||
sdl2::keyboard::Keycode::RShift => Keycode::RShift,
|
||||
sdl2::keyboard::Keycode::RAlt => Keycode::RAlt,
|
||||
sdl2::keyboard::Keycode::RGui => Keycode::RGui,
|
||||
sdl2::keyboard::Keycode::Mode => Keycode::Mode,
|
||||
sdl2::keyboard::Keycode::AudioNext => Keycode::AudioNext,
|
||||
sdl2::keyboard::Keycode::AudioPrev => Keycode::AudioPrev,
|
||||
sdl2::keyboard::Keycode::AudioStop => Keycode::AudioStop,
|
||||
sdl2::keyboard::Keycode::AudioPlay => Keycode::AudioPlay,
|
||||
sdl2::keyboard::Keycode::AudioMute => Keycode::AudioMute,
|
||||
sdl2::keyboard::Keycode::MediaSelect => Keycode::MediaSelect,
|
||||
sdl2::keyboard::Keycode::Www => Keycode::Www,
|
||||
sdl2::keyboard::Keycode::Mail => Keycode::Mail,
|
||||
sdl2::keyboard::Keycode::Calculator => Keycode::Calculator,
|
||||
sdl2::keyboard::Keycode::Computer => Keycode::Computer,
|
||||
sdl2::keyboard::Keycode::AcSearch => Keycode::AcSearch,
|
||||
sdl2::keyboard::Keycode::AcHome => Keycode::AcHome,
|
||||
sdl2::keyboard::Keycode::AcBack => Keycode::AcBack,
|
||||
sdl2::keyboard::Keycode::AcForward => Keycode::AcForward,
|
||||
sdl2::keyboard::Keycode::AcStop => Keycode::AcStop,
|
||||
sdl2::keyboard::Keycode::AcRefresh => Keycode::AcRefresh,
|
||||
sdl2::keyboard::Keycode::AcBookmarks => Keycode::AcBookmarks,
|
||||
sdl2::keyboard::Keycode::BrightnessDown => Keycode::BrightnessDown,
|
||||
sdl2::keyboard::Keycode::BrightnessUp => Keycode::BrightnessUp,
|
||||
sdl2::keyboard::Keycode::DisplaySwitch => Keycode::DisplaySwitch,
|
||||
sdl2::keyboard::Keycode::KbdIllumToggle => Keycode::KbdIllumToggle,
|
||||
sdl2::keyboard::Keycode::KbdIllumDown => Keycode::KbdIllumDown,
|
||||
sdl2::keyboard::Keycode::KbdIllumUp => Keycode::KbdIllumUp,
|
||||
sdl2::keyboard::Keycode::Eject => Keycode::Eject,
|
||||
sdl2::keyboard::Keycode::Sleep => Keycode::Sleep,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,13 @@
|
|||
use sdl2::event::Event;
|
||||
use sdl2::keyboard::Scancode;
|
||||
use crate::system::event::{KeyboardEvent, SystemEvent};
|
||||
|
||||
use super::*;
|
||||
|
||||
pub use self::codes::*;
|
||||
pub use self::scancodes::*;
|
||||
|
||||
pub mod codes;
|
||||
pub mod scancodes;
|
||||
|
||||
const MAX_KEYS: usize = 256;
|
||||
|
||||
/// Holds the current state of the keyboard.
|
||||
|
@ -71,9 +76,9 @@ impl InputDevice for Keyboard {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_event(&mut self, event: &Event) {
|
||||
fn handle_event(&mut self, event: &SystemEvent) {
|
||||
match event {
|
||||
Event::KeyDown { scancode, .. } => {
|
||||
SystemEvent::Keyboard(KeyboardEvent::KeyDown { scancode, .. }) => {
|
||||
if let Some(scancode) = scancode {
|
||||
let state = &mut self.keyboard[*scancode as usize];
|
||||
*state = match *state {
|
||||
|
@ -83,7 +88,7 @@ impl InputDevice for Keyboard {
|
|||
};
|
||||
}
|
||||
}
|
||||
Event::KeyUp { scancode, .. } => {
|
||||
SystemEvent::Keyboard(KeyboardEvent::KeyUp { scancode, .. }) => {
|
||||
if let Some(scancode) = scancode {
|
||||
self.keyboard[*scancode as usize] = ButtonState::Released;
|
||||
}
|
495
libretrogd/src/system/input_devices/keyboard/scancodes.rs
Normal file
495
libretrogd/src/system/input_devices/keyboard/scancodes.rs
Normal file
|
@ -0,0 +1,495 @@
|
|||
// ugh
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
|
||||
#[repr(i32)]
|
||||
pub enum Scancode {
|
||||
A = sdl2::keyboard::Scancode::A as i32,
|
||||
B = sdl2::keyboard::Scancode::B as i32,
|
||||
C = sdl2::keyboard::Scancode::C as i32,
|
||||
D = sdl2::keyboard::Scancode::D as i32,
|
||||
E = sdl2::keyboard::Scancode::E as i32,
|
||||
F = sdl2::keyboard::Scancode::F as i32,
|
||||
G = sdl2::keyboard::Scancode::G as i32,
|
||||
H = sdl2::keyboard::Scancode::H as i32,
|
||||
I = sdl2::keyboard::Scancode::I as i32,
|
||||
J = sdl2::keyboard::Scancode::J as i32,
|
||||
K = sdl2::keyboard::Scancode::K as i32,
|
||||
L = sdl2::keyboard::Scancode::L as i32,
|
||||
M = sdl2::keyboard::Scancode::M as i32,
|
||||
N = sdl2::keyboard::Scancode::N as i32,
|
||||
O = sdl2::keyboard::Scancode::O as i32,
|
||||
P = sdl2::keyboard::Scancode::P as i32,
|
||||
Q = sdl2::keyboard::Scancode::Q as i32,
|
||||
R = sdl2::keyboard::Scancode::R as i32,
|
||||
S = sdl2::keyboard::Scancode::S as i32,
|
||||
T = sdl2::keyboard::Scancode::T as i32,
|
||||
U = sdl2::keyboard::Scancode::U as i32,
|
||||
V = sdl2::keyboard::Scancode::V as i32,
|
||||
W = sdl2::keyboard::Scancode::W as i32,
|
||||
X = sdl2::keyboard::Scancode::X as i32,
|
||||
Y = sdl2::keyboard::Scancode::Y as i32,
|
||||
Z = sdl2::keyboard::Scancode::Z as i32,
|
||||
Num1 = sdl2::keyboard::Scancode::Num1 as i32,
|
||||
Num2 = sdl2::keyboard::Scancode::Num2 as i32,
|
||||
Num3 = sdl2::keyboard::Scancode::Num3 as i32,
|
||||
Num4 = sdl2::keyboard::Scancode::Num4 as i32,
|
||||
Num5 = sdl2::keyboard::Scancode::Num5 as i32,
|
||||
Num6 = sdl2::keyboard::Scancode::Num6 as i32,
|
||||
Num7 = sdl2::keyboard::Scancode::Num7 as i32,
|
||||
Num8 = sdl2::keyboard::Scancode::Num8 as i32,
|
||||
Num9 = sdl2::keyboard::Scancode::Num9 as i32,
|
||||
Num0 = sdl2::keyboard::Scancode::Num0 as i32,
|
||||
Return = sdl2::keyboard::Scancode::Return as i32,
|
||||
Escape = sdl2::keyboard::Scancode::Escape as i32,
|
||||
Backspace = sdl2::keyboard::Scancode::Backspace as i32,
|
||||
Tab = sdl2::keyboard::Scancode::Tab as i32,
|
||||
Space = sdl2::keyboard::Scancode::Space as i32,
|
||||
Minus = sdl2::keyboard::Scancode::Minus as i32,
|
||||
Equals = sdl2::keyboard::Scancode::Equals as i32,
|
||||
LeftBracket = sdl2::keyboard::Scancode::LeftBracket as i32,
|
||||
RightBracket = sdl2::keyboard::Scancode::RightBracket as i32,
|
||||
Backslash = sdl2::keyboard::Scancode::Backslash as i32,
|
||||
NonUsHash = sdl2::keyboard::Scancode::NonUsHash as i32,
|
||||
Semicolon = sdl2::keyboard::Scancode::Semicolon as i32,
|
||||
Apostrophe = sdl2::keyboard::Scancode::Apostrophe as i32,
|
||||
Grave = sdl2::keyboard::Scancode::Grave as i32,
|
||||
Comma = sdl2::keyboard::Scancode::Comma as i32,
|
||||
Period = sdl2::keyboard::Scancode::Period as i32,
|
||||
Slash = sdl2::keyboard::Scancode::Slash as i32,
|
||||
CapsLock = sdl2::keyboard::Scancode::CapsLock as i32,
|
||||
F1 = sdl2::keyboard::Scancode::F1 as i32,
|
||||
F2 = sdl2::keyboard::Scancode::F2 as i32,
|
||||
F3 = sdl2::keyboard::Scancode::F3 as i32,
|
||||
F4 = sdl2::keyboard::Scancode::F4 as i32,
|
||||
F5 = sdl2::keyboard::Scancode::F5 as i32,
|
||||
F6 = sdl2::keyboard::Scancode::F6 as i32,
|
||||
F7 = sdl2::keyboard::Scancode::F7 as i32,
|
||||
F8 = sdl2::keyboard::Scancode::F8 as i32,
|
||||
F9 = sdl2::keyboard::Scancode::F9 as i32,
|
||||
F10 = sdl2::keyboard::Scancode::F10 as i32,
|
||||
F11 = sdl2::keyboard::Scancode::F11 as i32,
|
||||
F12 = sdl2::keyboard::Scancode::F12 as i32,
|
||||
PrintScreen = sdl2::keyboard::Scancode::PrintScreen as i32,
|
||||
ScrollLock = sdl2::keyboard::Scancode::ScrollLock as i32,
|
||||
Pause = sdl2::keyboard::Scancode::Pause as i32,
|
||||
Insert = sdl2::keyboard::Scancode::Insert as i32,
|
||||
Home = sdl2::keyboard::Scancode::Home as i32,
|
||||
PageUp = sdl2::keyboard::Scancode::PageUp as i32,
|
||||
Delete = sdl2::keyboard::Scancode::Delete as i32,
|
||||
End = sdl2::keyboard::Scancode::End as i32,
|
||||
PageDown = sdl2::keyboard::Scancode::PageDown as i32,
|
||||
Right = sdl2::keyboard::Scancode::Right as i32,
|
||||
Left = sdl2::keyboard::Scancode::Left as i32,
|
||||
Down = sdl2::keyboard::Scancode::Down as i32,
|
||||
Up = sdl2::keyboard::Scancode::Up as i32,
|
||||
NumLockClear = sdl2::keyboard::Scancode::NumLockClear as i32,
|
||||
KpDivide = sdl2::keyboard::Scancode::KpDivide as i32,
|
||||
KpMultiply = sdl2::keyboard::Scancode::KpMultiply as i32,
|
||||
KpMinus = sdl2::keyboard::Scancode::KpMinus as i32,
|
||||
KpPlus = sdl2::keyboard::Scancode::KpPlus as i32,
|
||||
KpEnter = sdl2::keyboard::Scancode::KpEnter as i32,
|
||||
Kp1 = sdl2::keyboard::Scancode::Kp1 as i32,
|
||||
Kp2 = sdl2::keyboard::Scancode::Kp2 as i32,
|
||||
Kp3 = sdl2::keyboard::Scancode::Kp3 as i32,
|
||||
Kp4 = sdl2::keyboard::Scancode::Kp4 as i32,
|
||||
Kp5 = sdl2::keyboard::Scancode::Kp5 as i32,
|
||||
Kp6 = sdl2::keyboard::Scancode::Kp6 as i32,
|
||||
Kp7 = sdl2::keyboard::Scancode::Kp7 as i32,
|
||||
Kp8 = sdl2::keyboard::Scancode::Kp8 as i32,
|
||||
Kp9 = sdl2::keyboard::Scancode::Kp9 as i32,
|
||||
Kp0 = sdl2::keyboard::Scancode::Kp0 as i32,
|
||||
KpPeriod = sdl2::keyboard::Scancode::KpPeriod as i32,
|
||||
NonUsBackslash = sdl2::keyboard::Scancode::NonUsBackslash as i32,
|
||||
Application = sdl2::keyboard::Scancode::Application as i32,
|
||||
Power = sdl2::keyboard::Scancode::Power as i32,
|
||||
KpEquals = sdl2::keyboard::Scancode::KpEquals as i32,
|
||||
F13 = sdl2::keyboard::Scancode::F13 as i32,
|
||||
F14 = sdl2::keyboard::Scancode::F14 as i32,
|
||||
F15 = sdl2::keyboard::Scancode::F15 as i32,
|
||||
F16 = sdl2::keyboard::Scancode::F16 as i32,
|
||||
F17 = sdl2::keyboard::Scancode::F17 as i32,
|
||||
F18 = sdl2::keyboard::Scancode::F18 as i32,
|
||||
F19 = sdl2::keyboard::Scancode::F19 as i32,
|
||||
F20 = sdl2::keyboard::Scancode::F20 as i32,
|
||||
F21 = sdl2::keyboard::Scancode::F21 as i32,
|
||||
F22 = sdl2::keyboard::Scancode::F22 as i32,
|
||||
F23 = sdl2::keyboard::Scancode::F23 as i32,
|
||||
F24 = sdl2::keyboard::Scancode::F24 as i32,
|
||||
Execute = sdl2::keyboard::Scancode::Execute as i32,
|
||||
Help = sdl2::keyboard::Scancode::Help as i32,
|
||||
Menu = sdl2::keyboard::Scancode::Menu as i32,
|
||||
Select = sdl2::keyboard::Scancode::Select as i32,
|
||||
Stop = sdl2::keyboard::Scancode::Stop as i32,
|
||||
Again = sdl2::keyboard::Scancode::Again as i32,
|
||||
Undo = sdl2::keyboard::Scancode::Undo as i32,
|
||||
Cut = sdl2::keyboard::Scancode::Cut as i32,
|
||||
Copy = sdl2::keyboard::Scancode::Copy as i32,
|
||||
Paste = sdl2::keyboard::Scancode::Paste as i32,
|
||||
Find = sdl2::keyboard::Scancode::Find as i32,
|
||||
Mute = sdl2::keyboard::Scancode::Mute as i32,
|
||||
VolumeUp = sdl2::keyboard::Scancode::VolumeUp as i32,
|
||||
VolumeDown = sdl2::keyboard::Scancode::VolumeDown as i32,
|
||||
KpComma = sdl2::keyboard::Scancode::KpComma as i32,
|
||||
KpEqualsAS400 = sdl2::keyboard::Scancode::KpEqualsAS400 as i32,
|
||||
International1 = sdl2::keyboard::Scancode::International1 as i32,
|
||||
International2 = sdl2::keyboard::Scancode::International2 as i32,
|
||||
International3 = sdl2::keyboard::Scancode::International3 as i32,
|
||||
International4 = sdl2::keyboard::Scancode::International4 as i32,
|
||||
International5 = sdl2::keyboard::Scancode::International5 as i32,
|
||||
International6 = sdl2::keyboard::Scancode::International6 as i32,
|
||||
International7 = sdl2::keyboard::Scancode::International7 as i32,
|
||||
International8 = sdl2::keyboard::Scancode::International8 as i32,
|
||||
International9 = sdl2::keyboard::Scancode::International9 as i32,
|
||||
Lang1 = sdl2::keyboard::Scancode::Lang1 as i32,
|
||||
Lang2 = sdl2::keyboard::Scancode::Lang2 as i32,
|
||||
Lang3 = sdl2::keyboard::Scancode::Lang3 as i32,
|
||||
Lang4 = sdl2::keyboard::Scancode::Lang4 as i32,
|
||||
Lang5 = sdl2::keyboard::Scancode::Lang5 as i32,
|
||||
Lang6 = sdl2::keyboard::Scancode::Lang6 as i32,
|
||||
Lang7 = sdl2::keyboard::Scancode::Lang7 as i32,
|
||||
Lang8 = sdl2::keyboard::Scancode::Lang8 as i32,
|
||||
Lang9 = sdl2::keyboard::Scancode::Lang9 as i32,
|
||||
AltErase = sdl2::keyboard::Scancode::AltErase as i32,
|
||||
SysReq = sdl2::keyboard::Scancode::SysReq as i32,
|
||||
Cancel = sdl2::keyboard::Scancode::Cancel as i32,
|
||||
Clear = sdl2::keyboard::Scancode::Clear as i32,
|
||||
Prior = sdl2::keyboard::Scancode::Prior as i32,
|
||||
Return2 = sdl2::keyboard::Scancode::Return2 as i32,
|
||||
Separator = sdl2::keyboard::Scancode::Separator as i32,
|
||||
Out = sdl2::keyboard::Scancode::Out as i32,
|
||||
Oper = sdl2::keyboard::Scancode::Oper as i32,
|
||||
ClearAgain = sdl2::keyboard::Scancode::ClearAgain as i32,
|
||||
CrSel = sdl2::keyboard::Scancode::CrSel as i32,
|
||||
ExSel = sdl2::keyboard::Scancode::ExSel as i32,
|
||||
Kp00 = sdl2::keyboard::Scancode::Kp00 as i32,
|
||||
Kp000 = sdl2::keyboard::Scancode::Kp000 as i32,
|
||||
ThousandsSeparator = sdl2::keyboard::Scancode::ThousandsSeparator as i32,
|
||||
DecimalSeparator = sdl2::keyboard::Scancode::DecimalSeparator as i32,
|
||||
CurrencyUnit = sdl2::keyboard::Scancode::CurrencyUnit as i32,
|
||||
CurrencySubUnit = sdl2::keyboard::Scancode::CurrencySubUnit as i32,
|
||||
KpLeftParen = sdl2::keyboard::Scancode::KpLeftParen as i32,
|
||||
KpRightParen = sdl2::keyboard::Scancode::KpRightParen as i32,
|
||||
KpLeftBrace = sdl2::keyboard::Scancode::KpLeftBrace as i32,
|
||||
KpRightBrace = sdl2::keyboard::Scancode::KpRightBrace as i32,
|
||||
KpTab = sdl2::keyboard::Scancode::KpTab as i32,
|
||||
KpBackspace = sdl2::keyboard::Scancode::KpBackspace as i32,
|
||||
KpA = sdl2::keyboard::Scancode::KpA as i32,
|
||||
KpB = sdl2::keyboard::Scancode::KpB as i32,
|
||||
KpC = sdl2::keyboard::Scancode::KpC as i32,
|
||||
KpD = sdl2::keyboard::Scancode::KpD as i32,
|
||||
KpE = sdl2::keyboard::Scancode::KpE as i32,
|
||||
KpF = sdl2::keyboard::Scancode::KpF as i32,
|
||||
KpXor = sdl2::keyboard::Scancode::KpXor as i32,
|
||||
KpPower = sdl2::keyboard::Scancode::KpPower as i32,
|
||||
KpPercent = sdl2::keyboard::Scancode::KpPercent as i32,
|
||||
KpLess = sdl2::keyboard::Scancode::KpLess as i32,
|
||||
KpGreater = sdl2::keyboard::Scancode::KpGreater as i32,
|
||||
KpAmpersand = sdl2::keyboard::Scancode::KpAmpersand as i32,
|
||||
KpDblAmpersand = sdl2::keyboard::Scancode::KpDblAmpersand as i32,
|
||||
KpVerticalBar = sdl2::keyboard::Scancode::KpVerticalBar as i32,
|
||||
KpDblVerticalBar = sdl2::keyboard::Scancode::KpDblVerticalBar as i32,
|
||||
KpColon = sdl2::keyboard::Scancode::KpColon as i32,
|
||||
KpHash = sdl2::keyboard::Scancode::KpHash as i32,
|
||||
KpSpace = sdl2::keyboard::Scancode::KpSpace as i32,
|
||||
KpAt = sdl2::keyboard::Scancode::KpAt as i32,
|
||||
KpExclam = sdl2::keyboard::Scancode::KpExclam as i32,
|
||||
KpMemStore = sdl2::keyboard::Scancode::KpMemStore as i32,
|
||||
KpMemRecall = sdl2::keyboard::Scancode::KpMemRecall as i32,
|
||||
KpMemClear = sdl2::keyboard::Scancode::KpMemClear as i32,
|
||||
KpMemAdd = sdl2::keyboard::Scancode::KpMemAdd as i32,
|
||||
KpMemSubtract = sdl2::keyboard::Scancode::KpMemSubtract as i32,
|
||||
KpMemMultiply = sdl2::keyboard::Scancode::KpMemMultiply as i32,
|
||||
KpMemDivide = sdl2::keyboard::Scancode::KpMemDivide as i32,
|
||||
KpPlusMinus = sdl2::keyboard::Scancode::KpPlusMinus as i32,
|
||||
KpClear = sdl2::keyboard::Scancode::KpClear as i32,
|
||||
KpClearEntry = sdl2::keyboard::Scancode::KpClearEntry as i32,
|
||||
KpBinary = sdl2::keyboard::Scancode::KpBinary as i32,
|
||||
KpOctal = sdl2::keyboard::Scancode::KpOctal as i32,
|
||||
KpDecimal = sdl2::keyboard::Scancode::KpDecimal as i32,
|
||||
KpHexadecimal = sdl2::keyboard::Scancode::KpHexadecimal as i32,
|
||||
LCtrl = sdl2::keyboard::Scancode::LCtrl as i32,
|
||||
LShift = sdl2::keyboard::Scancode::LShift as i32,
|
||||
LAlt = sdl2::keyboard::Scancode::LAlt as i32,
|
||||
LGui = sdl2::keyboard::Scancode::LGui as i32,
|
||||
RCtrl = sdl2::keyboard::Scancode::RCtrl as i32,
|
||||
RShift = sdl2::keyboard::Scancode::RShift as i32,
|
||||
RAlt = sdl2::keyboard::Scancode::RAlt as i32,
|
||||
RGui = sdl2::keyboard::Scancode::RGui as i32,
|
||||
Mode = sdl2::keyboard::Scancode::Mode as i32,
|
||||
AudioNext = sdl2::keyboard::Scancode::AudioNext as i32,
|
||||
AudioPrev = sdl2::keyboard::Scancode::AudioPrev as i32,
|
||||
AudioStop = sdl2::keyboard::Scancode::AudioStop as i32,
|
||||
AudioPlay = sdl2::keyboard::Scancode::AudioPlay as i32,
|
||||
AudioMute = sdl2::keyboard::Scancode::AudioMute as i32,
|
||||
MediaSelect = sdl2::keyboard::Scancode::MediaSelect as i32,
|
||||
Www = sdl2::keyboard::Scancode::Www as i32,
|
||||
Mail = sdl2::keyboard::Scancode::Mail as i32,
|
||||
Calculator = sdl2::keyboard::Scancode::Calculator as i32,
|
||||
Computer = sdl2::keyboard::Scancode::Computer as i32,
|
||||
AcSearch = sdl2::keyboard::Scancode::AcSearch as i32,
|
||||
AcHome = sdl2::keyboard::Scancode::AcHome as i32,
|
||||
AcBack = sdl2::keyboard::Scancode::AcBack as i32,
|
||||
AcForward = sdl2::keyboard::Scancode::AcForward as i32,
|
||||
AcStop = sdl2::keyboard::Scancode::AcStop as i32,
|
||||
AcRefresh = sdl2::keyboard::Scancode::AcRefresh as i32,
|
||||
AcBookmarks = sdl2::keyboard::Scancode::AcBookmarks as i32,
|
||||
BrightnessDown = sdl2::keyboard::Scancode::BrightnessDown as i32,
|
||||
BrightnessUp = sdl2::keyboard::Scancode::BrightnessUp as i32,
|
||||
DisplaySwitch = sdl2::keyboard::Scancode::DisplaySwitch as i32,
|
||||
KbdIllumToggle = sdl2::keyboard::Scancode::KbdIllumToggle as i32,
|
||||
KbdIllumDown = sdl2::keyboard::Scancode::KbdIllumDown as i32,
|
||||
KbdIllumUp = sdl2::keyboard::Scancode::KbdIllumUp as i32,
|
||||
Eject = sdl2::keyboard::Scancode::Eject as i32,
|
||||
Sleep = sdl2::keyboard::Scancode::Sleep as i32,
|
||||
App1 = sdl2::keyboard::Scancode::App1 as i32,
|
||||
App2 = sdl2::keyboard::Scancode::App2 as i32,
|
||||
Num = sdl2::keyboard::Scancode::Num as i32,
|
||||
}
|
||||
|
||||
impl From<sdl2::keyboard::Scancode> for Scancode {
|
||||
fn from(value: sdl2::keyboard::Scancode) -> Self {
|
||||
match value {
|
||||
sdl2::keyboard::Scancode::A => Scancode::A,
|
||||
sdl2::keyboard::Scancode::B => Scancode::B,
|
||||
sdl2::keyboard::Scancode::C => Scancode::C,
|
||||
sdl2::keyboard::Scancode::D => Scancode::D,
|
||||
sdl2::keyboard::Scancode::E => Scancode::E,
|
||||
sdl2::keyboard::Scancode::F => Scancode::F,
|
||||
sdl2::keyboard::Scancode::G => Scancode::G,
|
||||
sdl2::keyboard::Scancode::H => Scancode::H,
|
||||
sdl2::keyboard::Scancode::I => Scancode::I,
|
||||
sdl2::keyboard::Scancode::J => Scancode::J,
|
||||
sdl2::keyboard::Scancode::K => Scancode::K,
|
||||
sdl2::keyboard::Scancode::L => Scancode::L,
|
||||
sdl2::keyboard::Scancode::M => Scancode::M,
|
||||
sdl2::keyboard::Scancode::N => Scancode::N,
|
||||
sdl2::keyboard::Scancode::O => Scancode::O,
|
||||
sdl2::keyboard::Scancode::P => Scancode::P,
|
||||
sdl2::keyboard::Scancode::Q => Scancode::Q,
|
||||
sdl2::keyboard::Scancode::R => Scancode::R,
|
||||
sdl2::keyboard::Scancode::S => Scancode::S,
|
||||
sdl2::keyboard::Scancode::T => Scancode::T,
|
||||
sdl2::keyboard::Scancode::U => Scancode::U,
|
||||
sdl2::keyboard::Scancode::V => Scancode::V,
|
||||
sdl2::keyboard::Scancode::W => Scancode::W,
|
||||
sdl2::keyboard::Scancode::X => Scancode::X,
|
||||
sdl2::keyboard::Scancode::Y => Scancode::Y,
|
||||
sdl2::keyboard::Scancode::Z => Scancode::Z,
|
||||
sdl2::keyboard::Scancode::Num1 => Scancode::Num1,
|
||||
sdl2::keyboard::Scancode::Num2 => Scancode::Num2,
|
||||
sdl2::keyboard::Scancode::Num3 => Scancode::Num3,
|
||||
sdl2::keyboard::Scancode::Num4 => Scancode::Num4,
|
||||
sdl2::keyboard::Scancode::Num5 => Scancode::Num5,
|
||||
sdl2::keyboard::Scancode::Num6 => Scancode::Num6,
|
||||
sdl2::keyboard::Scancode::Num7 => Scancode::Num7,
|
||||
sdl2::keyboard::Scancode::Num8 => Scancode::Num8,
|
||||
sdl2::keyboard::Scancode::Num9 => Scancode::Num9,
|
||||
sdl2::keyboard::Scancode::Num0 => Scancode::Num0,
|
||||
sdl2::keyboard::Scancode::Return => Scancode::Return,
|
||||
sdl2::keyboard::Scancode::Escape => Scancode::Escape,
|
||||
sdl2::keyboard::Scancode::Backspace => Scancode::Backspace,
|
||||
sdl2::keyboard::Scancode::Tab => Scancode::Tab,
|
||||
sdl2::keyboard::Scancode::Space => Scancode::Space,
|
||||
sdl2::keyboard::Scancode::Minus => Scancode::Minus,
|
||||
sdl2::keyboard::Scancode::Equals => Scancode::Equals,
|
||||
sdl2::keyboard::Scancode::LeftBracket => Scancode::LeftBracket,
|
||||
sdl2::keyboard::Scancode::RightBracket => Scancode::RightBracket,
|
||||
sdl2::keyboard::Scancode::Backslash => Scancode::Backslash,
|
||||
sdl2::keyboard::Scancode::NonUsHash => Scancode::NonUsHash,
|
||||
sdl2::keyboard::Scancode::Semicolon => Scancode::Semicolon,
|
||||
sdl2::keyboard::Scancode::Apostrophe => Scancode::Apostrophe,
|
||||
sdl2::keyboard::Scancode::Grave => Scancode::Grave,
|
||||
sdl2::keyboard::Scancode::Comma => Scancode::Comma,
|
||||
sdl2::keyboard::Scancode::Period => Scancode::Period,
|
||||
sdl2::keyboard::Scancode::Slash => Scancode::Slash,
|
||||
sdl2::keyboard::Scancode::CapsLock => Scancode::CapsLock,
|
||||
sdl2::keyboard::Scancode::F1 => Scancode::F1,
|
||||
sdl2::keyboard::Scancode::F2 => Scancode::F2,
|
||||
sdl2::keyboard::Scancode::F3 => Scancode::F3,
|
||||
sdl2::keyboard::Scancode::F4 => Scancode::F4,
|
||||
sdl2::keyboard::Scancode::F5 => Scancode::F5,
|
||||
sdl2::keyboard::Scancode::F6 => Scancode::F6,
|
||||
sdl2::keyboard::Scancode::F7 => Scancode::F7,
|
||||
sdl2::keyboard::Scancode::F8 => Scancode::F8,
|
||||
sdl2::keyboard::Scancode::F9 => Scancode::F9,
|
||||
sdl2::keyboard::Scancode::F10 => Scancode::F10,
|
||||
sdl2::keyboard::Scancode::F11 => Scancode::F11,
|
||||
sdl2::keyboard::Scancode::F12 => Scancode::F12,
|
||||
sdl2::keyboard::Scancode::PrintScreen => Scancode::PrintScreen,
|
||||
sdl2::keyboard::Scancode::ScrollLock => Scancode::ScrollLock,
|
||||
sdl2::keyboard::Scancode::Pause => Scancode::Pause,
|
||||
sdl2::keyboard::Scancode::Insert => Scancode::Insert,
|
||||
sdl2::keyboard::Scancode::Home => Scancode::Home,
|
||||
sdl2::keyboard::Scancode::PageUp => Scancode::PageUp,
|
||||
sdl2::keyboard::Scancode::Delete => Scancode::Delete,
|
||||
sdl2::keyboard::Scancode::End => Scancode::End,
|
||||
sdl2::keyboard::Scancode::PageDown => Scancode::PageDown,
|
||||
sdl2::keyboard::Scancode::Right => Scancode::Right,
|
||||
sdl2::keyboard::Scancode::Left => Scancode::Left,
|
||||
sdl2::keyboard::Scancode::Down => Scancode::Down,
|
||||
sdl2::keyboard::Scancode::Up => Scancode::Up,
|
||||
sdl2::keyboard::Scancode::NumLockClear => Scancode::NumLockClear,
|
||||
sdl2::keyboard::Scancode::KpDivide => Scancode::KpDivide,
|
||||
sdl2::keyboard::Scancode::KpMultiply => Scancode::KpMultiply,
|
||||
sdl2::keyboard::Scancode::KpMinus => Scancode::KpMinus,
|
||||
sdl2::keyboard::Scancode::KpPlus => Scancode::KpPlus,
|
||||
sdl2::keyboard::Scancode::KpEnter => Scancode::KpEnter,
|
||||
sdl2::keyboard::Scancode::Kp1 => Scancode::Kp1,
|
||||
sdl2::keyboard::Scancode::Kp2 => Scancode::Kp2,
|
||||
sdl2::keyboard::Scancode::Kp3 => Scancode::Kp3,
|
||||
sdl2::keyboard::Scancode::Kp4 => Scancode::Kp4,
|
||||
sdl2::keyboard::Scancode::Kp5 => Scancode::Kp5,
|
||||
sdl2::keyboard::Scancode::Kp6 => Scancode::Kp6,
|
||||
sdl2::keyboard::Scancode::Kp7 => Scancode::Kp7,
|
||||
sdl2::keyboard::Scancode::Kp8 => Scancode::Kp8,
|
||||
sdl2::keyboard::Scancode::Kp9 => Scancode::Kp9,
|
||||
sdl2::keyboard::Scancode::Kp0 => Scancode::Kp0,
|
||||
sdl2::keyboard::Scancode::KpPeriod => Scancode::KpPeriod,
|
||||
sdl2::keyboard::Scancode::NonUsBackslash => Scancode::NonUsBackslash,
|
||||
sdl2::keyboard::Scancode::Application => Scancode::Application,
|
||||
sdl2::keyboard::Scancode::Power => Scancode::Power,
|
||||
sdl2::keyboard::Scancode::KpEquals => Scancode::KpEquals,
|
||||
sdl2::keyboard::Scancode::F13 => Scancode::F13,
|
||||
sdl2::keyboard::Scancode::F14 => Scancode::F14,
|
||||
sdl2::keyboard::Scancode::F15 => Scancode::F15,
|
||||
sdl2::keyboard::Scancode::F16 => Scancode::F16,
|
||||
sdl2::keyboard::Scancode::F17 => Scancode::F17,
|
||||
sdl2::keyboard::Scancode::F18 => Scancode::F18,
|
||||
sdl2::keyboard::Scancode::F19 => Scancode::F19,
|
||||
sdl2::keyboard::Scancode::F20 => Scancode::F20,
|
||||
sdl2::keyboard::Scancode::F21 => Scancode::F21,
|
||||
sdl2::keyboard::Scancode::F22 => Scancode::F22,
|
||||
sdl2::keyboard::Scancode::F23 => Scancode::F23,
|
||||
sdl2::keyboard::Scancode::F24 => Scancode::F24,
|
||||
sdl2::keyboard::Scancode::Execute => Scancode::Execute,
|
||||
sdl2::keyboard::Scancode::Help => Scancode::Help,
|
||||
sdl2::keyboard::Scancode::Menu => Scancode::Menu,
|
||||
sdl2::keyboard::Scancode::Select => Scancode::Select,
|
||||
sdl2::keyboard::Scancode::Stop => Scancode::Stop,
|
||||
sdl2::keyboard::Scancode::Again => Scancode::Again,
|
||||
sdl2::keyboard::Scancode::Undo => Scancode::Undo,
|
||||
sdl2::keyboard::Scancode::Cut => Scancode::Cut,
|
||||
sdl2::keyboard::Scancode::Copy => Scancode::Copy,
|
||||
sdl2::keyboard::Scancode::Paste => Scancode::Paste,
|
||||
sdl2::keyboard::Scancode::Find => Scancode::Find,
|
||||
sdl2::keyboard::Scancode::Mute => Scancode::Mute,
|
||||
sdl2::keyboard::Scancode::VolumeUp => Scancode::VolumeUp,
|
||||
sdl2::keyboard::Scancode::VolumeDown => Scancode::VolumeDown,
|
||||
sdl2::keyboard::Scancode::KpComma => Scancode::KpComma,
|
||||
sdl2::keyboard::Scancode::KpEqualsAS400 => Scancode::KpEqualsAS400,
|
||||
sdl2::keyboard::Scancode::International1 => Scancode::International1,
|
||||
sdl2::keyboard::Scancode::International2 => Scancode::International2,
|
||||
sdl2::keyboard::Scancode::International3 => Scancode::International3,
|
||||
sdl2::keyboard::Scancode::International4 => Scancode::International4,
|
||||
sdl2::keyboard::Scancode::International5 => Scancode::International5,
|
||||
sdl2::keyboard::Scancode::International6 => Scancode::International6,
|
||||
sdl2::keyboard::Scancode::International7 => Scancode::International7,
|
||||
sdl2::keyboard::Scancode::International8 => Scancode::International8,
|
||||
sdl2::keyboard::Scancode::International9 => Scancode::International9,
|
||||
sdl2::keyboard::Scancode::Lang1 => Scancode::Lang1,
|
||||
sdl2::keyboard::Scancode::Lang2 => Scancode::Lang2,
|
||||
sdl2::keyboard::Scancode::Lang3 => Scancode::Lang3,
|
||||
sdl2::keyboard::Scancode::Lang4 => Scancode::Lang4,
|
||||
sdl2::keyboard::Scancode::Lang5 => Scancode::Lang5,
|
||||
sdl2::keyboard::Scancode::Lang6 => Scancode::Lang6,
|
||||
sdl2::keyboard::Scancode::Lang7 => Scancode::Lang7,
|
||||
sdl2::keyboard::Scancode::Lang8 => Scancode::Lang8,
|
||||
sdl2::keyboard::Scancode::Lang9 => Scancode::Lang9,
|
||||
sdl2::keyboard::Scancode::AltErase => Scancode::AltErase,
|
||||
sdl2::keyboard::Scancode::SysReq => Scancode::SysReq,
|
||||
sdl2::keyboard::Scancode::Cancel => Scancode::Cancel,
|
||||
sdl2::keyboard::Scancode::Clear => Scancode::Clear,
|
||||
sdl2::keyboard::Scancode::Prior => Scancode::Prior,
|
||||
sdl2::keyboard::Scancode::Return2 => Scancode::Return2,
|
||||
sdl2::keyboard::Scancode::Separator => Scancode::Separator,
|
||||
sdl2::keyboard::Scancode::Out => Scancode::Out,
|
||||
sdl2::keyboard::Scancode::Oper => Scancode::Oper,
|
||||
sdl2::keyboard::Scancode::ClearAgain => Scancode::ClearAgain,
|
||||
sdl2::keyboard::Scancode::CrSel => Scancode::CrSel,
|
||||
sdl2::keyboard::Scancode::ExSel => Scancode::ExSel,
|
||||
sdl2::keyboard::Scancode::Kp00 => Scancode::Kp00,
|
||||
sdl2::keyboard::Scancode::Kp000 => Scancode::Kp000,
|
||||
sdl2::keyboard::Scancode::ThousandsSeparator => Scancode::ThousandsSeparator,
|
||||
sdl2::keyboard::Scancode::DecimalSeparator => Scancode::DecimalSeparator,
|
||||
sdl2::keyboard::Scancode::CurrencyUnit => Scancode::CurrencyUnit,
|
||||
sdl2::keyboard::Scancode::CurrencySubUnit => Scancode::CurrencySubUnit,
|
||||
sdl2::keyboard::Scancode::KpLeftParen => Scancode::KpLeftParen,
|
||||
sdl2::keyboard::Scancode::KpRightParen => Scancode::KpRightParen,
|
||||
sdl2::keyboard::Scancode::KpLeftBrace => Scancode::KpLeftBrace,
|
||||
sdl2::keyboard::Scancode::KpRightBrace => Scancode::KpRightBrace,
|
||||
sdl2::keyboard::Scancode::KpTab => Scancode::KpTab,
|
||||
sdl2::keyboard::Scancode::KpBackspace => Scancode::KpBackspace,
|
||||
sdl2::keyboard::Scancode::KpA => Scancode::KpA,
|
||||
sdl2::keyboard::Scancode::KpB => Scancode::KpB,
|
||||
sdl2::keyboard::Scancode::KpC => Scancode::KpC,
|
||||
sdl2::keyboard::Scancode::KpD => Scancode::KpD,
|
||||
sdl2::keyboard::Scancode::KpE => Scancode::KpE,
|
||||
sdl2::keyboard::Scancode::KpF => Scancode::KpF,
|
||||
sdl2::keyboard::Scancode::KpXor => Scancode::KpXor,
|
||||
sdl2::keyboard::Scancode::KpPower => Scancode::KpPower,
|
||||
sdl2::keyboard::Scancode::KpPercent => Scancode::KpPercent,
|
||||
sdl2::keyboard::Scancode::KpLess => Scancode::KpLess,
|
||||
sdl2::keyboard::Scancode::KpGreater => Scancode::KpGreater,
|
||||
sdl2::keyboard::Scancode::KpAmpersand => Scancode::KpAmpersand,
|
||||
sdl2::keyboard::Scancode::KpDblAmpersand => Scancode::KpDblAmpersand,
|
||||
sdl2::keyboard::Scancode::KpVerticalBar => Scancode::KpVerticalBar,
|
||||
sdl2::keyboard::Scancode::KpDblVerticalBar => Scancode::KpDblVerticalBar,
|
||||
sdl2::keyboard::Scancode::KpColon => Scancode::KpColon,
|
||||
sdl2::keyboard::Scancode::KpHash => Scancode::KpHash,
|
||||
sdl2::keyboard::Scancode::KpSpace => Scancode::KpSpace,
|
||||
sdl2::keyboard::Scancode::KpAt => Scancode::KpAt,
|
||||
sdl2::keyboard::Scancode::KpExclam => Scancode::KpExclam,
|
||||
sdl2::keyboard::Scancode::KpMemStore => Scancode::KpMemStore,
|
||||
sdl2::keyboard::Scancode::KpMemRecall => Scancode::KpMemRecall,
|
||||
sdl2::keyboard::Scancode::KpMemClear => Scancode::KpMemClear,
|
||||
sdl2::keyboard::Scancode::KpMemAdd => Scancode::KpMemAdd,
|
||||
sdl2::keyboard::Scancode::KpMemSubtract => Scancode::KpMemSubtract,
|
||||
sdl2::keyboard::Scancode::KpMemMultiply => Scancode::KpMemMultiply,
|
||||
sdl2::keyboard::Scancode::KpMemDivide => Scancode::KpMemDivide,
|
||||
sdl2::keyboard::Scancode::KpPlusMinus => Scancode::KpPlusMinus,
|
||||
sdl2::keyboard::Scancode::KpClear => Scancode::KpClear,
|
||||
sdl2::keyboard::Scancode::KpClearEntry => Scancode::KpClearEntry,
|
||||
sdl2::keyboard::Scancode::KpBinary => Scancode::KpBinary,
|
||||
sdl2::keyboard::Scancode::KpOctal => Scancode::KpOctal,
|
||||
sdl2::keyboard::Scancode::KpDecimal => Scancode::KpDecimal,
|
||||
sdl2::keyboard::Scancode::KpHexadecimal => Scancode::KpHexadecimal,
|
||||
sdl2::keyboard::Scancode::LCtrl => Scancode::LCtrl,
|
||||
sdl2::keyboard::Scancode::LShift => Scancode::LShift,
|
||||
sdl2::keyboard::Scancode::LAlt => Scancode::LAlt,
|
||||
sdl2::keyboard::Scancode::LGui => Scancode::LGui,
|
||||
sdl2::keyboard::Scancode::RCtrl => Scancode::RCtrl,
|
||||
sdl2::keyboard::Scancode::RShift => Scancode::RShift,
|
||||
sdl2::keyboard::Scancode::RAlt => Scancode::RAlt,
|
||||
sdl2::keyboard::Scancode::RGui => Scancode::RGui,
|
||||
sdl2::keyboard::Scancode::Mode => Scancode::Mode,
|
||||
sdl2::keyboard::Scancode::AudioNext => Scancode::AudioNext,
|
||||
sdl2::keyboard::Scancode::AudioPrev => Scancode::AudioPrev,
|
||||
sdl2::keyboard::Scancode::AudioStop => Scancode::AudioStop,
|
||||
sdl2::keyboard::Scancode::AudioPlay => Scancode::AudioPlay,
|
||||
sdl2::keyboard::Scancode::AudioMute => Scancode::AudioMute,
|
||||
sdl2::keyboard::Scancode::MediaSelect => Scancode::MediaSelect,
|
||||
sdl2::keyboard::Scancode::Www => Scancode::Www,
|
||||
sdl2::keyboard::Scancode::Mail => Scancode::Mail,
|
||||
sdl2::keyboard::Scancode::Calculator => Scancode::Calculator,
|
||||
sdl2::keyboard::Scancode::Computer => Scancode::Computer,
|
||||
sdl2::keyboard::Scancode::AcSearch => Scancode::AcSearch,
|
||||
sdl2::keyboard::Scancode::AcHome => Scancode::AcHome,
|
||||
sdl2::keyboard::Scancode::AcBack => Scancode::AcBack,
|
||||
sdl2::keyboard::Scancode::AcForward => Scancode::AcForward,
|
||||
sdl2::keyboard::Scancode::AcStop => Scancode::AcStop,
|
||||
sdl2::keyboard::Scancode::AcRefresh => Scancode::AcRefresh,
|
||||
sdl2::keyboard::Scancode::AcBookmarks => Scancode::AcBookmarks,
|
||||
sdl2::keyboard::Scancode::BrightnessDown => Scancode::BrightnessDown,
|
||||
sdl2::keyboard::Scancode::BrightnessUp => Scancode::BrightnessUp,
|
||||
sdl2::keyboard::Scancode::DisplaySwitch => Scancode::DisplaySwitch,
|
||||
sdl2::keyboard::Scancode::KbdIllumToggle => Scancode::KbdIllumToggle,
|
||||
sdl2::keyboard::Scancode::KbdIllumDown => Scancode::KbdIllumDown,
|
||||
sdl2::keyboard::Scancode::KbdIllumUp => Scancode::KbdIllumUp,
|
||||
sdl2::keyboard::Scancode::Eject => Scancode::Eject,
|
||||
sdl2::keyboard::Scancode::Sleep => Scancode::Sleep,
|
||||
sdl2::keyboard::Scancode::App1 => Scancode::App1,
|
||||
sdl2::keyboard::Scancode::App2 => Scancode::App2,
|
||||
sdl2::keyboard::Scancode::Num => Scancode::Num,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
use sdl2::event::Event;
|
||||
use crate::system::SystemEvent;
|
||||
|
||||
pub mod keyboard;
|
||||
pub mod mouse;
|
||||
|
@ -18,10 +18,8 @@ pub trait InputDevice {
|
|||
/// input events have been processed via `handle_event`.
|
||||
fn update(&mut self);
|
||||
|
||||
/// Processes the data from the given [`Event`] if it is relevant for this input device. You
|
||||
/// should pass in all events received every frame and let the input device figure out if it
|
||||
/// Processes the data from the given [`SystemEvent`] if it is relevant for this input device.
|
||||
/// You should pass in all events received every frame and let the input device figure out if it
|
||||
/// is relevant to it or not.
|
||||
///
|
||||
/// [`Event`]: sdl2::event::Event
|
||||
fn handle_event(&mut self, event: &Event);
|
||||
fn handle_event(&mut self, event: &SystemEvent);
|
||||
}
|
||||
|
|
35
libretrogd/src/system/input_devices/mouse/buttons.rs
Normal file
35
libretrogd/src/system/input_devices/mouse/buttons.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
use bitflags::bitflags;
|
||||
|
||||
bitflags! {
|
||||
pub struct MouseButtons: u32 {
|
||||
const LEFT_BUTTON = sdl2::mouse::MouseButton::Left as u32;
|
||||
const MIDDLE_BUTTON = sdl2::mouse::MouseButton::Middle as u32;
|
||||
const RIGHT_BUTTON = sdl2::mouse::MouseButton::Right as u32;
|
||||
const X1 = sdl2::mouse::MouseButton::X1 as u32;
|
||||
const X2 = sdl2::mouse::MouseButton::X2 as u32;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
|
||||
#[repr(u8)]
|
||||
pub enum MouseButton {
|
||||
Unknown = 0,
|
||||
Left = sdl2::mouse::MouseButton::Left as u8,
|
||||
Middle = sdl2::mouse::MouseButton::Middle as u8,
|
||||
Right = sdl2::mouse::MouseButton::Right as u8,
|
||||
X1 = sdl2::mouse::MouseButton::X1 as u8,
|
||||
X2 = sdl2::mouse::MouseButton::X2 as u8,
|
||||
}
|
||||
|
||||
impl From<sdl2::mouse::MouseButton> for MouseButton {
|
||||
fn from(value: sdl2::mouse::MouseButton) -> Self {
|
||||
match value {
|
||||
sdl2::mouse::MouseButton::Unknown => MouseButton::Unknown,
|
||||
sdl2::mouse::MouseButton::Left => MouseButton::Left,
|
||||
sdl2::mouse::MouseButton::Middle => MouseButton::Middle,
|
||||
sdl2::mouse::MouseButton::Right => MouseButton::Right,
|
||||
sdl2::mouse::MouseButton::X1 => MouseButton::X1,
|
||||
sdl2::mouse::MouseButton::X2 => MouseButton::X2
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +1,13 @@
|
|||
use sdl2::event::Event;
|
||||
|
||||
use crate::graphics::*;
|
||||
use crate::math::*;
|
||||
use crate::system::MouseEvent;
|
||||
|
||||
use super::*;
|
||||
|
||||
pub use self::buttons::*;
|
||||
|
||||
pub mod buttons;
|
||||
|
||||
const MAX_BUTTONS: usize = 32;
|
||||
|
||||
const DEFAULT_MOUSE_CURSOR_HOTSPOT_X: u32 = 0;
|
||||
|
@ -187,7 +190,7 @@ impl Mouse {
|
|||
DEFAULT_MOUSE_CURSOR_WIDTH as u32,
|
||||
DEFAULT_MOUSE_CURSOR_HEIGHT as u32,
|
||||
)
|
||||
.unwrap();
|
||||
.unwrap();
|
||||
cursor.pixels_mut().copy_from_slice(&DEFAULT_MOUSE_CURSOR);
|
||||
|
||||
let cursor_background = Bitmap::new(cursor.width(), cursor.height()).unwrap();
|
||||
|
@ -290,29 +293,31 @@ impl InputDevice for Mouse {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_event(&mut self, event: &Event) {
|
||||
fn handle_event(&mut self, event: &SystemEvent) {
|
||||
match event {
|
||||
Event::MouseMotion {
|
||||
mousestate,
|
||||
SystemEvent::Mouse(MouseEvent::MouseMotion {
|
||||
x,
|
||||
y,
|
||||
xrel,
|
||||
yrel,
|
||||
..
|
||||
} => {
|
||||
x_delta,
|
||||
y_delta,
|
||||
buttons,
|
||||
}) => {
|
||||
self.x = *x;
|
||||
self.y = *y;
|
||||
self.x_delta = *xrel;
|
||||
self.y_delta = *yrel;
|
||||
for (button, is_pressed) in mousestate.mouse_buttons() {
|
||||
self.update_button_state(button as u32, is_pressed);
|
||||
}
|
||||
self.x_delta = *x_delta;
|
||||
self.y_delta = *y_delta;
|
||||
|
||||
self.update_button_state(MouseButton::Left as u32, buttons.contains(MouseButtons::LEFT_BUTTON));
|
||||
self.update_button_state(MouseButton::Middle as u32, buttons.contains(MouseButtons::MIDDLE_BUTTON));
|
||||
self.update_button_state(MouseButton::Right as u32, buttons.contains(MouseButtons::RIGHT_BUTTON));
|
||||
self.update_button_state(MouseButton::X1 as u32, buttons.contains(MouseButtons::X1));
|
||||
self.update_button_state(MouseButton::X2 as u32, buttons.contains(MouseButtons::X2));
|
||||
}
|
||||
Event::MouseButtonDown { mouse_btn, .. } => {
|
||||
self.update_button_state(*mouse_btn as u32, true);
|
||||
SystemEvent::Mouse(MouseEvent::MouseButtonDown { button, .. }) => {
|
||||
self.update_button_state(*button as u32, true);
|
||||
}
|
||||
Event::MouseButtonUp { mouse_btn, .. } => {
|
||||
self.update_button_state(*mouse_btn as u32, false);
|
||||
SystemEvent::Mouse(MouseEvent::MouseButtonUp { button, .. }) => {
|
||||
self.update_button_state(*button as u32, false);
|
||||
}
|
||||
_ => (),
|
||||
}
|
|
@ -3,7 +3,6 @@ use std::fmt::Formatter;
|
|||
use byte_slice_cast::AsByteSlice;
|
||||
use sdl2::{AudioSubsystem, EventPump, Sdl, TimerSubsystem, VideoSubsystem};
|
||||
use sdl2::audio::AudioSpecDesired;
|
||||
use sdl2::event::Event;
|
||||
use sdl2::pixels::PixelFormatEnum;
|
||||
use sdl2::render::{Texture, WindowCanvas};
|
||||
use thiserror::Error;
|
||||
|
@ -12,10 +11,12 @@ use crate::{DEFAULT_SCALE_FACTOR, SCREEN_HEIGHT, SCREEN_WIDTH};
|
|||
use crate::audio::*;
|
||||
use crate::graphics::*;
|
||||
|
||||
pub use self::event::*;
|
||||
pub use self::input_devices::*;
|
||||
pub use self::input_devices::keyboard::*;
|
||||
pub use self::input_devices::mouse::*;
|
||||
|
||||
pub mod event;
|
||||
pub mod input_devices;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
|
@ -423,15 +424,17 @@ impl System {
|
|||
/// your application to also react to any events received.
|
||||
pub fn do_events_with<F>(&mut self, mut f: F)
|
||||
where
|
||||
F: FnMut(&Event),
|
||||
F: FnMut(&SystemEvent),
|
||||
{
|
||||
self.keyboard.update();
|
||||
self.mouse.update();
|
||||
self.sdl_event_pump.pump_events();
|
||||
for event in self.sdl_event_pump.poll_iter() {
|
||||
self.keyboard.handle_event(&event);
|
||||
self.mouse.handle_event(&event);
|
||||
f(&event);
|
||||
if let Ok(event) = event.try_into() {
|
||||
self.keyboard.handle_event(&event);
|
||||
self.mouse.handle_event(&event);
|
||||
f(&event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue