/*
  Simple DirectMedia Layer
  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/

#ifndef scancodes_xfree86_h_
#define scancodes_xfree86_h_

#include "../../include/SDL_scancode.h"

/* XFree86 key code to SDL scancode mapping table
   Sources:
   - atKeyNames.h from XFree86 source code
*/
/* *INDENT-OFF* */ /* clang-format off */
static const SDL_Scancode xfree86_scancode_table[] = {
    /*  0 */    SDL_SCANCODE_UNKNOWN,
    /*  1 */    SDL_SCANCODE_ESCAPE,
    /*  2 */    SDL_SCANCODE_1,
    /*  3 */    SDL_SCANCODE_2,
    /*  4 */    SDL_SCANCODE_3,
    /*  5 */    SDL_SCANCODE_4,
    /*  6 */    SDL_SCANCODE_5,
    /*  7 */    SDL_SCANCODE_6,
    /*  8 */    SDL_SCANCODE_7,
    /*  9 */    SDL_SCANCODE_8,
    /*  10 */   SDL_SCANCODE_9,
    /*  11 */   SDL_SCANCODE_0,
    /*  12 */   SDL_SCANCODE_MINUS,
    /*  13 */   SDL_SCANCODE_EQUALS,
    /*  14 */   SDL_SCANCODE_BACKSPACE,
    /*  15 */   SDL_SCANCODE_TAB,
    /*  16 */   SDL_SCANCODE_Q,
    /*  17 */   SDL_SCANCODE_W,
    /*  18 */   SDL_SCANCODE_E,
    /*  19 */   SDL_SCANCODE_R,
    /*  20 */   SDL_SCANCODE_T,
    /*  21 */   SDL_SCANCODE_Y,
    /*  22 */   SDL_SCANCODE_U,
    /*  23 */   SDL_SCANCODE_I,
    /*  24 */   SDL_SCANCODE_O,
    /*  25 */   SDL_SCANCODE_P,
    /*  26 */   SDL_SCANCODE_LEFTBRACKET,
    /*  27 */   SDL_SCANCODE_RIGHTBRACKET,
    /*  28 */   SDL_SCANCODE_RETURN,
    /*  29 */   SDL_SCANCODE_LCTRL,
    /*  30 */   SDL_SCANCODE_A,
    /*  31 */   SDL_SCANCODE_S,
    /*  32 */   SDL_SCANCODE_D,
    /*  33 */   SDL_SCANCODE_F,
    /*  34 */   SDL_SCANCODE_G,
    /*  35 */   SDL_SCANCODE_H,
    /*  36 */   SDL_SCANCODE_J,
    /*  37 */   SDL_SCANCODE_K,
    /*  38 */   SDL_SCANCODE_L,
    /*  39 */   SDL_SCANCODE_SEMICOLON,
    /*  40 */   SDL_SCANCODE_APOSTROPHE,
    /*  41 */   SDL_SCANCODE_GRAVE,
    /*  42 */   SDL_SCANCODE_LSHIFT,
    /*  43 */   SDL_SCANCODE_BACKSLASH,
    /*  44 */   SDL_SCANCODE_Z,
    /*  45 */   SDL_SCANCODE_X,
    /*  46 */   SDL_SCANCODE_C,
    /*  47 */   SDL_SCANCODE_V,
    /*  48 */   SDL_SCANCODE_B,
    /*  49 */   SDL_SCANCODE_N,
    /*  50 */   SDL_SCANCODE_M,
    /*  51 */   SDL_SCANCODE_COMMA,
    /*  52 */   SDL_SCANCODE_PERIOD,
    /*  53 */   SDL_SCANCODE_SLASH,
    /*  54 */   SDL_SCANCODE_RSHIFT,
    /*  55 */   SDL_SCANCODE_KP_MULTIPLY,
    /*  56 */   SDL_SCANCODE_LALT,
    /*  57 */   SDL_SCANCODE_SPACE,
    /*  58 */   SDL_SCANCODE_CAPSLOCK,
    /*  59 */   SDL_SCANCODE_F1,
    /*  60 */   SDL_SCANCODE_F2,
    /*  61 */   SDL_SCANCODE_F3,
    /*  62 */   SDL_SCANCODE_F4,
    /*  63 */   SDL_SCANCODE_F5,
    /*  64 */   SDL_SCANCODE_F6,
    /*  65 */   SDL_SCANCODE_F7,
    /*  66 */   SDL_SCANCODE_F8,
    /*  67 */   SDL_SCANCODE_F9,
    /*  68 */   SDL_SCANCODE_F10,
    /*  69 */   SDL_SCANCODE_NUMLOCKCLEAR,
    /*  70 */   SDL_SCANCODE_SCROLLLOCK,
    /*  71 */   SDL_SCANCODE_KP_7,
    /*  72 */   SDL_SCANCODE_KP_8,
    /*  73 */   SDL_SCANCODE_KP_9,
    /*  74 */   SDL_SCANCODE_KP_MINUS,
    /*  75 */   SDL_SCANCODE_KP_4,
    /*  76 */   SDL_SCANCODE_KP_5,
    /*  77 */   SDL_SCANCODE_KP_6,
    /*  78 */   SDL_SCANCODE_KP_PLUS,
    /*  79 */   SDL_SCANCODE_KP_1,
    /*  80 */   SDL_SCANCODE_KP_2,
    /*  81 */   SDL_SCANCODE_KP_3,
    /*  82 */   SDL_SCANCODE_KP_0,
    /*  83 */   SDL_SCANCODE_KP_PERIOD,
    /*  84 */   SDL_SCANCODE_SYSREQ,
    /*  85 */   SDL_SCANCODE_MODE,
    /*  86 */   SDL_SCANCODE_NONUSBACKSLASH,
    /*  87 */   SDL_SCANCODE_F11,
    /*  88 */   SDL_SCANCODE_F12,
    /*  89 */   SDL_SCANCODE_HOME,
    /*  90 */   SDL_SCANCODE_UP,
    /*  91 */   SDL_SCANCODE_PAGEUP,
    /*  92 */   SDL_SCANCODE_LEFT,
    /*  93 */   SDL_SCANCODE_BRIGHTNESSDOWN, /* on PowerBook G4 / KEY_Begin */
    /*  94 */   SDL_SCANCODE_RIGHT,
    /*  95 */   SDL_SCANCODE_END,
    /*  96 */   SDL_SCANCODE_DOWN,
    /*  97 */   SDL_SCANCODE_PAGEDOWN,
    /*  98 */   SDL_SCANCODE_INSERT,
    /*  99 */   SDL_SCANCODE_DELETE,
    /*  100 */  SDL_SCANCODE_KP_ENTER,
    /*  101 */  SDL_SCANCODE_RCTRL,
    /*  102 */  SDL_SCANCODE_PAUSE,
    /*  103 */  SDL_SCANCODE_PRINTSCREEN,
    /*  104 */  SDL_SCANCODE_KP_DIVIDE,
    /*  105 */  SDL_SCANCODE_RALT,
    /*  106 */  SDL_SCANCODE_UNKNOWN, /* BREAK */
    /*  107 */  SDL_SCANCODE_LGUI,
    /*  108 */  SDL_SCANCODE_RGUI,
    /*  109 */  SDL_SCANCODE_APPLICATION,
    /*  110 */  SDL_SCANCODE_F13,
    /*  111 */  SDL_SCANCODE_F14,
    /*  112 */  SDL_SCANCODE_F15,
    /*  113 */  SDL_SCANCODE_F16,
    /*  114 */  SDL_SCANCODE_F17,
    /*  115 */  SDL_SCANCODE_INTERNATIONAL1, /* \_ */
    /*  116 */  SDL_SCANCODE_UNKNOWN, /* is translated to XK_ISO_Level3_Shift by my X server, but I have no keyboard that generates this code, so I don't know what the correct SDL_SCANCODE_* for it is */
    /*  117 */  SDL_SCANCODE_UNKNOWN,
    /*  118 */  SDL_SCANCODE_KP_EQUALS,
    /*  119 */  SDL_SCANCODE_UNKNOWN,
    /*  120 */  SDL_SCANCODE_UNKNOWN,
    /*  121 */  SDL_SCANCODE_INTERNATIONAL4, /* Henkan_Mode */
    /*  122 */  SDL_SCANCODE_UNKNOWN,
    /*  123 */  SDL_SCANCODE_INTERNATIONAL5, /* Muhenkan */
    /*  124 */  SDL_SCANCODE_UNKNOWN,
    /*  125 */  SDL_SCANCODE_INTERNATIONAL3, /* Yen */
    /*  126 */  SDL_SCANCODE_UNKNOWN,
    /*  127 */  SDL_SCANCODE_UNKNOWN,
    /*  128 */  SDL_SCANCODE_UNKNOWN,
    /*  129 */  SDL_SCANCODE_UNKNOWN,
    /*  130 */  SDL_SCANCODE_UNKNOWN,
    /*  131 */  SDL_SCANCODE_UNKNOWN,
    /*  132 */  SDL_SCANCODE_POWER,
    /*  133 */  SDL_SCANCODE_MUTE,
    /*  134 */  SDL_SCANCODE_VOLUMEDOWN,
    /*  135 */  SDL_SCANCODE_VOLUMEUP,
    /*  136 */  SDL_SCANCODE_HELP,
    /*  137 */  SDL_SCANCODE_STOP,
    /*  138 */  SDL_SCANCODE_AGAIN,
    /*  139 */  SDL_SCANCODE_UNKNOWN, /* PROPS */
    /*  140 */  SDL_SCANCODE_UNDO,
    /*  141 */  SDL_SCANCODE_UNKNOWN, /* FRONT */
    /*  142 */  SDL_SCANCODE_COPY,
    /*  143 */  SDL_SCANCODE_UNKNOWN, /* OPEN */
    /*  144 */  SDL_SCANCODE_PASTE,
    /*  145 */  SDL_SCANCODE_FIND,
    /*  146 */  SDL_SCANCODE_CUT,
};

