From 7760174d7fcd2faeedf464d8d9a2a471bd6b21bf Mon Sep 17 00:00:00 2001 From: Rismosch Desktop Date: Mon, 6 Oct 2025 19:15:37 +0200 Subject: [PATCH] fixed the invalid scancode transmute --- src/sdl2/keyboard/scancode.rs | 486 +++++++++++++++++----------------- 1 file changed, 243 insertions(+), 243 deletions(-) diff --git a/src/sdl2/keyboard/scancode.rs b/src/sdl2/keyboard/scancode.rs index 820f2e3f41..050a88cb41 100644 --- a/src/sdl2/keyboard/scancode.rs +++ b/src/sdl2/keyboard/scancode.rs @@ -255,251 +255,251 @@ pub enum Scancode { impl Scancode { pub fn from_i32(n: i32) -> Option { + use self::SDL_Scancode::*; use self::Scancode::*; - let n = n as u32; - Some(match unsafe { transmute::(n) } { - SDL_Scancode::SDL_SCANCODE_A => A, - SDL_Scancode::SDL_SCANCODE_B => B, - SDL_Scancode::SDL_SCANCODE_C => C, - SDL_Scancode::SDL_SCANCODE_D => D, - SDL_Scancode::SDL_SCANCODE_E => E, - SDL_Scancode::SDL_SCANCODE_F => F, - SDL_Scancode::SDL_SCANCODE_G => G, - SDL_Scancode::SDL_SCANCODE_H => H, - SDL_Scancode::SDL_SCANCODE_I => I, - SDL_Scancode::SDL_SCANCODE_J => J, - SDL_Scancode::SDL_SCANCODE_K => K, - SDL_Scancode::SDL_SCANCODE_L => L, - SDL_Scancode::SDL_SCANCODE_M => M, - SDL_Scancode::SDL_SCANCODE_N => N, - SDL_Scancode::SDL_SCANCODE_O => O, - SDL_Scancode::SDL_SCANCODE_P => P, - SDL_Scancode::SDL_SCANCODE_Q => Q, - SDL_Scancode::SDL_SCANCODE_R => R, - SDL_Scancode::SDL_SCANCODE_S => S, - SDL_Scancode::SDL_SCANCODE_T => T, - SDL_Scancode::SDL_SCANCODE_U => U, - SDL_Scancode::SDL_SCANCODE_V => V, - SDL_Scancode::SDL_SCANCODE_W => W, - SDL_Scancode::SDL_SCANCODE_X => X, - SDL_Scancode::SDL_SCANCODE_Y => Y, - SDL_Scancode::SDL_SCANCODE_Z => Z, - SDL_Scancode::SDL_SCANCODE_1 => Num1, - SDL_Scancode::SDL_SCANCODE_2 => Num2, - SDL_Scancode::SDL_SCANCODE_3 => Num3, - SDL_Scancode::SDL_SCANCODE_4 => Num4, - SDL_Scancode::SDL_SCANCODE_5 => Num5, - SDL_Scancode::SDL_SCANCODE_6 => Num6, - SDL_Scancode::SDL_SCANCODE_7 => Num7, - SDL_Scancode::SDL_SCANCODE_8 => Num8, - SDL_Scancode::SDL_SCANCODE_9 => Num9, - SDL_Scancode::SDL_SCANCODE_0 => Num0, - SDL_Scancode::SDL_SCANCODE_RETURN => Return, - SDL_Scancode::SDL_SCANCODE_ESCAPE => Escape, - SDL_Scancode::SDL_SCANCODE_BACKSPACE => Backspace, - SDL_Scancode::SDL_SCANCODE_TAB => Tab, - SDL_Scancode::SDL_SCANCODE_SPACE => Space, - SDL_Scancode::SDL_SCANCODE_MINUS => Minus, - SDL_Scancode::SDL_SCANCODE_EQUALS => Equals, - SDL_Scancode::SDL_SCANCODE_LEFTBRACKET => LeftBracket, - SDL_Scancode::SDL_SCANCODE_RIGHTBRACKET => RightBracket, - SDL_Scancode::SDL_SCANCODE_BACKSLASH => Backslash, - SDL_Scancode::SDL_SCANCODE_NONUSHASH => NonUsHash, - SDL_Scancode::SDL_SCANCODE_SEMICOLON => Semicolon, - SDL_Scancode::SDL_SCANCODE_APOSTROPHE => Apostrophe, - SDL_Scancode::SDL_SCANCODE_GRAVE => Grave, - SDL_Scancode::SDL_SCANCODE_COMMA => Comma, - SDL_Scancode::SDL_SCANCODE_PERIOD => Period, - SDL_Scancode::SDL_SCANCODE_SLASH => Slash, - SDL_Scancode::SDL_SCANCODE_CAPSLOCK => CapsLock, - SDL_Scancode::SDL_SCANCODE_F1 => F1, - SDL_Scancode::SDL_SCANCODE_F2 => F2, - SDL_Scancode::SDL_SCANCODE_F3 => F3, - SDL_Scancode::SDL_SCANCODE_F4 => F4, - SDL_Scancode::SDL_SCANCODE_F5 => F5, - SDL_Scancode::SDL_SCANCODE_F6 => F6, - SDL_Scancode::SDL_SCANCODE_F7 => F7, - SDL_Scancode::SDL_SCANCODE_F8 => F8, - SDL_Scancode::SDL_SCANCODE_F9 => F9, - SDL_Scancode::SDL_SCANCODE_F10 => F10, - SDL_Scancode::SDL_SCANCODE_F11 => F11, - SDL_Scancode::SDL_SCANCODE_F12 => F12, - SDL_Scancode::SDL_SCANCODE_PRINTSCREEN => PrintScreen, - SDL_Scancode::SDL_SCANCODE_SCROLLLOCK => ScrollLock, - SDL_Scancode::SDL_SCANCODE_PAUSE => Pause, - SDL_Scancode::SDL_SCANCODE_INSERT => Insert, - SDL_Scancode::SDL_SCANCODE_HOME => Home, - SDL_Scancode::SDL_SCANCODE_PAGEUP => PageUp, - SDL_Scancode::SDL_SCANCODE_DELETE => Delete, - SDL_Scancode::SDL_SCANCODE_END => End, - SDL_Scancode::SDL_SCANCODE_PAGEDOWN => PageDown, - SDL_Scancode::SDL_SCANCODE_RIGHT => Right, - SDL_Scancode::SDL_SCANCODE_LEFT => Left, - SDL_Scancode::SDL_SCANCODE_DOWN => Down, - SDL_Scancode::SDL_SCANCODE_UP => Up, - SDL_Scancode::SDL_SCANCODE_NUMLOCKCLEAR => NumLockClear, - SDL_Scancode::SDL_SCANCODE_KP_DIVIDE => KpDivide, - SDL_Scancode::SDL_SCANCODE_KP_MULTIPLY => KpMultiply, - SDL_Scancode::SDL_SCANCODE_KP_MINUS => KpMinus, - SDL_Scancode::SDL_SCANCODE_KP_PLUS => KpPlus, - SDL_Scancode::SDL_SCANCODE_KP_ENTER => KpEnter, - SDL_Scancode::SDL_SCANCODE_KP_1 => Kp1, - SDL_Scancode::SDL_SCANCODE_KP_2 => Kp2, - SDL_Scancode::SDL_SCANCODE_KP_3 => Kp3, - SDL_Scancode::SDL_SCANCODE_KP_4 => Kp4, - SDL_Scancode::SDL_SCANCODE_KP_5 => Kp5, - SDL_Scancode::SDL_SCANCODE_KP_6 => Kp6, - SDL_Scancode::SDL_SCANCODE_KP_7 => Kp7, - SDL_Scancode::SDL_SCANCODE_KP_8 => Kp8, - SDL_Scancode::SDL_SCANCODE_KP_9 => Kp9, - SDL_Scancode::SDL_SCANCODE_KP_0 => Kp0, - SDL_Scancode::SDL_SCANCODE_KP_PERIOD => KpPeriod, - SDL_Scancode::SDL_SCANCODE_NONUSBACKSLASH => NonUsBackslash, - SDL_Scancode::SDL_SCANCODE_APPLICATION => Application, - SDL_Scancode::SDL_SCANCODE_POWER => Power, - SDL_Scancode::SDL_SCANCODE_KP_EQUALS => KpEquals, - SDL_Scancode::SDL_SCANCODE_F13 => F13, - SDL_Scancode::SDL_SCANCODE_F14 => F14, - SDL_Scancode::SDL_SCANCODE_F15 => F15, - SDL_Scancode::SDL_SCANCODE_F16 => F16, - SDL_Scancode::SDL_SCANCODE_F17 => F17, - SDL_Scancode::SDL_SCANCODE_F18 => F18, - SDL_Scancode::SDL_SCANCODE_F19 => F19, - SDL_Scancode::SDL_SCANCODE_F20 => F20, - SDL_Scancode::SDL_SCANCODE_F21 => F21, - SDL_Scancode::SDL_SCANCODE_F22 => F22, - SDL_Scancode::SDL_SCANCODE_F23 => F23, - SDL_Scancode::SDL_SCANCODE_F24 => F24, - SDL_Scancode::SDL_SCANCODE_EXECUTE => Execute, - SDL_Scancode::SDL_SCANCODE_HELP => Help, - SDL_Scancode::SDL_SCANCODE_MENU => Menu, - SDL_Scancode::SDL_SCANCODE_SELECT => Select, - SDL_Scancode::SDL_SCANCODE_STOP => Stop, - SDL_Scancode::SDL_SCANCODE_AGAIN => Again, - SDL_Scancode::SDL_SCANCODE_UNDO => Undo, - SDL_Scancode::SDL_SCANCODE_CUT => Cut, - SDL_Scancode::SDL_SCANCODE_COPY => Copy, - SDL_Scancode::SDL_SCANCODE_PASTE => Paste, - SDL_Scancode::SDL_SCANCODE_FIND => Find, - SDL_Scancode::SDL_SCANCODE_MUTE => Mute, - SDL_Scancode::SDL_SCANCODE_VOLUMEUP => VolumeUp, - SDL_Scancode::SDL_SCANCODE_VOLUMEDOWN => VolumeDown, - SDL_Scancode::SDL_SCANCODE_KP_COMMA => KpComma, - SDL_Scancode::SDL_SCANCODE_KP_EQUALSAS400 => KpEqualsAS400, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL1 => International1, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL2 => International2, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL3 => International3, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL4 => International4, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL5 => International5, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL6 => International6, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL7 => International7, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL8 => International8, - SDL_Scancode::SDL_SCANCODE_INTERNATIONAL9 => International9, - SDL_Scancode::SDL_SCANCODE_LANG1 => Lang1, - SDL_Scancode::SDL_SCANCODE_LANG2 => Lang2, - SDL_Scancode::SDL_SCANCODE_LANG3 => Lang3, - SDL_Scancode::SDL_SCANCODE_LANG4 => Lang4, - SDL_Scancode::SDL_SCANCODE_LANG5 => Lang5, - SDL_Scancode::SDL_SCANCODE_LANG6 => Lang6, - SDL_Scancode::SDL_SCANCODE_LANG7 => Lang7, - SDL_Scancode::SDL_SCANCODE_LANG8 => Lang8, - SDL_Scancode::SDL_SCANCODE_LANG9 => Lang9, - SDL_Scancode::SDL_SCANCODE_ALTERASE => AltErase, - SDL_Scancode::SDL_SCANCODE_SYSREQ => SysReq, - SDL_Scancode::SDL_SCANCODE_CANCEL => Cancel, - SDL_Scancode::SDL_SCANCODE_CLEAR => Clear, - SDL_Scancode::SDL_SCANCODE_PRIOR => Prior, - SDL_Scancode::SDL_SCANCODE_RETURN2 => Return2, - SDL_Scancode::SDL_SCANCODE_SEPARATOR => Separator, - SDL_Scancode::SDL_SCANCODE_OUT => Out, - SDL_Scancode::SDL_SCANCODE_OPER => Oper, - SDL_Scancode::SDL_SCANCODE_CLEARAGAIN => ClearAgain, - SDL_Scancode::SDL_SCANCODE_CRSEL => CrSel, - SDL_Scancode::SDL_SCANCODE_EXSEL => ExSel, - SDL_Scancode::SDL_SCANCODE_KP_00 => Kp00, - SDL_Scancode::SDL_SCANCODE_KP_000 => Kp000, - SDL_Scancode::SDL_SCANCODE_THOUSANDSSEPARATOR => ThousandsSeparator, - SDL_Scancode::SDL_SCANCODE_DECIMALSEPARATOR => DecimalSeparator, - SDL_Scancode::SDL_SCANCODE_CURRENCYUNIT => CurrencyUnit, - SDL_Scancode::SDL_SCANCODE_CURRENCYSUBUNIT => CurrencySubUnit, - SDL_Scancode::SDL_SCANCODE_KP_LEFTPAREN => KpLeftParen, - SDL_Scancode::SDL_SCANCODE_KP_RIGHTPAREN => KpRightParen, - SDL_Scancode::SDL_SCANCODE_KP_LEFTBRACE => KpLeftBrace, - SDL_Scancode::SDL_SCANCODE_KP_RIGHTBRACE => KpRightBrace, - SDL_Scancode::SDL_SCANCODE_KP_TAB => KpTab, - SDL_Scancode::SDL_SCANCODE_KP_BACKSPACE => KpBackspace, - SDL_Scancode::SDL_SCANCODE_KP_A => KpA, - SDL_Scancode::SDL_SCANCODE_KP_B => KpB, - SDL_Scancode::SDL_SCANCODE_KP_C => KpC, - SDL_Scancode::SDL_SCANCODE_KP_D => KpD, - SDL_Scancode::SDL_SCANCODE_KP_E => KpE, - SDL_Scancode::SDL_SCANCODE_KP_F => KpF, - SDL_Scancode::SDL_SCANCODE_KP_XOR => KpXor, - SDL_Scancode::SDL_SCANCODE_KP_POWER => KpPower, - SDL_Scancode::SDL_SCANCODE_KP_PERCENT => KpPercent, - SDL_Scancode::SDL_SCANCODE_KP_LESS => KpLess, - SDL_Scancode::SDL_SCANCODE_KP_GREATER => KpGreater, - SDL_Scancode::SDL_SCANCODE_KP_AMPERSAND => KpAmpersand, - SDL_Scancode::SDL_SCANCODE_KP_DBLAMPERSAND => KpDblAmpersand, - SDL_Scancode::SDL_SCANCODE_KP_VERTICALBAR => KpVerticalBar, - SDL_Scancode::SDL_SCANCODE_KP_DBLVERTICALBAR => KpDblVerticalBar, - SDL_Scancode::SDL_SCANCODE_KP_COLON => KpColon, - SDL_Scancode::SDL_SCANCODE_KP_HASH => KpHash, - SDL_Scancode::SDL_SCANCODE_KP_SPACE => KpSpace, - SDL_Scancode::SDL_SCANCODE_KP_AT => KpAt, - SDL_Scancode::SDL_SCANCODE_KP_EXCLAM => KpExclam, - SDL_Scancode::SDL_SCANCODE_KP_MEMSTORE => KpMemStore, - SDL_Scancode::SDL_SCANCODE_KP_MEMRECALL => KpMemRecall, - SDL_Scancode::SDL_SCANCODE_KP_MEMCLEAR => KpMemClear, - SDL_Scancode::SDL_SCANCODE_KP_MEMADD => KpMemAdd, - SDL_Scancode::SDL_SCANCODE_KP_MEMSUBTRACT => KpMemSubtract, - SDL_Scancode::SDL_SCANCODE_KP_MEMMULTIPLY => KpMemMultiply, - SDL_Scancode::SDL_SCANCODE_KP_MEMDIVIDE => KpMemDivide, - SDL_Scancode::SDL_SCANCODE_KP_PLUSMINUS => KpPlusMinus, - SDL_Scancode::SDL_SCANCODE_KP_CLEAR => KpClear, - SDL_Scancode::SDL_SCANCODE_KP_CLEARENTRY => KpClearEntry, - SDL_Scancode::SDL_SCANCODE_KP_BINARY => KpBinary, - SDL_Scancode::SDL_SCANCODE_KP_OCTAL => KpOctal, - SDL_Scancode::SDL_SCANCODE_KP_DECIMAL => KpDecimal, - SDL_Scancode::SDL_SCANCODE_KP_HEXADECIMAL => KpHexadecimal, - SDL_Scancode::SDL_SCANCODE_LCTRL => LCtrl, - SDL_Scancode::SDL_SCANCODE_LSHIFT => LShift, - SDL_Scancode::SDL_SCANCODE_LALT => LAlt, - SDL_Scancode::SDL_SCANCODE_LGUI => LGui, - SDL_Scancode::SDL_SCANCODE_RCTRL => RCtrl, - SDL_Scancode::SDL_SCANCODE_RSHIFT => RShift, - SDL_Scancode::SDL_SCANCODE_RALT => RAlt, - SDL_Scancode::SDL_SCANCODE_RGUI => RGui, - SDL_Scancode::SDL_SCANCODE_MODE => Mode, - SDL_Scancode::SDL_SCANCODE_AUDIONEXT => AudioNext, - SDL_Scancode::SDL_SCANCODE_AUDIOPREV => AudioPrev, - SDL_Scancode::SDL_SCANCODE_AUDIOSTOP => AudioStop, - SDL_Scancode::SDL_SCANCODE_AUDIOPLAY => AudioPlay, - SDL_Scancode::SDL_SCANCODE_AUDIOMUTE => AudioMute, - SDL_Scancode::SDL_SCANCODE_MEDIASELECT => MediaSelect, - SDL_Scancode::SDL_SCANCODE_WWW => Www, - SDL_Scancode::SDL_SCANCODE_MAIL => Mail, - SDL_Scancode::SDL_SCANCODE_CALCULATOR => Calculator, - SDL_Scancode::SDL_SCANCODE_COMPUTER => Computer, - SDL_Scancode::SDL_SCANCODE_AC_SEARCH => AcSearch, - SDL_Scancode::SDL_SCANCODE_AC_HOME => AcHome, - SDL_Scancode::SDL_SCANCODE_AC_BACK => AcBack, - SDL_Scancode::SDL_SCANCODE_AC_FORWARD => AcForward, - SDL_Scancode::SDL_SCANCODE_AC_STOP => AcStop, - SDL_Scancode::SDL_SCANCODE_AC_REFRESH => AcRefresh, - SDL_Scancode::SDL_SCANCODE_AC_BOOKMARKS => AcBookmarks, - SDL_Scancode::SDL_SCANCODE_BRIGHTNESSDOWN => BrightnessDown, - SDL_Scancode::SDL_SCANCODE_BRIGHTNESSUP => BrightnessUp, - SDL_Scancode::SDL_SCANCODE_DISPLAYSWITCH => DisplaySwitch, - SDL_Scancode::SDL_SCANCODE_KBDILLUMTOGGLE => KbdIllumToggle, - SDL_Scancode::SDL_SCANCODE_KBDILLUMDOWN => KbdIllumDown, - SDL_Scancode::SDL_SCANCODE_KBDILLUMUP => KbdIllumUp, - SDL_Scancode::SDL_SCANCODE_EJECT => Eject, - SDL_Scancode::SDL_SCANCODE_SLEEP => Sleep, - SDL_Scancode::SDL_SCANCODE_APP1 => App1, - SDL_Scancode::SDL_SCANCODE_APP2 => App2, - SDL_Scancode::SDL_NUM_SCANCODES => Num, + Some(match n { + v if v == SDL_SCANCODE_A as i32 => A, + v if v == SDL_SCANCODE_B as i32 => B, + v if v == SDL_SCANCODE_C as i32 => C, + v if v == SDL_SCANCODE_D as i32 => D, + v if v == SDL_SCANCODE_E as i32 => E, + v if v == SDL_SCANCODE_F as i32 => F, + v if v == SDL_SCANCODE_G as i32 => G, + v if v == SDL_SCANCODE_H as i32 => H, + v if v == SDL_SCANCODE_I as i32 => I, + v if v == SDL_SCANCODE_J as i32 => J, + v if v == SDL_SCANCODE_K as i32 => K, + v if v == SDL_SCANCODE_L as i32 => L, + v if v == SDL_SCANCODE_M as i32 => M, + v if v == SDL_SCANCODE_N as i32 => N, + v if v == SDL_SCANCODE_O as i32 => O, + v if v == SDL_SCANCODE_P as i32 => P, + v if v == SDL_SCANCODE_Q as i32 => Q, + v if v == SDL_SCANCODE_R as i32 => R, + v if v == SDL_SCANCODE_S as i32 => S, + v if v == SDL_SCANCODE_T as i32 => T, + v if v == SDL_SCANCODE_U as i32 => U, + v if v == SDL_SCANCODE_V as i32 => V, + v if v == SDL_SCANCODE_W as i32 => W, + v if v == SDL_SCANCODE_X as i32 => X, + v if v == SDL_SCANCODE_Y as i32 => Y, + v if v == SDL_SCANCODE_Z as i32 => Z, + v if v == SDL_SCANCODE_1 as i32 => Num1, + v if v == SDL_SCANCODE_2 as i32 => Num2, + v if v == SDL_SCANCODE_3 as i32 => Num3, + v if v == SDL_SCANCODE_4 as i32 => Num4, + v if v == SDL_SCANCODE_5 as i32 => Num5, + v if v == SDL_SCANCODE_6 as i32 => Num6, + v if v == SDL_SCANCODE_7 as i32 => Num7, + v if v == SDL_SCANCODE_8 as i32 => Num8, + v if v == SDL_SCANCODE_9 as i32 => Num9, + v if v == SDL_SCANCODE_0 as i32 => Num0, + v if v == SDL_SCANCODE_RETURN as i32 => Return, + v if v == SDL_SCANCODE_ESCAPE as i32 => Escape, + v if v == SDL_SCANCODE_BACKSPACE as i32 => Backspace, + v if v == SDL_SCANCODE_TAB as i32 => Tab, + v if v == SDL_SCANCODE_SPACE as i32 => Space, + v if v == SDL_SCANCODE_MINUS as i32 => Minus, + v if v == SDL_SCANCODE_EQUALS as i32 => Equals, + v if v == SDL_SCANCODE_LEFTBRACKET as i32 => LeftBracket, + v if v == SDL_SCANCODE_RIGHTBRACKET as i32 => RightBracket, + v if v == SDL_SCANCODE_BACKSLASH as i32 => Backslash, + v if v == SDL_SCANCODE_NONUSHASH as i32 => NonUsHash, + v if v == SDL_SCANCODE_SEMICOLON as i32 => Semicolon, + v if v == SDL_SCANCODE_APOSTROPHE as i32 => Apostrophe, + v if v == SDL_SCANCODE_GRAVE as i32 => Grave, + v if v == SDL_SCANCODE_COMMA as i32 => Comma, + v if v == SDL_SCANCODE_PERIOD as i32 => Period, + v if v == SDL_SCANCODE_SLASH as i32 => Slash, + v if v == SDL_SCANCODE_CAPSLOCK as i32 => CapsLock, + v if v == SDL_SCANCODE_F1 as i32 => F1, + v if v == SDL_SCANCODE_F2 as i32 => F2, + v if v == SDL_SCANCODE_F3 as i32 => F3, + v if v == SDL_SCANCODE_F4 as i32 => F4, + v if v == SDL_SCANCODE_F5 as i32 => F5, + v if v == SDL_SCANCODE_F6 as i32 => F6, + v if v == SDL_SCANCODE_F7 as i32 => F7, + v if v == SDL_SCANCODE_F8 as i32 => F8, + v if v == SDL_SCANCODE_F9 as i32 => F9, + v if v == SDL_SCANCODE_F10 as i32 => F10, + v if v == SDL_SCANCODE_F11 as i32 => F11, + v if v == SDL_SCANCODE_F12 as i32 => F12, + v if v == SDL_SCANCODE_PRINTSCREEN as i32 => PrintScreen, + v if v == SDL_SCANCODE_SCROLLLOCK as i32 => ScrollLock, + v if v == SDL_SCANCODE_PAUSE as i32 => Pause, + v if v == SDL_SCANCODE_INSERT as i32 => Insert, + v if v == SDL_SCANCODE_HOME as i32 => Home, + v if v == SDL_SCANCODE_PAGEUP as i32 => PageUp, + v if v == SDL_SCANCODE_DELETE as i32 => Delete, + v if v == SDL_SCANCODE_END as i32 => End, + v if v == SDL_SCANCODE_PAGEDOWN as i32 => PageDown, + v if v == SDL_SCANCODE_RIGHT as i32 => Right, + v if v == SDL_SCANCODE_LEFT as i32 => Left, + v if v == SDL_SCANCODE_DOWN as i32 => Down, + v if v == SDL_SCANCODE_UP as i32 => Up, + v if v == SDL_SCANCODE_NUMLOCKCLEAR as i32 => NumLockClear, + v if v == SDL_SCANCODE_KP_DIVIDE as i32 => KpDivide, + v if v == SDL_SCANCODE_KP_MULTIPLY as i32 => KpMultiply, + v if v == SDL_SCANCODE_KP_MINUS as i32 => KpMinus, + v if v == SDL_SCANCODE_KP_PLUS as i32 => KpPlus, + v if v == SDL_SCANCODE_KP_ENTER as i32 => KpEnter, + v if v == SDL_SCANCODE_KP_1 as i32 => Kp1, + v if v == SDL_SCANCODE_KP_2 as i32 => Kp2, + v if v == SDL_SCANCODE_KP_3 as i32 => Kp3, + v if v == SDL_SCANCODE_KP_4 as i32 => Kp4, + v if v == SDL_SCANCODE_KP_5 as i32 => Kp5, + v if v == SDL_SCANCODE_KP_6 as i32 => Kp6, + v if v == SDL_SCANCODE_KP_7 as i32 => Kp7, + v if v == SDL_SCANCODE_KP_8 as i32 => Kp8, + v if v == SDL_SCANCODE_KP_9 as i32 => Kp9, + v if v == SDL_SCANCODE_KP_0 as i32 => Kp0, + v if v == SDL_SCANCODE_KP_PERIOD as i32 => KpPeriod, + v if v == SDL_SCANCODE_NONUSBACKSLASH as i32 => NonUsBackslash, + v if v == SDL_SCANCODE_APPLICATION as i32 => Application, + v if v == SDL_SCANCODE_POWER as i32 => Power, + v if v == SDL_SCANCODE_KP_EQUALS as i32 => KpEquals, + v if v == SDL_SCANCODE_F13 as i32 => F13, + v if v == SDL_SCANCODE_F14 as i32 => F14, + v if v == SDL_SCANCODE_F15 as i32 => F15, + v if v == SDL_SCANCODE_F16 as i32 => F16, + v if v == SDL_SCANCODE_F17 as i32 => F17, + v if v == SDL_SCANCODE_F18 as i32 => F18, + v if v == SDL_SCANCODE_F19 as i32 => F19, + v if v == SDL_SCANCODE_F20 as i32 => F20, + v if v == SDL_SCANCODE_F21 as i32 => F21, + v if v == SDL_SCANCODE_F22 as i32 => F22, + v if v == SDL_SCANCODE_F23 as i32 => F23, + v if v == SDL_SCANCODE_F24 as i32 => F24, + v if v == SDL_SCANCODE_EXECUTE as i32 => Execute, + v if v == SDL_SCANCODE_HELP as i32 => Help, + v if v == SDL_SCANCODE_MENU as i32 => Menu, + v if v == SDL_SCANCODE_SELECT as i32 => Select, + v if v == SDL_SCANCODE_STOP as i32 => Stop, + v if v == SDL_SCANCODE_AGAIN as i32 => Again, + v if v == SDL_SCANCODE_UNDO as i32 => Undo, + v if v == SDL_SCANCODE_CUT as i32 => Cut, + v if v == SDL_SCANCODE_COPY as i32 => Copy, + v if v == SDL_SCANCODE_PASTE as i32 => Paste, + v if v == SDL_SCANCODE_FIND as i32 => Find, + v if v == SDL_SCANCODE_MUTE as i32 => Mute, + v if v == SDL_SCANCODE_VOLUMEUP as i32 => VolumeUp, + v if v == SDL_SCANCODE_VOLUMEDOWN as i32 => VolumeDown, + v if v == SDL_SCANCODE_KP_COMMA as i32 => KpComma, + v if v == SDL_SCANCODE_KP_EQUALSAS400 as i32 => KpEqualsAS400, + v if v == SDL_SCANCODE_INTERNATIONAL1 as i32 => International1, + v if v == SDL_SCANCODE_INTERNATIONAL2 as i32 => International2, + v if v == SDL_SCANCODE_INTERNATIONAL3 as i32 => International3, + v if v == SDL_SCANCODE_INTERNATIONAL4 as i32 => International4, + v if v == SDL_SCANCODE_INTERNATIONAL5 as i32 => International5, + v if v == SDL_SCANCODE_INTERNATIONAL6 as i32 => International6, + v if v == SDL_SCANCODE_INTERNATIONAL7 as i32 => International7, + v if v == SDL_SCANCODE_INTERNATIONAL8 as i32 => International8, + v if v == SDL_SCANCODE_INTERNATIONAL9 as i32 => International9, + v if v == SDL_SCANCODE_LANG1 as i32 => Lang1, + v if v == SDL_SCANCODE_LANG2 as i32 => Lang2, + v if v == SDL_SCANCODE_LANG3 as i32 => Lang3, + v if v == SDL_SCANCODE_LANG4 as i32 => Lang4, + v if v == SDL_SCANCODE_LANG5 as i32 => Lang5, + v if v == SDL_SCANCODE_LANG6 as i32 => Lang6, + v if v == SDL_SCANCODE_LANG7 as i32 => Lang7, + v if v == SDL_SCANCODE_LANG8 as i32 => Lang8, + v if v == SDL_SCANCODE_LANG9 as i32 => Lang9, + v if v == SDL_SCANCODE_ALTERASE as i32 => AltErase, + v if v == SDL_SCANCODE_SYSREQ as i32 => SysReq, + v if v == SDL_SCANCODE_CANCEL as i32 => Cancel, + v if v == SDL_SCANCODE_CLEAR as i32 => Clear, + v if v == SDL_SCANCODE_PRIOR as i32 => Prior, + v if v == SDL_SCANCODE_RETURN2 as i32 => Return2, + v if v == SDL_SCANCODE_SEPARATOR as i32 => Separator, + v if v == SDL_SCANCODE_OUT as i32 => Out, + v if v == SDL_SCANCODE_OPER as i32 => Oper, + v if v == SDL_SCANCODE_CLEARAGAIN as i32 => ClearAgain, + v if v == SDL_SCANCODE_CRSEL as i32 => CrSel, + v if v == SDL_SCANCODE_EXSEL as i32 => ExSel, + v if v == SDL_SCANCODE_KP_00 as i32 => Kp00, + v if v == SDL_SCANCODE_KP_000 as i32 => Kp000, + v if v == SDL_SCANCODE_THOUSANDSSEPARATOR as i32 => ThousandsSeparator, + v if v == SDL_SCANCODE_DECIMALSEPARATOR as i32 => DecimalSeparator, + v if v == SDL_SCANCODE_CURRENCYUNIT as i32 => CurrencyUnit, + v if v == SDL_SCANCODE_CURRENCYSUBUNIT as i32 => CurrencySubUnit, + v if v == SDL_SCANCODE_KP_LEFTPAREN as i32 => KpLeftParen, + v if v == SDL_SCANCODE_KP_RIGHTPAREN as i32 => KpRightParen, + v if v == SDL_SCANCODE_KP_LEFTBRACE as i32 => KpLeftBrace, + v if v == SDL_SCANCODE_KP_RIGHTBRACE as i32 => KpRightBrace, + v if v == SDL_SCANCODE_KP_TAB as i32 => KpTab, + v if v == SDL_SCANCODE_KP_BACKSPACE as i32 => KpBackspace, + v if v == SDL_SCANCODE_KP_A as i32 => KpA, + v if v == SDL_SCANCODE_KP_B as i32 => KpB, + v if v == SDL_SCANCODE_KP_C as i32 => KpC, + v if v == SDL_SCANCODE_KP_D as i32 => KpD, + v if v == SDL_SCANCODE_KP_E as i32 => KpE, + v if v == SDL_SCANCODE_KP_F as i32 => KpF, + v if v == SDL_SCANCODE_KP_XOR as i32 => KpXor, + v if v == SDL_SCANCODE_KP_POWER as i32 => KpPower, + v if v == SDL_SCANCODE_KP_PERCENT as i32 => KpPercent, + v if v == SDL_SCANCODE_KP_LESS as i32 => KpLess, + v if v == SDL_SCANCODE_KP_GREATER as i32 => KpGreater, + v if v == SDL_SCANCODE_KP_AMPERSAND as i32 => KpAmpersand, + v if v == SDL_SCANCODE_KP_DBLAMPERSAND as i32 => KpDblAmpersand, + v if v == SDL_SCANCODE_KP_VERTICALBAR as i32 => KpVerticalBar, + v if v == SDL_SCANCODE_KP_DBLVERTICALBAR as i32 => KpDblVerticalBar, + v if v == SDL_SCANCODE_KP_COLON as i32 => KpColon, + v if v == SDL_SCANCODE_KP_HASH as i32 => KpHash, + v if v == SDL_SCANCODE_KP_SPACE as i32 => KpSpace, + v if v == SDL_SCANCODE_KP_AT as i32 => KpAt, + v if v == SDL_SCANCODE_KP_EXCLAM as i32 => KpExclam, + v if v == SDL_SCANCODE_KP_MEMSTORE as i32 => KpMemStore, + v if v == SDL_SCANCODE_KP_MEMRECALL as i32 => KpMemRecall, + v if v == SDL_SCANCODE_KP_MEMCLEAR as i32 => KpMemClear, + v if v == SDL_SCANCODE_KP_MEMADD as i32 => KpMemAdd, + v if v == SDL_SCANCODE_KP_MEMSUBTRACT as i32 => KpMemSubtract, + v if v == SDL_SCANCODE_KP_MEMMULTIPLY as i32 => KpMemMultiply, + v if v == SDL_SCANCODE_KP_MEMDIVIDE as i32 => KpMemDivide, + v if v == SDL_SCANCODE_KP_PLUSMINUS as i32 => KpPlusMinus, + v if v == SDL_SCANCODE_KP_CLEAR as i32 => KpClear, + v if v == SDL_SCANCODE_KP_CLEARENTRY as i32 => KpClearEntry, + v if v == SDL_SCANCODE_KP_BINARY as i32 => KpBinary, + v if v == SDL_SCANCODE_KP_OCTAL as i32 => KpOctal, + v if v == SDL_SCANCODE_KP_DECIMAL as i32 => KpDecimal, + v if v == SDL_SCANCODE_KP_HEXADECIMAL as i32 => KpHexadecimal, + v if v == SDL_SCANCODE_LCTRL as i32 => LCtrl, + v if v == SDL_SCANCODE_LSHIFT as i32 => LShift, + v if v == SDL_SCANCODE_LALT as i32 => LAlt, + v if v == SDL_SCANCODE_LGUI as i32 => LGui, + v if v == SDL_SCANCODE_RCTRL as i32 => RCtrl, + v if v == SDL_SCANCODE_RSHIFT as i32 => RShift, + v if v == SDL_SCANCODE_RALT as i32 => RAlt, + v if v == SDL_SCANCODE_RGUI as i32 => RGui, + v if v == SDL_SCANCODE_MODE as i32 => Mode, + v if v == SDL_SCANCODE_AUDIONEXT as i32 => AudioNext, + v if v == SDL_SCANCODE_AUDIOPREV as i32 => AudioPrev, + v if v == SDL_SCANCODE_AUDIOSTOP as i32 => AudioStop, + v if v == SDL_SCANCODE_AUDIOPLAY as i32 => AudioPlay, + v if v == SDL_SCANCODE_AUDIOMUTE as i32 => AudioMute, + v if v == SDL_SCANCODE_MEDIASELECT as i32 => MediaSelect, + v if v == SDL_SCANCODE_WWW as i32 => Www, + v if v == SDL_SCANCODE_MAIL as i32 => Mail, + v if v == SDL_SCANCODE_CALCULATOR as i32 => Calculator, + v if v == SDL_SCANCODE_COMPUTER as i32 => Computer, + v if v == SDL_SCANCODE_AC_SEARCH as i32 => AcSearch, + v if v == SDL_SCANCODE_AC_HOME as i32 => AcHome, + v if v == SDL_SCANCODE_AC_BACK as i32 => AcBack, + v if v == SDL_SCANCODE_AC_FORWARD as i32 => AcForward, + v if v == SDL_SCANCODE_AC_STOP as i32 => AcStop, + v if v == SDL_SCANCODE_AC_REFRESH as i32 => AcRefresh, + v if v == SDL_SCANCODE_AC_BOOKMARKS as i32 => AcBookmarks, + v if v == SDL_SCANCODE_BRIGHTNESSDOWN as i32 => BrightnessDown, + v if v == SDL_SCANCODE_BRIGHTNESSUP as i32 => BrightnessUp, + v if v == SDL_SCANCODE_DISPLAYSWITCH as i32 => DisplaySwitch, + v if v == SDL_SCANCODE_KBDILLUMTOGGLE as i32 => KbdIllumToggle, + v if v == SDL_SCANCODE_KBDILLUMDOWN as i32 => KbdIllumDown, + v if v == SDL_SCANCODE_KBDILLUMUP as i32 => KbdIllumUp, + v if v == SDL_SCANCODE_EJECT as i32 => Eject, + v if v == SDL_SCANCODE_SLEEP as i32 => Sleep, + v if v == SDL_SCANCODE_APP1 as i32 => App1, + v if v == SDL_SCANCODE_APP2 as i32 => App2, + v if v == SDL_NUM_SCANCODES as i32 => Num, _ => return None, }) }