context: using System;
  using System.Runtime.InteropServices;
  
  using SDL2;
  using static SDL2.SDL_audio;
  using static SDL2.SDL_blendmode;
  using static SDL2.SDL_clipboard;
  using static SDL2.SDL_cpuinfo;
  using static SDL2.SDL_error;
  using static SDL2.SDL_events;
  using static SDL2.SDL_gamecontroller;
  using static SDL2.SDL_gesture;
  using static SDL2.SDL_haptic;
  using static SDL2.SDL_hints;
  
  using static SDL2.SDL_joystick;
  using static SDL2.SDL_keyboard;
  using static SDL2.SDL_keycode;
  using static SDL2.SDL_messagebox;
  using static SDL2.SDL_mouse;
  using static SDL2.SDL_pixels;
  using static SDL2.SDL_power;
  using static SDL2.SDL_rect;
  using static SDL2.SDL_render;
  using static SDL2.SDL_surface;
  
  using static SDL2.SDL_touch;
  using static SDL2.SDL_version;
  using static SDL2.SDL_video;
  using NativeLibraryLoader;
  
  namespace SDL2
  {
      public static class SDL_scancode
      {
  
          public enum SDL_Scancode
          {
  
              SDL_SCANCODE_UNKNOWN = 0,
  
              /**
               *  \name Usage page 0x07
               *
               *  These values are from usage page 0x07 (USB keyboard page).
               */
              /*  */
  
              SDL_SCANCODE_A = 4,
              SDL_SCANCODE_B = 5,
              SDL_SCANCODE_C = 6,
              SDL_SCANCODE_D = 7,
              SDL_SCANCODE_E = 8,
              SDL_SCANCODE_F = 9,
              SDL_SCANCODE_G = 10,
              SDL_SCANCODE_H = 11,
              SDL_SCANCODE_I = 12,
              SDL_SCANCODE_J = 13,
              SDL_SCANCODE_K = 14,
              SDL_SCANCODE_L = 15,
              SDL_SCANCODE_M = 16,
              SDL_SCANCODE_N = 17,
              SDL_SCANCODE_O = 18,
              SDL_SCANCODE_P = 19,
              SDL_SCANCODE_Q = 20,
              SDL_SCANCODE_R = 21,
              SDL_SCANCODE_S = 22,
              SDL_SCANCODE_T = 23,
              SDL_SCANCODE_U = 24,
              SDL_SCANCODE_V = 25,
              SDL_SCANCODE_W = 26,
              SDL_SCANCODE_X = 27,
              SDL_SCANCODE_Y = 28,
              SDL_SCANCODE_Z = 29,
  
              SDL_SCANCODE_1 = 30,
              SDL_SCANCODE_2 = 31,
              SDL_SCANCODE_3 = 32,
              SDL_SCANCODE_4 = 33,
              SDL_SCANCODE_5 = 34,
              SDL_SCANCODE_6 = 35,
              SDL_SCANCODE_7 = 36,
              SDL_SCANCODE_8 = 37,
              SDL_SCANCODE_9 = 38,
              SDL_SCANCODE_0 = 39,
  
              SDL_SCANCODE_RETURN = 40,
              SDL_SCANCODE_ESCAPE = 41,
              SDL_SCANCODE_BACKSPACE = 42,
              SDL_SCANCODE_TAB = 43,
              SDL_SCANCODE_SPACE = 44,
  
              SDL_SCANCODE_MINUS = 45,
              SDL_SCANCODE_EQUALS = 46,
              SDL_SCANCODE_LEFTBRACKET = 47,
              SDL_SCANCODE_RIGHTBRACKET = 48,
              SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
                                    *   key on ISO keyboards and at the right end
                                    *   of the QWERTY row on ANSI keyboards.
                                    *   Produces REVERSE SOLIDUS (backslash) and
                                    *   VERTICAL LINE in a US layout, REVERSE
                                    *   SOLIDUS and VERTICAL LINE in a UK Mac
                                    *   layout, NUMBER SIGN and TILDE in a UK
                                    *   Windows layout, DOLLAR SIGN and POUND SIGN
                                    *   in a Swiss German layout, NUMBER SIGN and
                                    *   APOSTROPHE in a German layout, GRAVE
                                    *   ACCENT and POUND SIGN in a French Mac
                                    *   layout, and ASTERISK and MICRO SIGN in a
                                    *   French Windows layout.
                                    */
              SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
                                    *   instead of 49 for the same key, but all
                                    *   OSes I've seen treat the two codes
                                    *   identically. So, as an implementor, unless
                                    *   your keyboard generates both of those
                                    *   codes and your OS treats them differently,
                                    *   you should generate SDL_SCANCODE_BACKSLASH
                                    *   instead of this code. As a user, you
                                    *   should not rely on this code because SDL
                                    *   will never generate it with most (all?)
                                    *   keyboards.
                                    */
              SDL_SCANCODE_SEMICOLON = 51,
              SDL_SCANCODE_APOSTROPHE = 52,
              SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
                                *   and ISO keyboards). Produces GRAVE ACCENT and
                                *   TILDE in a US Windows layout and in US and UK
                                *   Mac layouts on ANSI keyboards, GRAVE ACCENT
                                *   and NOT SIGN in a UK Windows layout, SECTION
                                *   SIGN and PLUS-MINUS SIGN in US and UK Mac
                                *   layouts on ISO keyboards, SECTION SIGN and
                                *   DEGREE SIGN in a Swiss German layout (Mac:
                                *   only on ISO keyboards), CIRCUMFLEX ACCENT and
                                *   DEGREE SIGN in a German layout (Mac: only on
                                *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a
                                *   French Windows layout, COMMERCIAL AT and
                                *   NUMBER SIGN in a French Mac layout on ISO
                                *   keyboards, and LESS-THAN SIGN and GREATER-THAN
                                *   SIGN in a Swiss German, German, or French Mac
                                *   layout on ANSI keyboards.
                                */
              SDL_SCANCODE_COMMA = 54,
              SDL_SCANCODE_PERIOD = 55,
              SDL_SCANCODE_SLASH = 56,
  
              SDL_SCANCODE_CAPSLOCK = 57,
  
              SDL_SCANCODE_F1 = 58,
              SDL_SCANCODE_F2 = 59,
              SDL_SCANCODE_F3 = 60,
              SDL_SCANCODE_F4 = 61,
              SDL_SCANCODE_F5 = 62,
              SDL_SCANCODE_F6 = 63,
              SDL_SCANCODE_F7 = 64,
              SDL_SCANCODE_F8 = 65,
              SDL_SCANCODE_F9 = 66,
              SDL_SCANCODE_F10 = 67,
              SDL_SCANCODE_F11 = 68,
              SDL_SCANCODE_F12 = 69,
  
              SDL_SCANCODE_PRINTSCREEN = 70,
              SDL_SCANCODE_SCROLLLOCK = 71,
              SDL_SCANCODE_PAUSE = 72,
              SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
                                     does send code 73, not 117) */
              SDL_SCANCODE_HOME = 74,
              SDL_SCANCODE_PAGEUP = 75,
              SDL_SCANCODE_DELETE = 76,
              SDL_SCANCODE_END = 77,
              SDL_SCANCODE_PAGEDOWN = 78,
              SDL_SCANCODE_RIGHT = 79,
              SDL_SCANCODE_LEFT = 80,
              SDL_SCANCODE_DOWN = 81,
              SDL_SCANCODE_UP = 82,
  
              SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
                                       */
              SDL_SCANCODE_KP_DIVIDE = 84,
              SDL_SCANCODE_KP_MULTIPLY = 85,
              SDL_SCANCODE_KP_MINUS = 86,
              SDL_SCANCODE_KP_PLUS = 87,
              SDL_SCANCODE_KP_ENTER = 88,
              SDL_SCANCODE_KP_1 = 89,
              SDL_SCANCODE_KP_2 = 90,
              SDL_SCANCODE_KP_3 = 91,
              SDL_SCANCODE_KP_4 = 92,
              SDL_SCANCODE_KP_5 = 93,
              SDL_SCANCODE_KP_6 = 94,
              SDL_SCANCODE_KP_7 = 95,
              SDL_SCANCODE_KP_8 = 96,
              SDL_SCANCODE_KP_9 = 97,
              SDL_SCANCODE_KP_0 = 98,
              SDL_SCANCODE_KP_PERIOD = 99,
  
              SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
                                          *   keyboards have over ANSI ones,
                                          *   located between left shift and Y.
                                          *   Produces GRAVE ACCENT and TILDE in a
                                          *   US or UK Mac layout, REVERSE SOLIDUS
                                          *   (backslash) and VERTICAL LINE in a
                                          *   US or UK Windows layout, and
                                          *   LESS-THAN SIGN and GREATER-THAN SIGN
                                          *   in a Swiss German, German, or French
                                          *   layout. */
              SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
              SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
                                 *   not a physical key - but some Mac keyboards
                                 *   do have a power key. */
              SDL_SCANCODE_KP_EQUALS = 103,
              SDL_SCANCODE_F13 = 104,
              SDL_SCANCODE_F14 = 105,
              SDL_SCANCODE_F15 = 106,
              SDL_SCANCODE_F16 = 107,
              SDL_SCANCODE_F17 = 108,
              SDL_SCANCODE_F18 = 109,
              SDL_SCANCODE_F19 = 110,
              SDL_SCANCODE_F20 = 111,
              SDL_SCANCODE_F21 = 112,
              SDL_SCANCODE_F22 = 113,
              SDL_SCANCODE_F23 = 114,
              SDL_SCANCODE_F24 = 115,
              SDL_SCANCODE_EXECUTE = 116,
              SDL_SCANCODE_HELP = 117,
              SDL_SCANCODE_MENU = 118,
              SDL_SCANCODE_SELECT = 119,
              SDL_SCANCODE_STOP = 120,
              SDL_SCANCODE_AGAIN = 121,   /**< redo */
              SDL_SCANCODE_UNDO = 122,
              SDL_SCANCODE_CUT = 123,
              SDL_SCANCODE_COPY = 124,
              SDL_SCANCODE_PASTE = 125,
              SDL_SCANCODE_FIND = 126,
              SDL_SCANCODE_MUTE = 127,
              SDL_SCANCODE_VOLUMEUP = 128,
              SDL_SCANCODE_VOLUMEDOWN = 129,
              /* not sure whether there's a reason to enable these */
              /*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
              /*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
              /*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
              SDL_SCANCODE_KP_COMMA = 133,
              SDL_SCANCODE_KP_EQUALSAS400 = 134,
  
              SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
                                              footnotes in USB doc */
              SDL_SCANCODE_INTERNATIONAL2 = 136,
              SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
              SDL_SCANCODE_INTERNATIONAL4 = 138,
              SDL_SCANCODE_INTERNATIONAL5 = 139,
              SDL_SCANCODE_INTERNATIONAL6 = 140,
              SDL_SCANCODE_INTERNATIONAL7 = 141,
              SDL_SCANCODE_INTERNATIONAL8 = 142,
              SDL_SCANCODE_INTERNATIONAL9 = 143,
              SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
              SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
  
gt:             SDL_SCANCODE_LANG3 = 146, /**< Katakana */