/* This is largely identical to the Linux keycode mapping */
static const SDL_Scancode xfree86_scancode_table2[] = {
    /*   0, 0x000 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /*   1, 0x001 */   SDL_SCANCODE_ESCAPE,             /* Escape */
    /*   2, 0x002 */   SDL_SCANCODE_1,                  /* 1 */
    /*   3, 0x003 */   SDL_SCANCODE_2,                  /* 2 */
    /*   4, 0x004 */   SDL_SCANCODE_3,                  /* 3 */
    /*   5, 0x005 */   SDL_SCANCODE_4,                  /* 4 */
    /*   6, 0x006 */   SDL_SCANCODE_5,                  /* 5 */
    /*   7, 0x007 */   SDL_SCANCODE_6,                  /* 6 */
    /*   8, 0x008 */   SDL_SCANCODE_7,                  /* 7 */
    /*   9, 0x009 */   SDL_SCANCODE_8,                  /* 8 */
    /*  10, 0x00a */   SDL_SCANCODE_9,                  /* 9 */
    /*  11, 0x00b */   SDL_SCANCODE_0,                  /* 0 */
    /*  12, 0x00c */   SDL_SCANCODE_MINUS,              /* minus */
    /*  13, 0x00d */   SDL_SCANCODE_EQUALS,             /* equal */
    /*  14, 0x00e */   SDL_SCANCODE_BACKSPACE,          /* BackSpace */
    /*  15, 0x00f */   SDL_SCANCODE_TAB,                /* Tab */
    /*  16, 0x010 */   SDL_SCANCODE_Q,                  /* q */
    /*  17, 0x011 */   SDL_SCANCODE_W,                  /* w */
    /*  18, 0x012 */   SDL_SCANCODE_E,                  /* e */
    /*  19, 0x013 */   SDL_SCANCODE_R,                  /* r */
    /*  20, 0x014 */   SDL_SCANCODE_T,                  /* t */
    /*  21, 0x015 */   SDL_SCANCODE_Y,                  /* y */
    /*  22, 0x016 */   SDL_SCANCODE_U,                  /* u */
    /*  23, 0x017 */   SDL_SCANCODE_I,                  /* i */
    /*  24, 0x018 */   SDL_SCANCODE_O,                  /* o */
    /*  25, 0x019 */   SDL_SCANCODE_P,                  /* p */
    /*  26, 0x01a */   SDL_SCANCODE_LEFTBRACKET,        /* bracketleft */
    /*  27, 0x01b */   SDL_SCANCODE_RIGHTBRACKET,       /* bracketright */
    /*  28, 0x01c */   SDL_SCANCODE_RETURN,             /* Return */
    /*  29, 0x01d */   SDL_SCANCODE_LCTRL,              /* Control_L */
    /*  30, 0x01e */   SDL_SCANCODE_A,                  /* a */
    /*  31, 0x01f */   SDL_SCANCODE_S,                  /* s */
    /*  32, 0x020 */   SDL_SCANCODE_D,                  /* d */
    /*  33, 0x021 */   SDL_SCANCODE_F,                  /* f */
    /*  34, 0x022 */   SDL_SCANCODE_G,                  /* g */
    /*  35, 0x023 */   SDL_SCANCODE_H,                  /* h */
    /*  36, 0x024 */   SDL_SCANCODE_J,                  /* j */
    /*  37, 0x025 */   SDL_SCANCODE_K,                  /* k */
    /*  38, 0x026 */   SDL_SCANCODE_L,                  /* l */
    /*  39, 0x027 */   SDL_SCANCODE_SEMICOLON,          /* semicolon */
    /*  40, 0x028 */   SDL_SCANCODE_APOSTROPHE,         /* apostrophe */
    /*  41, 0x029 */   SDL_SCANCODE_GRAVE,              /* grave */
    /*  42, 0x02a */   SDL_SCANCODE_LSHIFT,             /* Shift_L */
    /*  43, 0x02b */   SDL_SCANCODE_BACKSLASH,          /* backslash */
    /*  44, 0x02c */   SDL_SCANCODE_Z,                  /* z */
    /*  45, 0x02d */   SDL_SCANCODE_X,                  /* x */
    /*  46, 0x02e */   SDL_SCANCODE_C,                  /* c */
    /*  47, 0x02f */   SDL_SCANCODE_V,                  /* v */
    /*  48, 0x030 */   SDL_SCANCODE_B,                  /* b */
    /*  49, 0x031 */   SDL_SCANCODE_N,                  /* n */
    /*  50, 0x032 */   SDL_SCANCODE_M,                  /* m */
    /*  51, 0x033 */   SDL_SCANCODE_COMMA,              /* comma */
    /*  52, 0x034 */   SDL_SCANCODE_PERIOD,             /* period */
    /*  53, 0x035 */   SDL_SCANCODE_SLASH,              /* slash */
    /*  54, 0x036 */   SDL_SCANCODE_RSHIFT,             /* Shift_R */
    /*  55, 0x037 */   SDL_SCANCODE_KP_MULTIPLY,        /* KP_Multiply */
    /*  56, 0x038 */   SDL_SCANCODE_LALT,               /* Alt_L */
    /*  57, 0x039 */   SDL_SCANCODE_SPACE,              /* space */
    /*  58, 0x03a */   SDL_SCANCODE_CAPSLOCK,           /* Caps_Lock */
    /*  59, 0x03b */   SDL_SCANCODE_F1,                 /* F1 */
    /*  60, 0x03c */   SDL_SCANCODE_F2,                 /* F2 */
    /*  61, 0x03d */   SDL_SCANCODE_F3,                 /* F3 */
    /*  62, 0x03e */   SDL_SCANCODE_F4,                 /* F4 */
    /*  63, 0x03f */   SDL_SCANCODE_F5,                 /* F5 */
    /*  64, 0x040 */   SDL_SCANCODE_F6,                 /* F6 */
    /*  65, 0x041 */   SDL_SCANCODE_F7,                 /* F7 */
    /*  66, 0x042 */   SDL_SCANCODE_F8,                 /* F8 */
    /*  67, 0x043 */   SDL_SCANCODE_F9,                 /* F9 */
    /*  68, 0x044 */   SDL_SCANCODE_F10,                /* F10 */
    /*  69, 0x045 */   SDL_SCANCODE_NUMLOCKCLEAR,       /* Num_Lock */
    /*  70, 0x046 */   SDL_SCANCODE_SCROLLLOCK,         /* Scroll_Lock */
    /*  71, 0x047 */   SDL_SCANCODE_KP_7,               /* KP_Home */
    /*  72, 0x048 */   SDL_SCANCODE_KP_8,               /* KP_Up */
    /*  73, 0x049 */   SDL_SCANCODE_KP_9,               /* KP_Prior */
    /*  74, 0x04a */   SDL_SCANCODE_KP_MINUS,           /* KP_Subtract */
    /*  75, 0x04b */   SDL_SCANCODE_KP_4,               /* KP_Left */
    /*  76, 0x04c */   SDL_SCANCODE_KP_5,               /* KP_Begin */
    /*  77, 0x04d */   SDL_SCANCODE_KP_6,               /* KP_Right */
    /*  78, 0x04e */   SDL_SCANCODE_KP_PLUS,            /* KP_Add */
    /*  79, 0x04f */   SDL_SCANCODE_KP_1,               /* KP_End */
    /*  80, 0x050 */   SDL_SCANCODE_KP_2,               /* KP_Down */
    /*  81, 0x051 */   SDL_SCANCODE_KP_3,               /* KP_Next */
    /*  82, 0x052 */   SDL_SCANCODE_KP_0,               /* KP_Insert */
    /*  83, 0x053 */   SDL_SCANCODE_KP_PERIOD,          /* KP_Delete */
    /*  84, 0x054 */   SDL_SCANCODE_RALT,               /* ISO_Level3_Shift */
    /*  85, 0x055 */   SDL_SCANCODE_MODE,               /* ???? */
    /*  86, 0x056 */   SDL_SCANCODE_NONUSBACKSLASH,     /* less */
    /*  87, 0x057 */   SDL_SCANCODE_F11,                /* F11 */
    /*  88, 0x058 */   SDL_SCANCODE_F12,                /* F12 */
    /*  89, 0x059 */   SDL_SCANCODE_INTERNATIONAL1,     /* \_ */
    /*  90, 0x05a */   SDL_SCANCODE_LANG3,              /* Katakana */
    /*  91, 0x05b */   SDL_SCANCODE_LANG4,              /* Hiragana */
    /*  92, 0x05c */   SDL_SCANCODE_INTERNATIONAL4,     /* Henkan_Mode */
    /*  93, 0x05d */   SDL_SCANCODE_INTERNATIONAL2,     /* Hiragana_Katakana */
    /*  94, 0x05e */   SDL_SCANCODE_INTERNATIONAL5,     /* Muhenkan */
    /*  95, 0x05f */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /*  96, 0x060 */   SDL_SCANCODE_KP_ENTER,           /* KP_Enter */
    /*  97, 0x061 */   SDL_SCANCODE_RCTRL,              /* Control_R */
    /*  98, 0x062 */   SDL_SCANCODE_KP_DIVIDE,          /* KP_Divide */
    /*  99, 0x063 */   SDL_SCANCODE_PRINTSCREEN,        /* Print */
    /* 100, 0x064 */   SDL_SCANCODE_RALT,               /* ISO_Level3_Shift, ALTGR, RALT */
    /* 101, 0x065 */   SDL_SCANCODE_UNKNOWN,            /* Linefeed */
    /* 102, 0x066 */   SDL_SCANCODE_HOME,               /* Home */
    /* 103, 0x067 */   SDL_SCANCODE_UP,                 /* Up */
    /* 104, 0x068 */   SDL_SCANCODE_PAGEUP,             /* Prior */
    /* 105, 0x069 */   SDL_SCANCODE_LEFT,               /* Left */
    /* 106, 0x06a */   SDL_SCANCODE_RIGHT,              /* Right */
    /* 107, 0x06b */   SDL_SCANCODE_END,                /* End */
    /* 108, 0x06c */   SDL_SCANCODE_DOWN,               /* Down */
    /* 109, 0x06d */   SDL_SCANCODE_PAGEDOWN,           /* Next */
    /* 110, 0x06e */   SDL_SCANCODE_INSERT,             /* Insert */
    /* 111, 0x06f */   SDL_SCANCODE_DELETE,             /* Delete */
    /* 112, 0x070 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 113, 0x071 */   SDL_SCANCODE_MUTE,               /* XF86AudioMute */
    /* 114, 0x072 */   SDL_SCANCODE_VOLUMEDOWN,         /* XF86AudioLowerVolume */
    /* 115, 0x073 */   SDL_SCANCODE_VOLUMEUP,           /* XF86AudioRaiseVolume */
    /* 116, 0x074 */   SDL_SCANCODE_POWER,              /* XF86PowerOff */
    /* 117, 0x075 */   SDL_SCANCODE_KP_EQUALS,          /* KP_Equal */
    /* 118, 0x076 */   SDL_SCANCODE_KP_PLUSMINUS,       /* plusminus */
    /* 119, 0x077 */   SDL_SCANCODE_PAUSE,              /* Pause */
    /* 120, 0x078 */   SDL_SCANCODE_UNKNOWN,            /* XF86LaunchA */
    /* 121, 0x079 */   SDL_SCANCODE_KP_PERIOD,          /* KP_Decimal */
    /* 122, 0x07a */   SDL_SCANCODE_LANG1,              /* Hangul */
    /* 123, 0x07b */   SDL_SCANCODE_LANG2,              /* Hangul_Hanja */
    /* 124, 0x07c */   SDL_SCANCODE_INTERNATIONAL3,     /* Yen */
    /* 125, 0x07d */   SDL_SCANCODE_LGUI,               /* Super_L */
    /* 126, 0x07e */   SDL_SCANCODE_RGUI,               /* Super_R */
    /* 127, 0x07f */   SDL_SCANCODE_APPLICATION,        /* Menu */
    /* 128, 0x080 */   SDL_SCANCODE_CANCEL,             /* Cancel */
    /* 129, 0x081 */   SDL_SCANCODE_AGAIN,              /* Redo */
    /* 130, 0x082 */   SDL_SCANCODE_UNKNOWN,            /* SunProps */
    /* 131, 0x083 */   SDL_SCANCODE_UNDO,               /* Undo */
    /* 132, 0x084 */   SDL_SCANCODE_UNKNOWN,            /* SunFront */
    /* 133, 0x085 */   SDL_SCANCODE_COPY,               /* XF86Copy */
    /* 134, 0x086 */   SDL_SCANCODE_UNKNOWN,            /* SunOpen, XF86Open */
    /* 135, 0x087 */   SDL_SCANCODE_PASTE,              /* XF86Paste */
    /* 136, 0x088 */   SDL_SCANCODE_FIND,               /* Find */
    /* 137, 0x089 */   SDL_SCANCODE_CUT,                /* XF86Cut */
    /* 138, 0x08a */   SDL_SCANCODE_HELP,               /* Help */
    /* 139, 0x08b */   SDL_SCANCODE_MENU,               /* XF86MenuKB */
    /* 140, 0x08c */   SDL_SCANCODE_CALCULATOR,         /* XF86Calculator */
    /* 141, 0x08d */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 142, 0x08e */   SDL_SCANCODE_SLEEP,              /* XF86Sleep */
    /* 143, 0x08f */   SDL_SCANCODE_UNKNOWN,            /* XF86WakeUp */
    /* 144, 0x090 */   SDL_SCANCODE_UNKNOWN,            /* XF86Explorer */
    /* 145, 0x091 */   SDL_SCANCODE_UNKNOWN,            /* XF86Send */
    /* 146, 0x092 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 147, 0x093 */   SDL_SCANCODE_UNKNOWN,            /* XF86Xfer */
    /* 148, 0x094 */   SDL_SCANCODE_APP1,               /* XF86Launch1 */
    /* 149, 0x095 */   SDL_SCANCODE_APP2,               /* XF86Launch2 */
    /* 150, 0x096 */   SDL_SCANCODE_WWW,                /* XF86WWW */
    /* 151, 0x097 */   SDL_SCANCODE_UNKNOWN,            /* XF86DOS */
    /* 152, 0x098 */   SDL_SCANCODE_UNKNOWN,            /* XF86ScreenSaver */
    /* 153, 0x099 */   SDL_SCANCODE_UNKNOWN,            /* XF86RotateWindows */
    /* 154, 0x09a */   SDL_SCANCODE_UNKNOWN,            /* XF86TaskPane */
    /* 155, 0x09b */   SDL_SCANCODE_MAIL,               /* XF86Mail */
    /* 156, 0x09c */   SDL_SCANCODE_AC_BOOKMARKS,       /* XF86Favorites */
    /* 157, 0x09d */   SDL_SCANCODE_COMPUTER,           /* XF86MyComputer */
    /* 158, 0x09e */   SDL_SCANCODE_AC_BACK,            /* XF86Back */
    /* 159, 0x09f */   SDL_SCANCODE_AC_FORWARD,         /* XF86Forward */
    /* 160, 0x0a0 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 161, 0x0a1 */   SDL_SCANCODE_EJECT,              /* XF86Eject */
    /* 162, 0x0a2 */   SDL_SCANCODE_EJECT,              /* XF86Eject */
    /* 163, 0x0a3 */   SDL_SCANCODE_AUDIONEXT,          /* XF86AudioNext */
    /* 164, 0x0a4 */   SDL_SCANCODE_AUDIOPLAY,          /* XF86AudioPlay */
    /* 165, 0x0a5 */   SDL_SCANCODE_AUDIOPREV,          /* XF86AudioPrev */
    /* 166, 0x0a6 */   SDL_SCANCODE_AUDIOSTOP,          /* XF86AudioStop */
    /* 167, 0x0a7 */   SDL_SCANCODE_UNKNOWN,            /* XF86AudioRecord */
    /* 168, 0x0a8 */   SDL_SCANCODE_AUDIOREWIND,        /* XF86AudioRewind */
    /* 169, 0x0a9 */   SDL_SCANCODE_UNKNOWN,            /* XF86Phone */
    /* 170, 0x0aa */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 171, 0x0ab */   SDL_SCANCODE_F13,                /* XF86Tools */
    /* 172, 0x0ac */   SDL_SCANCODE_AC_HOME,            /* XF86HomePage */
    /* 173, 0x0ad */   SDL_SCANCODE_AC_REFRESH,         /* XF86Reload */
    /* 174, 0x0ae */   SDL_SCANCODE_UNKNOWN,            /* XF86Close */
    /* 175, 0x0af */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 176, 0x0b0 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 177, 0x0b1 */   SDL_SCANCODE_UNKNOWN,            /* XF86ScrollUp */
    /* 178, 0x0b2 */   SDL_SCANCODE_UNKNOWN,            /* XF86ScrollDown */
    /* 179, 0x0b3 */   SDL_SCANCODE_KP_LEFTPAREN,       /* parenleft */
    /* 180, 0x0b4 */   SDL_SCANCODE_KP_RIGHTPAREN,      /* parenright */
    /* 181, 0x0b5 */   SDL_SCANCODE_UNKNOWN,            /* XF86New */
    /* 182, 0x0b6 */   SDL_SCANCODE_AGAIN,              /* Redo */
    /* 183, 0x0b7 */   SDL_SCANCODE_F13,                /* XF86Tools */
    /* 184, 0x0b8 */   SDL_SCANCODE_F14,                /* XF86Launch5 */
    /* 185, 0x0b9 */   SDL_SCANCODE_F15,                /* XF86Launch6 */
    /* 186, 0x0ba */   SDL_SCANCODE_F16,                /* XF86Launch7 */
    /* 187, 0x0bb */   SDL_SCANCODE_F17,                /* XF86Launch8 */
    /* 188, 0x0bc */   SDL_SCANCODE_F18,                /* XF86Launch9 */
    /* 189, 0x0bd */   SDL_SCANCODE_F19,                /* NoSymbol */
    /* 190, 0x0be */   SDL_SCANCODE_F20,                /* XF86AudioMicMute */
    /* 191, 0x0bf */   SDL_SCANCODE_UNKNOWN,            /* XF86TouchpadToggle */
    /* 192, 0x0c0 */   SDL_SCANCODE_UNKNOWN,            /* XF86TouchpadOn */
    /* 193, 0x0c1 */   SDL_SCANCODE_UNKNOWN,            /* XF86TouchpadOff */
    /* 194, 0x0c2 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 195, 0x0c3 */   SDL_SCANCODE_MODE,               /* Mode_switch */
    /* 196, 0x0c4 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 197, 0x0c5 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 198, 0x0c6 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 199, 0x0c7 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 200, 0x0c8 */   SDL_SCANCODE_AUDIOPLAY,          /* XF86AudioPlay */
    /* 201, 0x0c9 */   SDL_SCANCODE_UNKNOWN,            /* XF86AudioPause */
    /* 202, 0x0ca */   SDL_SCANCODE_UNKNOWN,            /* XF86Launch3 */
    /* 203, 0x0cb */   SDL_SCANCODE_UNKNOWN,            /* XF86Launch4 */
    /* 204, 0x0cc */   SDL_SCANCODE_UNKNOWN,            /* XF86LaunchB */
    /* 205, 0x0cd */   SDL_SCANCODE_UNKNOWN,            /* XF86Suspend */
    /* 206, 0x0ce */   SDL_SCANCODE_UNKNOWN,            /* XF86Close */
    /* 207, 0x0cf */   SDL_SCANCODE_AUDIOPLAY,          /* XF86AudioPlay */
    /* 208, 0x0d0 */   SDL_SCANCODE_AUDIOFASTFORWARD,   /* XF86AudioForward */
    /* 209, 0x0d1 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 210, 0x0d2 */   SDL_SCANCODE_PRINTSCREEN,        /* Print */
    /* 211, 0x0d3 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 212, 0x0d4 */   SDL_SCANCODE_UNKNOWN,            /* XF86WebCam */
    /* 213, 0x0d5 */   SDL_SCANCODE_UNKNOWN,            /* XF86AudioPreset */
    /* 214, 0x0d6 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 215, 0x0d7 */   SDL_SCANCODE_MAIL,               /* XF86Mail */
    /* 216, 0x0d8 */   SDL_SCANCODE_UNKNOWN,            /* XF86Messenger */
    /* 217, 0x0d9 */   SDL_SCANCODE_AC_SEARCH,          /* XF86Search */
    /* 218, 0x0da */   SDL_SCANCODE_UNKNOWN,            /* XF86Go */
    /* 219, 0x0db */   SDL_SCANCODE_UNKNOWN,            /* XF86Finance */
    /* 220, 0x0dc */   SDL_SCANCODE_UNKNOWN,            /* XF86Game */
    /* 221, 0x0dd */   SDL_SCANCODE_UNKNOWN,            /* XF86Shop */
    /* 222, 0x0de */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 223, 0x0df */   SDL_SCANCODE_CANCEL,             /* Cancel */
    /* 224, 0x0e0 */   SDL_SCANCODE_BRIGHTNESSDOWN,     /* XF86MonBrightnessDown */
    /* 225, 0x0e1 */   SDL_SCANCODE_BRIGHTNESSUP,       /* XF86MonBrightnessUp */
    /* 226, 0x0e2 */   SDL_SCANCODE_MEDIASELECT,        /* XF86AudioMedia */
    /* 227, 0x0e3 */   SDL_SCANCODE_DISPLAYSWITCH,      /* XF86Display */
    /* 228, 0x0e4 */   SDL_SCANCODE_KBDILLUMTOGGLE,     /* XF86KbdLightOnOff */
    /* 229, 0x0e5 */   SDL_SCANCODE_KBDILLUMDOWN,       /* XF86KbdBrightnessDown */
    /* 230, 0x0e6 */   SDL_SCANCODE_KBDILLUMUP,         /* XF86KbdBrightnessUp */
    /* 231, 0x0e7 */   SDL_SCANCODE_UNKNOWN,            /* XF86Send */
    /* 232, 0x0e8 */   SDL_SCANCODE_UNKNOWN,            /* XF86Reply */
    /* 233, 0x0e9 */   SDL_SCANCODE_UNKNOWN,            /* XF86MailForward */
    /* 234, 0x0ea */   SDL_SCANCODE_UNKNOWN,            /* XF86Save */
    /* 235, 0x0eb */   SDL_SCANCODE_UNKNOWN,            /* XF86Documents */
    /* 236, 0x0ec */   SDL_SCANCODE_UNKNOWN,            /* XF86Battery */
    /* 237, 0x0ed */   SDL_SCANCODE_UNKNOWN,            /* XF86Bluetooth */
    /* 238, 0x0ee */   SDL_SCANCODE_UNKNOWN,            /* XF86WLAN */
    /* 239, 0x0ef */   SDL_SCANCODE_UNKNOWN,            /* XF86UWB */
    /* 240, 0x0f0 */   SDL_SCANCODE_UNKNOWN,            /* NoSymbol */
    /* 241, 0x0f1 */   SDL_SCANCODE_UNKNOWN,            /* XF86Next_VMode */
    /* 242, 0x0f2 */   SDL_SCANCODE_UNKNOWN,            /* XF86Prev_VMode */
    /* 243, 0x0f3 */   SDL_SCANCODE_UNKNOWN,            /* XF86MonBrightnessCycle */
    /* 244, 0x0f4 */   SDL_SCANCODE_UNKNOWN,            /* XF86BrightnessAuto */
    /* 245, 0x0f5 */   SDL_SCANCODE_UNKNOWN,            /* XF86DisplayOff */
    /* 246, 0x0f6 */   SDL_SCANCODE_UNKNOWN,            /* XF86WWAN */
    /* 247, 0x0f7 */   SDL_SCANCODE_UNKNOWN,            /* XF86RFKill */
};

/* Xvnc / Xtightvnc scancodes from xmodmap -pk */
static const SDL_Scancode xvnc_scancode_table[] = {
    /*  0 */    SDL_SCANCODE_LCTRL,
    /*  1 */    SDL_SCANCODE_RCTRL,
    /*  2 */    SDL_SCANCODE_LSHIFT,
    /*  3 */    SDL_SCANCODE_RSHIFT,
    /*  4 */    SDL_SCANCODE_UNKNOWN, /* Meta_L */
    /*  5 */    SDL_SCANCODE_UNKNOWN, /* Meta_R */
    /*  6 */    SDL_SCANCODE_LALT,
    /*  7 */    SDL_SCANCODE_RALT,
    /*  8 */    SDL_SCANCODE_SPACE,
    /*  9 */    SDL_SCANCODE_0,
    /*  10 */   SDL_SCANCODE_1,
    /*  11 */   SDL_SCANCODE_2,
    /*  12 */   SDL_SCANCODE_3,
    /*  13 */   SDL_SCANCODE_4,
    /*  14 */   SDL_SCANCODE_5,
    /*  15 */   SDL_SCANCODE_6,
    /*  16 */   SDL_SCANCODE_7,
    /*  17 */   SDL_SCANCODE_8,
    /*  18 */   SDL_SCANCODE_9,
    /*  19 */   SDL_SCANCODE_MINUS,
    /*  20 */   SDL_SCANCODE_EQUALS,
    /*  21 */   SDL_SCANCODE_LEFTBRACKET,
    /*  22 */   SDL_SCANCODE_RIGHTBRACKET,
    /*  23 */   SDL_SCANCODE_SEMICOLON,
    /*  24 */   SDL_SCANCODE_APOSTROPHE,
    /*  25 */   SDL_SCANCODE_GRAVE,
    /*  26 */   SDL_SCANCODE_COMMA,
    /*  27 */   SDL_SCANCODE_PERIOD,
    /*  28 */   SDL_SCANCODE_SLASH,
    /*  29 */   SDL_SCANCODE_BACKSLASH,
    /*  30 */   SDL_SCANCODE_A,
    /*  31 */   SDL_SCANCODE_B,
    /*  32 */   SDL_SCANCODE_C,
    /*  33 */   SDL_SCANCODE_D,
    /*  34 */   SDL_SCANCODE_E,
    /*  35 */   SDL_SCANCODE_F,
    /*  36 */   SDL_SCANCODE_G,
    /*  37 */   SDL_SCANCODE_H,
    /*  38 */   SDL_SCANCODE_I,
    /*  39 */   SDL_SCANCODE_J,
    /*  40 */   SDL_SCANCODE_K,
    /*  41 */   SDL_SCANCODE_L,
    /*  42 */   SDL_SCANCODE_M,
    /*  43 */   SDL_SCANCODE_N,
    /*  44 */   SDL_SCANCODE_O,
    /*  45 */   SDL_SCANCODE_P,
    /*  46 */   SDL_SCANCODE_Q,
    /*  47 */   SDL_SCANCODE_R,
    /*  48 */   SDL_SCANCODE_S,
    /*  49 */   SDL_SCANCODE_T,
    /*  50 */   SDL_SCANCODE_U,
    /*  51 */   SDL_SCANCODE_V,
    /*  52 */   SDL_SCANCODE_W,
    /*  53 */   SDL_SCANCODE_X,
    /*  54 */   SDL_SCANCODE_Y,
    /*  55 */   SDL_SCANCODE_Z,
    /*  56 */   SDL_SCANCODE_BACKSPACE,
    /*  57 */   SDL_SCANCODE_RETURN,
    /*  58 */   SDL_SCANCODE_TAB,
    /*  59 */   SDL_SCANCODE_ESCAPE,
    /*  60 */   SDL_SCANCODE_DELETE,
    /*  61 */   SDL_SCANCODE_HOME,
    /*  62 */   SDL_SCANCODE_END,
    /*  63 */   SDL_SCANCODE_PAGEUP,
    /*  64 */   SDL_SCANCODE_PAGEDOWN,
    /*  65 */   SDL_SCANCODE_UP,
    /*  66 */   SDL_SCANCODE_DOWN,
    /*  67 */   SDL_SCANCODE_LEFT,
    /*  68 */   SDL_SCANCODE_RIGHT,
    /*  69 */   SDL_SCANCODE_F1,
    /*  70 */   SDL_SCANCODE_F2,
    /*  71 */   SDL_SCANCODE_F3,
    /*  72 */   SDL_SCANCODE_F4,
    /*  73 */   SDL_SCANCODE_F5,
    /*  74 */   SDL_SCANCODE_F6,
    /*  75 */   SDL_SCANCODE_F7,
    /*  76 */   SDL_SCANCODE_F8,
    /*  77 */   SDL_SCANCODE_F9,
    /*  78 */   SDL_SCANCODE_F10,
    /*  79 */   SDL_SCANCODE_F11,
    /*  80 */   SDL_SCANCODE_F12,
};

#endif /* scancodes_xfree86_h_ */

/* *INDENT-ON* */ /* clang-format on */

/* vi: set ts=4 sw=4 expandtab: */
