{.deadCodeElim: on.}
##  The "X11 Window System Protocol" standard defines in Appendix A the
##  keysym codes. These 29-bit integer values identify characters or
##  functions associated with each key (e.g., via the visible
##  engraving) of a keyboard layout. This file assigns mnemonic macro
##  names for these keysyms.
##
##  This file is also compiled (by xc/lib/X11/util/makekeys.c) into
##  hash tables that can be accessed with X11 library functions such as
##  XStringToKeysym() and XKeysymToString().
##
##  Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
##  character, this is noted in a comment that provides both the U+xxxx
##  Unicode position, as well as the official Unicode name of the
##  character.
##
##  Where the correspondence is either not one-to-one or semantically
##  unclear, the Unicode position and name are enclosed in
##  parentheses. Such legacy keysyms should be considered deprecated
##  and are not recommended for use in future keyboard mappings.
##
##  For any future extension of the keysyms with characters already
##  found in ISO 10646 / Unicode, the following algorithm shall be
##  used. The new keysym code position will simply be the character's
##  Unicode number plus 0x01000000. The keysym values in the range
##  0x01000100 to 0x0110ffff are reserved to represent Unicode
##  characters in the range U+0100 to U+10FFFF.
##
##  While most newer Unicode-based X11 clients do already accept
##  Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
##  will remain necessary for clients -- in the interest of
##  compatibility with existing servers -- to also understand the
##  existing legacy keysym values in the range 0x0100 to 0x20ff.
##
##  Where several mnemonic names are defined for the same keysym in this
##  file, all but the first one listed should be considered deprecated.
##
##  Mnemonic names for keysyms are defined in this file with lines
##  that match one of these Perl regular expressions:
##
##     /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
##     /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
##     /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
##
##  When adding new keysyms to this file, do not forget to also update the
##  mappings in xc/lib/X11/KeyBind.c and the protocol specification in
##  xc/doc/specs/XProtocol/X11.keysyms.
##


#KeySym -> ScanCode table

const
  XK_VoidSymbol* = 0xffffff

  ##
  ##  TTY function keys, cleverly chosen to map to ASCII, for convenience of
  ##  programming, but could have been arbitrary (at the cost of lookup
  ##  tables in client code).
  ##
const
 XK_BackSpace* = 0xff08
 XK_Tab* = 0xff09
 XK_Linefeed* = 0xff0a
 XK_Clear* = 0xff0b
 XK_Return* = 0xff0d
 XK_Pause* = 0xff13
 XK_Scroll_Lock* = 0xff14
 XK_Sys_Req* = 0xff15
 XK_Escape* = 0xff1b
 XK_Delete* = 0xffff
  ##  International & multi-key character composition
const
  XK_Multi_key* = 0xff20
  XK_Codeinput* = 0xff37
  XK_SingleCandidate* = 0xff3c
  XK_MultipleCandidate* = 0xff3d
  XK_PreviousCandidate* = 0xff3e
##  Japanese keyboard support
const
  XK_Kanji* = 0xff21
  XK_Muhenkan* = 0xff22
  XK_Henkan_Mode* = 0xff23
  XK_Henkan* = 0xff23
  XK_Romaji* = 0xff24
  XK_Hiragana* = 0xff25
  XK_Katakana* = 0xff26
  XK_Hiragana_Katakana* = 0xff27
  XK_Zenkaku* = 0xff28
  XK_Hankaku* = 0xff29
  XK_Zenkaku_Hankaku* = 0xff2a
  XK_Touroku* = 0xff2b
  XK_Massyo* = 0xff2c
  XK_Kana_Lock* = 0xff2d
  XK_Kana_Shift* = 0xff2e
  XK_Eisu_Shift* = 0xff2f
  XK_Eisu_toggle* = 0xff30
  XK_Kanji_Bangou* = 0xff37
  XK_Zen_Koho* = 0xff3d
  XK_Mae_Koho* = 0xff3e
##  0xff31 thru 0xff3f are under XK_KOREAN
##  Cursor control & motion
const
  XK_Home* = 0xff50
  XK_Left* = 0xff51
  XK_Up* = 0xff52
  XK_Right* = 0xff53
  XK_Down* = 0xff54
  XK_Prior* = 0xff55
  XK_Page_Up* = 0xff55
  XK_Next* = 0xff56
  XK_Page_Down* = 0xff56
  XK_End* = 0xff57
  XK_Begin* = 0xff58
##  Misc functions
const
  XK_Select* = 0xff60
  XK_Print* = 0xff61
  XK_Execute* = 0xff62
  XK_Insert* = 0xff63
  XK_Undo* = 0xff65
  XK_Redo* = 0xff66
  XK_Menu* = 0xff67
  XK_Find* = 0xff68
  XK_Cancel* = 0xff69
  XK_Help* = 0xff6a
  XK_Break* = 0xff6b
  XK_Mode_switch* = 0xff7e
  XK_script_switch* = 0xff7e
  XK_Num_Lock* = 0xff7f
##  Keypad functions, keypad numbers cleverly chosen to map to ASCII
const
  XK_KP_Space* = 0xff80
  XK_KP_Tab* = 0xff89
  XK_KP_Enter* = 0xff8d
  XK_KP_F1* = 0xff91
  XK_KP_F2* = 0xff92
  XK_KP_F3* = 0xff93
  XK_KP_F4* = 0xff94
  XK_KP_Home* = 0xff95
  XK_KP_Left* = 0xff96
  XK_KP_Up* = 0xff97
  XK_KP_Right* = 0xff98
  XK_KP_Down* = 0xff99
  XK_KP_Prior* = 0xff9a
  XK_KP_Page_Up* = 0xff9a
  XK_KP_Next* = 0xff9b
  XK_KP_Page_Down* = 0xff9b
  XK_KP_End* = 0xff9c
  XK_KP_Begin* = 0xff9d
  XK_KP_Insert* = 0xff9e
  XK_KP_Delete* = 0xff9f
  XK_KP_Equal* = 0xffbd
  XK_KP_Multiply* = 0xffaa
  XK_KP_Add* = 0xffab
  XK_KP_Separator* = 0xffac
  XK_KP_Subtract* = 0xffad
  XK_KP_Decimal* = 0xffae
  XK_KP_Divide* = 0xffaf
  XK_KP_0* = 0xffb0
  XK_KP_1* = 0xffb1
  XK_KP_2* = 0xffb2
  XK_KP_3* = 0xffb3
  XK_KP_4* = 0xffb4
  XK_KP_5* = 0xffb5
  XK_KP_6* = 0xffb6
  XK_KP_7* = 0xffb7
  XK_KP_8* = 0xffb8
  XK_KP_9* = 0xffb9
##
##  Auxilliary functions; note the duplicate definitions for left and right
##  function keys;  Sun keyboards and a few other manufactures have such
##  function key groups on the left and/or right sides of the keyboard.
##  We've not found a keyboard with more than 35 function keys total.
##
const
  XK_F1* = 0xffbe
  XK_F2* = 0xffbf
  XK_F3* = 0xffc0
  XK_F4* = 0xffc1
  XK_F5* = 0xffc2
  XK_F6* = 0xffc3
  XK_F7* = 0xffc4
  XK_F8* = 0xffc5
  XK_F9* = 0xffc6
  XK_F10* = 0xffc7
  XK_F11* = 0xffc8
  XK_L1* = 0xffc8
  XK_F12* = 0xffc9
  XK_L2* = 0xffc9
  XK_F13* = 0xffca
  XK_L3* = 0xffca
  XK_F14* = 0xffcb
  XK_L4* = 0xffcb
  XK_F15* = 0xffcc
  XK_L5* = 0xffcc
  XK_F16* = 0xffcd
  XK_L6* = 0xffcd
  XK_F17* = 0xffce
  XK_L7* = 0xffce
  XK_F18* = 0xffcf
  XK_L8* = 0xffcf
  XK_F19* = 0xffd0
  XK_L9* = 0xffd0
  XK_F20* = 0xffd1
  XK_L10* = 0xffd1
  XK_F21* = 0xffd2
  XK_R1* = 0xffd2
  XK_F22* = 0xffd3
  XK_R2* = 0xffd3
  XK_F23* = 0xffd4
  XK_R3* = 0xffd4
  XK_F24* = 0xffd5
  XK_R4* = 0xffd5
  XK_F25* = 0xffd6
  XK_R5* = 0xffd6
  XK_F26* = 0xffd7
  XK_R6* = 0xffd7
  XK_F27* = 0xffd8
  XK_R7* = 0xffd8
  XK_F28* = 0xffd9
  XK_R8* = 0xffd9
  XK_F29* = 0xffda
  XK_R9* = 0xffda
  XK_F30* = 0xffdb
  XK_R10* = 0xffdb
  XK_F31* = 0xffdc
  XK_R11* = 0xffdc
  XK_F32* = 0xffdd
  XK_R12* = 0xffdd
  XK_F33* = 0xffde
  XK_R13* = 0xffde
  XK_F34* = 0xffdf
  XK_R14* = 0xffdf
  XK_F35* = 0xffe0
  XK_R15* = 0xffe0
##  Modifiers
const
  XK_Shift_L* = 0xffe1
  XK_Shift_R* = 0xffe2
  XK_Control_L* = 0xffe3
  XK_Control_R* = 0xffe4
  XK_Caps_Lock* = 0xffe5
  XK_Shift_Lock* = 0xffe6
  XK_Meta_L* = 0xffe7
  XK_Meta_R* = 0xffe8
  XK_Alt_L* = 0xffe9
  XK_Alt_R* = 0xffea
  XK_Super_L* = 0xffeb
  XK_Super_R* = 0xffec
  XK_Hyper_L* = 0xffed
  XK_Hyper_R* = 0xffee

#  Keyboard (XKB) Extension function and modifier keys
#  (from Appendix C of "The X Keyboard Extension: Protocol Specification")
##  Byte 3 = 0xfe
##

when defined(XK_XKB_KEYS):
  const
    XK_ISO_Lock* = 0xfe01
    XK_ISO_Level2_Latch* = 0xfe02
    XK_ISO_Level3_Shift* = 0xfe03
    XK_ISO_Level3_Latch* = 0xfe04
    XK_ISO_Level3_Lock* = 0xfe05
    XK_ISO_Group_Shift* = 0xff7e
    XK_ISO_Group_Latch* = 0xfe06
    XK_ISO_Group_Lock* = 0xfe07
    XK_ISO_Next_Group* = 0xfe08
    XK_ISO_Next_Group_Lock* = 0xfe09
    XK_ISO_Prev_Group* = 0xfe0a
    XK_ISO_Prev_Group_Lock* = 0xfe0b
    XK_ISO_First_Group* = 0xfe0c
    XK_ISO_First_Group_Lock* = 0xfe0d
    XK_ISO_Last_Group* = 0xfe0e
    XK_ISO_Last_Group_Lock* = 0xfe0f
    XK_ISO_Left_Tab* = 0xfe20
    XK_ISO_Move_Line_Up* = 0xfe21
    XK_ISO_Move_Line_Down* = 0xfe22
    XK_ISO_Partial_Line_Up* = 0xfe23
    XK_ISO_Partial_Line_Down* = 0xfe24
    XK_ISO_Partial_Space_Left* = 0xfe25
    XK_ISO_Partial_Space_Right* = 0xfe26
    XK_ISO_Set_Margin_Left* = 0xfe27
    XK_ISO_Set_Margin_Right* = 0xfe28
    XK_ISO_Release_Margin_Left* = 0xfe29
    XK_ISO_Release_Margin_Right* = 0xfe2a
    XK_ISO_Release_Both_Margins* = 0xfe2b
    XK_ISO_Fast_Cursor_Left* = 0xfe2c
    XK_ISO_Fast_Cursor_Right* = 0xfe2d
    XK_ISO_Fast_Cursor_Up* = 0xfe2e
    XK_ISO_Fast_Cursor_Down* = 0xfe2f
    XK_ISO_Continuous_Underline* = 0xfe30
    XK_ISO_Discontinuous_Underline* = 0xfe31
    XK_ISO_Emphasize* = 0xfe32
    XK_ISO_Center_Object* = 0xfe33
    XK_ISO_Enter* = 0xfe34
    XK_dead_grave* = 0xfe50
    XK_dead_acute* = 0xfe51
    XK_dead_circumflex* = 0xfe52
    XK_dead_tilde* = 0xfe53
    XK_dead_macron* = 0xfe54
    XK_dead_breve* = 0xfe55
    XK_dead_abovedot* = 0xfe56
    XK_dead_diaeresis* = 0xfe57
    XK_dead_abovering* = 0xfe58
    XK_dead_doubleacute* = 0xfe59
    XK_dead_caron* = 0xfe5a
    XK_dead_cedilla* = 0xfe5b
    XK_dead_ogonek* = 0xfe5c
    XK_dead_iota* = 0xfe5d
    XK_dead_voiced_sound* = 0xfe5e
    XK_dead_semivoiced_sound* = 0xfe5f
    XK_dead_belowdot* = 0xfe60
    XK_dead_hook* = 0xfe61
    XK_dead_horn* = 0xfe62
    XK_First_Virtual_Screen* = 0xfed0
    XK_Prev_Virtual_Screen* = 0xfed1
    XK_Next_Virtual_Screen* = 0xfed2
    XK_Last_Virtual_Screen* = 0xfed4
    XK_Terminate_Server* = 0xfed5
    XK_AccessX_Enable* = 0xfe70
    XK_AccessX_Feedback_Enable* = 0xfe71
    XK_RepeatKeys_Enable* = 0xfe72
    XK_SlowKeys_Enable* = 0xfe73
    XK_BounceKeys_Enable* = 0xfe74
    XK_StickyKeys_Enable* = 0xfe75
    XK_MouseKeys_Enable* = 0xfe76
    XK_MouseKeys_Accel_Enable* = 0xfe77
    XK_Overlay1_Enable* = 0xfe78
    XK_Overlay2_Enable* = 0xfe79
    XK_AudibleBell_Enable* = 0xfe7a
    XK_Pointer_Left* = 0xfee0
    XK_Pointer_Right* = 0xfee1
    XK_Pointer_Up* = 0xfee2
    XK_Pointer_Down* = 0xfee3
    XK_Pointer_UpLeft* = 0xfee4
    XK_Pointer_UpRight* = 0xfee5
    XK_Pointer_DownLeft* = 0xfee6
    XK_Pointer_DownRight* = 0xfee7
    XK_Pointer_Button_Dflt* = 0xfee8
    XK_Pointer_Button1* = 0xfee9
    XK_Pointer_Button2* = 0xfeea
    XK_Pointer_Button3* = 0xfeeb
    XK_Pointer_Button4* = 0xfeec
    XK_Pointer_Button5* = 0xfeed
    XK_Pointer_DblClick_Dflt* = 0xfeee
    XK_Pointer_DblClick1* = 0xfeef
    XK_Pointer_DblClick2* = 0xfef0
    XK_Pointer_DblClick3* = 0xfef1
    XK_Pointer_DblClick4* = 0xfef2
    XK_Pointer_DblClick5* = 0xfef3
    XK_Pointer_Drag_Dflt* = 0xfef4
    XK_Pointer_Drag1* = 0xfef5
    XK_Pointer_Drag2* = 0xfef6
    XK_Pointer_Drag3* = 0xfef7
    XK_Pointer_Drag4* = 0xfef8
    XK_Pointer_Drag5* = 0xfefd
    XK_Pointer_EnableKeys* = 0xfef9
    XK_Pointer_Accelerate* = 0xfefa
    XK_Pointer_DfltBtnNext* = 0xfefb
    XK_Pointer_DfltBtnPrev* = 0xfefc
##
##  3270 Terminal Keys
##  Byte 3 = 0xfd
##

when defined(XK_3270):
  const
    XK_3270_Duplicate* = 0xfd01
    XK_3270_FieldMark* = 0xfd02
    XK_3270_Right2* = 0xfd03
    XK_3270_Left2* = 0xfd04
    XK_3270_BackTab* = 0xfd05
    XK_3270_EraseEOF* = 0xfd06
    XK_3270_EraseInput* = 0xfd07
    XK_3270_Reset* = 0xfd08
    XK_3270_Quit* = 0xfd09
    XK_3270_PA1* = 0xfd0a
    XK_3270_PA2* = 0xfd0b
    XK_3270_PA3* = 0xfd0c
    XK_3270_Test* = 0xfd0d
    XK_3270_Attn* = 0xfd0e
    XK_3270_CursorBlink* = 0xfd0f
    XK_3270_AltCursor* = 0xfd10
    XK_3270_KeyClick* = 0xfd11
    XK_3270_Jump* = 0xfd12
    XK_3270_Ident* = 0xfd13
    XK_3270_Rule* = 0xfd14
    XK_3270_Copy* = 0xfd15
    XK_3270_Play* = 0xfd16
    XK_3270_Setup* = 0xfd17
    XK_3270_Record* = 0xfd18
    XK_3270_ChangeScreen* = 0xfd19
    XK_3270_DeleteWord* = 0xfd1a
    XK_3270_ExSelect* = 0xfd1b
    XK_3270_CursorSelect* = 0xfd1c
    XK_3270_PrintScreen* = 0xfd1d
    XK_3270_Enter* = 0xfd1e
##
##  Latin 1
##  (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
##  Byte 3 = 0
##
const
 XK_space* = 0x0020
 XK_exclam* = 0x0021
 XK_quotedbl* = 0x0022
 XK_numbersign* = 0x0023
 XK_dollar* = 0x0024
 XK_percent* = 0x0025
 XK_ampersand* = 0x0026
 XK_apostrophe* = 0x0027
 XK_quoteright* = 0x0027
 XK_parenleft* = 0x0028
 XK_parenright* = 0x0029
 XK_asterisk* = 0x002a
 XK_plus* = 0x002b
 XK_comma* = 0x002c
 XK_minus* = 0x002d
 XK_period* = 0x002e
 XK_slash* = 0x002f
 XK_0* = 0x0030
 XK_1* = 0x0031
 XK_2* = 0x0032
 XK_3* = 0x0033
 XK_4* = 0x0034
 XK_5* = 0x0035
 XK_6* = 0x0036
 XK_7* = 0x0037
 XK_8* = 0x0038
 XK_9* = 0x0039
 XK_colon* = 0x003a
 XK_semicolon* = 0x003b
 XK_less* = 0x003c
 XK_equal* = 0x003d
 XK_greater* = 0x003e
 XK_question* = 0x003f
 XK_at* = 0x0040
 XK_A* = 0x0041
 XK_B* = 0x0042
 XK_C* = 0x0043
 XK_D* = 0x0044
 XK_E* = 0x0045
 XK_F* = 0x0046
 XK_G* = 0x0047
 XK_H* = 0x0048
 XK_I* = 0x0049
 XK_J* = 0x004a
 XK_K* = 0x004b
 XK_L* = 0x004c
 XK_M* = 0x004d
 XK_N* = 0x004e
 XK_O* = 0x004f
 XK_P* = 0x0050
 XK_Q* = 0x0051
 XK_R* = 0x0052
 XK_S* = 0x0053
 XK_T* = 0x0054
 XK_U* = 0x0055
 XK_V* = 0x0056
 XK_W* = 0x0057
 XK_X* = 0x0058
 XK_Y* = 0x0059
 XK_Z* = 0x005a
 XK_bracketleft* = 0x005b
 XK_backslash* = 0x005c
 XK_bracketright* = 0x005d
 XK_asciicircum* = 0x005e
 XK_underscore* = 0x005f
 XK_grave* = 0x0060
 XK_quoteleft* = 0x0060
 # Because nim devs are stupid stupid stupid 
 # and the language has case-insensitivity (among other naming things) that causes XK_a and XK_A to be considered the """"""""""""""same""""""""""""
 XK_aa* = 0x0061
 XK_bb* = 0x0062
 XK_cc* = 0x0063
 XK_dd* = 0x0064
 XK_ee* = 0x0065
 XK_ff* = 0x0066
 XK_gg* = 0x0067
 XK_hh* = 0x0068
 XK_ii* = 0x0069
 XK_jj* = 0x006a
 XK_kk* = 0x006b
 XK_ll* = 0x006c
 XK_mm* = 0x006d
 XK_nn* = 0x006e
 XK_oo* = 0x006f
 XK_pp* = 0x0070
 XK_qq* = 0x0071
 XK_rr* = 0x0072
 XK_ss* = 0x0073
 XK_tt* = 0x0074
 XK_uu* = 0x0075
 XK_vv* = 0x0076
 XK_ww* = 0x0077
 XK_xx* = 0x0078
 XK_yy* = 0x0079
 XK_zz* = 0x007a
 XK_braceleft* = 0x007b
 XK_bar* = 0x007c
 XK_braceright* = 0x007d
 XK_asciitilde* = 0x007e
 XK_nobreakspace* = 0x00a0
    # XK_exclamdown* = 0x00a1
    # XK_cent* = 0x00a2
    # XK_sterling* = 0x00a3
    # XK_currency* = 0x00a4
    # XK_yen* = 0x00a5
    # XK_brokenbar* = 0x00a6
    # XK_section* = 0x00a7
    # XK_diaeresis* = 0x00a8
    # XK_copyright* = 0x00a9
    # XK_ordfeminine* = 0x00aa
    # XK_guillemotleft* = 0x00ab
    # XK_notsign* = 0x00ac
    # XK_hyphen* = 0x00ad
    # XK_registered* = 0x00ae
    # XK_macron* = 0x00af
    # XK_degree* = 0x00b0
    # XK_plusminus* = 0x00b1
    # XK_twosuperior* = 0x00b2
    # XK_threesuperior* = 0x00b3
    # XK_acute* = 0x00b4
    # XK_mu* = 0x00b5
    # XK_paragraph* = 0x00b6
    # XK_periodcentered* = 0x00b7
    # XK_cedilla* = 0x00b8
    # XK_onesuperior* = 0x00b9
    # XK_masculine* = 0x00ba
    # XK_guillemotright* = 0x00bb
    # XK_onequarter* = 0x00bc
    # XK_onehalf* = 0x00bd
    # XK_threequarters* = 0x00be
    # XK_questiondown* = 0x00bf
    # XK_Agrave* = 0x00c0
    # XK_Aacute* = 0x00c1
    # XK_Acircumflex* = 0x00c2
    # XK_Atilde* = 0x00c3
    # XK_Adiaeresis* = 0x00c4
    # XK_Aring* = 0x00c5
    # XK_AE* = 0x00c6
    # XK_Ccedilla* = 0x00c7
    # XK_Egrave* = 0x00c8
    # XK_Eacute* = 0x00c9
    # XK_Ecircumflex* = 0x00ca
    # XK_Ediaeresis* = 0x00cb
    # XK_Igrave* = 0x00cc
    # XK_Iacute* = 0x00cd
    # XK_Icircumflex* = 0x00ce
    # XK_Idiaeresis* = 0x00cf
    # XK_ETH* = 0x00d0
    # XK_Ethh* = 0x00d0
    # XK_Ntilde* = 0x00d1
    # XK_Ograve* = 0x00d2
    # XK_Oacute* = 0x00d3
    # XK_Ocircumflex* = 0x00d4
    # XK_Otilde* = 0x00d5
    # XK_Odiaeresis* = 0x00d6
    # XK_multiply* = 0x00d7
    # XK_Oslash* = 0x00d8
    # XK_Ooblique* = 0x00d8
    # XK_Ugrave* = 0x00d9
    # XK_Uacute* = 0x00da
    # XK_Ucircumflex* = 0x00db
    # XK_Udiaeresis* = 0x00dc
    # XK_Yacute* = 0x00dd
    # XK_THORN* = 0x00de
    # XK_Thornn* = 0x00de
    # XK_ssharp* = 0x00df
    # XK_agravee* = 0x00e0
    # XK_aacutee* = 0x00e1
    # XK_acircumflexx* = 0x00e2
    # XK_atildee* = 0x00e3
    # XK_adiaeresiss* = 0x00e4
    # XK_aringg* = 0x00e5
    # XK_aee* = 0x00e6
    # when you uncomment these, you will probably get a lot of redefinition errors because
    # stupid stupid stupid nim devs
    # XK_ccedilla* = 0x00e7
    # XK_egrave* = 0x00e8
    # XK_eacute* = 0x00e9
    # XK_ecircumflex* = 0x00ea
    # XK_ediaeresis* = 0x00eb
    # XK_igrave* = 0x00ec
    # XK_iacute* = 0x00ed
    # XK_icircumflex* = 0x00ee
    # XK_idiaeresis* = 0x00ef
    # XK_eth* = 0x00f0
    # XK_ntilde* = 0x00f1
    # XK_ograve* = 0x00f2
    # XK_oacute* = 0x00f3
    # XK_ocircumflex* = 0x00f4
    # XK_otilde* = 0x00f5
    # XK_odiaeresis* = 0x00f6
    # XK_division* = 0x00f7
    # XK_oslash* = 0x00f8
    # XK_ooblique* = 0x00f8
    # XK_ugrave* = 0x00f9
    # XK_uacute* = 0x00fa
    # XK_ucircumflex* = 0x00fb
    # XK_udiaeresis* = 0x00fc
    # XK_yacute* = 0x00fd
    # XK_thorn* = 0x00fe
    # XK_ydiaeresis* = 0x00ff
##
##  Latin 2
##  Byte 3 = 1
##

# when defined(XK_LATIN2):
#   const
#     XK_Aogonek* = 0x01a1
#     XK_breve* = 0x01a2
#     XK_Lstroke* = 0x01a3
#     XK_Lcaron* = 0x01a5
#     XK_Sacute* = 0x01a6
#     XK_Scaron* = 0x01a9
#     XK_Scedilla* = 0x01aa
#     XK_Tcaron* = 0x01ab
#     XK_Zacute* = 0x01ac
#     XK_Zcaron* = 0x01ae
#     XK_Zabovedot* = 0x01af
#     XK_aogonek* = 0x01b1
#     XK_ogonek* = 0x01b2
#     XK_lstroke* = 0x01b3
#     XK_lcaron* = 0x01b5
#     XK_sacute* = 0x01b6
#     XK_caron* = 0x01b7
#     XK_scaron* = 0x01b9
#     XK_scedilla* = 0x01ba
#     XK_tcaron* = 0x01bb
#     XK_zacute* = 0x01bc
#     XK_doubleacute* = 0x01bd
#     XK_zcaron* = 0x01be
#     XK_zabovedot* = 0x01bf
#     XK_Racute* = 0x01c0
#     XK_Abreve* = 0x01c3
#     XK_Lacute* = 0x01c5
#     XK_Cacute* = 0x01c6
#     XK_Ccaron* = 0x01c8
#     XK_Eogonek* = 0x01ca
#     XK_Ecaron* = 0x01cc
#     XK_Dcaron* = 0x01cf
#     XK_Dstroke* = 0x01d0
#     XK_Nacute* = 0x01d1
#     XK_Ncaron* = 0x01d2
#     XK_Odoubleacute* = 0x01d5
#     XK_Rcaron* = 0x01d8
#     XK_Uring* = 0x01d9
#     XK_Udoubleacute* = 0x01db
#     XK_Tcedilla* = 0x01de
#     XK_racute* = 0x01e0
#     XK_abreve* = 0x01e3
#     XK_lacute* = 0x01e5
#     XK_cacute* = 0x01e6
#     XK_ccaron* = 0x01e8
#     XK_eogonek* = 0x01ea
#     XK_ecaron* = 0x01ec
#     XK_dcaron* = 0x01ef
#     XK_dstroke* = 0x01f0
#     XK_nacute* = 0x01f1
#     XK_ncaron* = 0x01f2
#     XK_odoubleacute* = 0x01f5
#     XK_udoubleacute* = 0x01fb
#     XK_rcaron* = 0x01f8
#     XK_uring* = 0x01f9
#     XK_tcedilla* = 0x01fe
#     XK_abovedot* = 0x01ff
# ##
# ##  Latin 3
# ##  Byte 3 = 2
# ##

# when defined(XK_LATIN3):
#   const
#     XK_Hstroke* = 0x02a1
#     XK_Hcircumflex* = 0x02a6
#     XK_Iabovedot* = 0x02a9
#     XK_Gbreve* = 0x02ab
#     XK_Jcircumflex* = 0x02ac
#     XK_hstroke* = 0x02b1
#     XK_hcircumflex* = 0x02b6
#     XK_idotless* = 0x02b9
#     XK_gbreve* = 0x02bb
#     XK_jcircumflex* = 0x02bc
#     XK_Cabovedot* = 0x02c5
#     XK_Ccircumflex* = 0x02c6
#     XK_Gabovedot* = 0x02d5
#     XK_Gcircumflex* = 0x02d8
#     XK_Ubreve* = 0x02dd
#     XK_Scircumflex* = 0x02de
#     XK_cabovedot* = 0x02e5
#     XK_ccircumflex* = 0x02e6
#     XK_gabovedot* = 0x02f5
#     XK_gcircumflex* = 0x02f8
#     XK_ubreve* = 0x02fd
#     XK_scircumflex* = 0x02fe
# ##
# ##  Latin 4
# ##  Byte 3 = 3
# ##

# when defined(XK_LATIN4):
#   const
#     XK_kra* = 0x03a2
#     XK_kappa* = 0x03a2
#     XK_Rcedilla* = 0x03a3
#     XK_Itilde* = 0x03a5
#     XK_Lcedilla* = 0x03a6
#     XK_Emacron* = 0x03aa
#     XK_Gcedilla* = 0x03ab
#     XK_Tslash* = 0x03ac
#     XK_rcedilla* = 0x03b3
#     XK_itilde* = 0x03b5
#     XK_lcedilla* = 0x03b6
#     XK_emacron* = 0x03ba
#     XK_gcedilla* = 0x03bb
#     XK_tslash* = 0x03bc
#     XK_ENG* = 0x03bd
#     XK_eng* = 0x03bf
#     XK_Amacron* = 0x03c0
#     XK_Iogonek* = 0x03c7
#     XK_Eabovedot* = 0x03cc
#     XK_Imacron* = 0x03cf
#     XK_Ncedilla* = 0x03d1
#     XK_Omacron* = 0x03d2
#     XK_Kcedilla* = 0x03d3
#     XK_Uogonek* = 0x03d9
#     XK_Utilde* = 0x03dd
#     XK_Umacron* = 0x03de
#     XK_amacron* = 0x03e0
#     XK_iogonek* = 0x03e7
#     XK_eabovedot* = 0x03ec
#     XK_imacron* = 0x03ef
#     XK_ncedilla* = 0x03f1
#     XK_omacron* = 0x03f2
#     XK_kcedilla* = 0x03f3
#     XK_uogonek* = 0x03f9
#     XK_utilde* = 0x03fd
#     XK_umacron* = 0x03fe
# ##
# ##  Latin 8
# ##

# when defined(XK_LATIN8):
#   const
#     XK_Babovedot* = 0x1001e02
#     XK_babovedot* = 0x1001e03
#     XK_Dabovedot* = 0x1001e0a
#     XK_Wgrave* = 0x1001e80
#     XK_Wacute* = 0x1001e82
#     XK_dabovedot* = 0x1001e0b
#     XK_Ygrave* = 0x1001ef2
#     XK_Fabovedot* = 0x1001e1e
#     XK_fabovedot* = 0x1001e1f
#     XK_Mabovedot* = 0x1001e40
#     XK_mabovedot* = 0x1001e41
#     XK_Pabovedot* = 0x1001e56
#     XK_wgrave* = 0x1001e81
#     XK_pabovedot* = 0x1001e57
#     XK_wacute* = 0x1001e83
#     XK_Sabovedot* = 0x1001e60
#     XK_ygrave* = 0x1001ef3
#     XK_Wdiaeresis* = 0x1001e84
#     XK_wdiaeresis* = 0x1001e85
#     XK_sabovedot* = 0x1001e61
#     XK_Wcircumflex* = 0x1000174
#     XK_Tabovedot* = 0x1001e6a
#     XK_Ycircumflex* = 0x1000176
#     XK_wcircumflex* = 0x1000175
#     XK_tabovedot* = 0x1001e6b
#     XK_ycircumflex* = 0x1000177
# ##
# ##  Latin 9
# ##  Byte 3 = 0x13
# ##

# when defined(XK_LATIN9):
#   const
#     XK_OE* = 0x13bc
#     XK_oe* = 0x13bd
#     XK_Ydiaeresis* = 0x13be
# ##
# ##  Katakana
# ##  Byte 3 = 4
# ##

# when defined(XK_KATAKANA):
#   const
#     XK_overline* = 0x047e
#     XK_kana_fullstop* = 0x04a1
#     XK_kana_openingbracket* = 0x04a2
#     XK_kana_closingbracket* = 0x04a3
#     XK_kana_comma* = 0x04a4
#     XK_kana_conjunctive* = 0x04a5
#     XK_kana_middledot* = 0x04a5
#     XK_kana_WO* = 0x04a6
#     XK_kana_a* = 0x04a7
#     XK_kana_i* = 0x04a8
#     XK_kana_u* = 0x04a9
#     XK_kana_e* = 0x04aa
#     XK_kana_o* = 0x04ab
#     XK_kana_ya* = 0x04ac
#     XK_kana_yu* = 0x04ad
#     XK_kana_yo* = 0x04ae
#     XK_kana_tsu* = 0x04af
#     XK_kana_tu* = 0x04af
#     XK_prolongedsound* = 0x04b0
#     XK_kana_A* = 0x04b1
#     XK_kana_I* = 0x04b2
#     XK_kana_U* = 0x04b3
#     XK_kana_E* = 0x04b4
#     XK_kana_O* = 0x04b5
#     XK_kana_KA* = 0x04b6
#     XK_kana_KI* = 0x04b7
#     XK_kana_KU* = 0x04b8
#     XK_kana_KE* = 0x04b9
#     XK_kana_KO* = 0x04ba
#     XK_kana_SA* = 0x04bb
#     XK_kana_SHI* = 0x04bc
#     XK_kana_SU* = 0x04bd
#     XK_kana_SE* = 0x04be
#     XK_kana_SO* = 0x04bf
#     XK_kana_TA* = 0x04c0
#     XK_kana_CHI* = 0x04c1
#     XK_kana_TI* = 0x04c1
#     XK_kana_TSU* = 0x04c2
#     XK_kana_TU* = 0x04c2
#     XK_kana_TE* = 0x04c3
#     XK_kana_TO* = 0x04c4
#     XK_kana_NA* = 0x04c5
#     XK_kana_NI* = 0x04c6
#     XK_kana_NU* = 0x04c7
#     XK_kana_NE* = 0x04c8
#     XK_kana_NO* = 0x04c9
#     XK_kana_HA* = 0x04ca
#     XK_kana_HI* = 0x04cb
#     XK_kana_FU* = 0x04cc
#     XK_kana_HU* = 0x04cc
#     XK_kana_HE* = 0x04cd
#     XK_kana_HO* = 0x04ce
#     XK_kana_MA* = 0x04cf
#     XK_kana_MI* = 0x04d0
#     XK_kana_MU* = 0x04d1
#     XK_kana_ME* = 0x04d2
#     XK_kana_MO* = 0x04d3
#     XK_kana_YA* = 0x04d4
#     XK_kana_YU* = 0x04d5
#     XK_kana_YO* = 0x04d6
#     XK_kana_RA* = 0x04d7
#     XK_kana_RI* = 0x04d8
#     XK_kana_RU* = 0x04d9
#     XK_kana_RE* = 0x04da
#     XK_kana_RO* = 0x04db
#     XK_kana_WA* = 0x04dc
#     XK_kana_N* = 0x04dd
#     XK_voicedsound* = 0x04de
#     XK_semivoicedsound* = 0x04df
#     XK_kana_switch* = 0xff7e
# ##
# ##  Arabic
# ##  Byte 3 = 5
# ##

# when defined(XK_ARABIC):
#   const
#     XK_Farsi_0* = 0x10006f0
#     XK_Farsi_1* = 0x10006f1
#     XK_Farsi_2* = 0x10006f2
#     XK_Farsi_3* = 0x10006f3
#     XK_Farsi_4* = 0x10006f4
#     XK_Farsi_5* = 0x10006f5
#     XK_Farsi_6* = 0x10006f6
#     XK_Farsi_7* = 0x10006f7
#     XK_Farsi_8* = 0x10006f8
#     XK_Farsi_9* = 0x10006f9
#     XK_Arabic_percent* = 0x100066a
#     XK_Arabic_superscript_alef* = 0x1000670
#     XK_Arabic_tteh* = 0x1000679
#     XK_Arabic_peh* = 0x100067e
#     XK_Arabic_tcheh* = 0x1000686
#     XK_Arabic_ddal* = 0x1000688
#     XK_Arabic_rreh* = 0x1000691
#     XK_Arabic_comma* = 0x05ac
#     XK_Arabic_fullstop* = 0x10006d4
#     XK_Arabic_0* = 0x1000660
#     XK_Arabic_1* = 0x1000661
#     XK_Arabic_2* = 0x1000662
#     XK_Arabic_3* = 0x1000663
#     XK_Arabic_4* = 0x1000664
#     XK_Arabic_5* = 0x1000665
#     XK_Arabic_6* = 0x1000666
#     XK_Arabic_7* = 0x1000667
#     XK_Arabic_8* = 0x1000668
#     XK_Arabic_9* = 0x1000669
#     XK_Arabic_semicolon* = 0x05bb
#     XK_Arabic_question_mark* = 0x05bf
#     XK_Arabic_hamza* = 0x05c1
#     XK_Arabic_maddaonalef* = 0x05c2
#     XK_Arabic_hamzaonalef* = 0x05c3
#     XK_Arabic_hamzaonwaw* = 0x05c4
#     XK_Arabic_hamzaunderalef* = 0x05c5
#     XK_Arabic_hamzaonyeh* = 0x05c6
#     XK_Arabic_alef* = 0x05c7
#     XK_Arabic_beh* = 0x05c8
#     XK_Arabic_tehmarbuta* = 0x05c9
#     XK_Arabic_teh* = 0x05ca
#     XK_Arabic_theh* = 0x05cb
#     XK_Arabic_jeem* = 0x05cc
#     XK_Arabic_hah* = 0x05cd
#     XK_Arabic_khah* = 0x05ce
#     XK_Arabic_dal* = 0x05cf
#     XK_Arabic_thal* = 0x05d0
#     XK_Arabic_ra* = 0x05d1
#     XK_Arabic_zain* = 0x05d2
#     XK_Arabic_seen* = 0x05d3
#     XK_Arabic_sheen* = 0x05d4
#     XK_Arabic_sad* = 0x05d5
#     XK_Arabic_dad* = 0x05d6
#     XK_Arabic_tah* = 0x05d7
#     XK_Arabic_zah* = 0x05d8
#     XK_Arabic_ain* = 0x05d9
#     XK_Arabic_ghain* = 0x05da
#     XK_Arabic_tatweel* = 0x05e0
#     XK_Arabic_feh* = 0x05e1
#     XK_Arabic_qaf* = 0x05e2
#     XK_Arabic_kaf* = 0x05e3
#     XK_Arabic_lam* = 0x05e4
#     XK_Arabic_meem* = 0x05e5
#     XK_Arabic_noon* = 0x05e6
#     XK_Arabic_ha* = 0x05e7
#     XK_Arabic_heh* = 0x05e7
#     XK_Arabic_waw* = 0x05e8
#     XK_Arabic_alefmaksura* = 0x05e9
#     XK_Arabic_yeh* = 0x05ea
#     XK_Arabic_fathatan* = 0x05eb
#     XK_Arabic_dammatan* = 0x05ec
#     XK_Arabic_kasratan* = 0x05ed
#     XK_Arabic_fatha* = 0x05ee
#     XK_Arabic_damma* = 0x05ef
#     XK_Arabic_kasra* = 0x05f0
#     XK_Arabic_shadda* = 0x05f1
#     XK_Arabic_sukun* = 0x05f2
#     XK_Arabic_madda_above* = 0x1000653
#     XK_Arabic_hamza_above* = 0x1000654
#     XK_Arabic_hamza_below* = 0x1000655
#     XK_Arabic_jeh* = 0x1000698
#     XK_Arabic_veh* = 0x10006a4
#     XK_Arabic_keheh* = 0x10006a9
#     XK_Arabic_gaf* = 0x10006af
#     XK_Arabic_noon_ghunna* = 0x10006ba
#     XK_Arabic_heh_doachashmee* = 0x10006be
#     XK_Farsi_yeh* = 0x10006cc
#     XK_Arabic_farsi_yeh* = 0x10006cc
#     XK_Arabic_yeh_baree* = 0x10006d2
#     XK_Arabic_heh_goal* = 0x10006c1
#     XK_Arabic_switch* = 0xff7e
# ##
# ##  Cyrillic
# ##  Byte 3 = 6
# ##

# when defined(XK_CYRILLIC):
#   const
#     XK_Cyrillic_GHE_bar* = 0x1000492
#     XK_Cyrillic_ghe_bar* = 0x1000493
#     XK_Cyrillic_ZHE_descender* = 0x1000496
#     XK_Cyrillic_zhe_descender* = 0x1000497
#     XK_Cyrillic_KA_descender* = 0x100049a
#     XK_Cyrillic_ka_descender* = 0x100049b
#     XK_Cyrillic_KA_vertstroke* = 0x100049c
#     XK_Cyrillic_ka_vertstroke* = 0x100049d
#     XK_Cyrillic_EN_descender* = 0x10004a2
#     XK_Cyrillic_en_descender* = 0x10004a3
#     XK_Cyrillic_U_straight* = 0x10004ae
#     XK_Cyrillic_u_straight* = 0x10004af
#     XK_Cyrillic_U_straight_bar* = 0x10004b0
#     XK_Cyrillic_u_straight_bar* = 0x10004b1
#     XK_Cyrillic_HA_descender* = 0x10004b2
#     XK_Cyrillic_ha_descender* = 0x10004b3
#     XK_Cyrillic_CHE_descender* = 0x10004b6
#     XK_Cyrillic_che_descender* = 0x10004b7
#     XK_Cyrillic_CHE_vertstroke* = 0x10004b8
#     XK_Cyrillic_che_vertstroke* = 0x10004b9
#     XK_Cyrillic_SHHA* = 0x10004ba
#     XK_Cyrillic_shha* = 0x10004bb
#     XK_Cyrillic_SCHWA* = 0x10004d8
#     XK_Cyrillic_schwa* = 0x10004d9
#     XK_Cyrillic_I_macron* = 0x10004e2
#     XK_Cyrillic_i_macron* = 0x10004e3
#     XK_Cyrillic_O_bar* = 0x10004e8
#     XK_Cyrillic_o_bar* = 0x10004e9
#     XK_Cyrillic_U_macron* = 0x10004ee
#     XK_Cyrillic_u_macron* = 0x10004ef
#     XK_Serbian_dje* = 0x06a1
#     XK_Macedonia_gje* = 0x06a2
#     XK_Cyrillic_io* = 0x06a3
#     XK_Ukrainian_ie* = 0x06a4
#     XK_Ukranian_je* = 0x06a4
#     XK_Macedonia_dse* = 0x06a5
#     XK_Ukrainian_i* = 0x06a6
#     XK_Ukranian_i* = 0x06a6
#     XK_Ukrainian_yi* = 0x06a7
#     XK_Ukranian_yi* = 0x06a7
#     XK_Cyrillic_je* = 0x06a8
#     XK_Serbian_je* = 0x06a8
#     XK_Cyrillic_lje* = 0x06a9
#     XK_Serbian_lje* = 0x06a9
#     XK_Cyrillic_nje* = 0x06aa
#     XK_Serbian_nje* = 0x06aa
#     XK_Serbian_tshe* = 0x06ab
#     XK_Macedonia_kje* = 0x06ac
#     XK_Ukrainian_ghe_with_upturn* = 0x06ad
#     XK_Byelorussian_shortu* = 0x06ae
#     XK_Cyrillic_dzhe* = 0x06af
#     XK_Serbian_dze* = 0x06af
#     XK_numerosign* = 0x06b0
#     XK_Serbian_DJE* = 0x06b1
#     XK_Macedonia_GJE* = 0x06b2
#     XK_Cyrillic_IO* = 0x06b3
#     XK_Ukrainian_IE* = 0x06b4
#     XK_Ukranian_JE* = 0x06b4
#     XK_Macedonia_DSE* = 0x06b5
#     XK_Ukrainian_I* = 0x06b6
#     XK_Ukranian_I* = 0x06b6
#     XK_Ukrainian_YI* = 0x06b7
#     XK_Ukranian_YI* = 0x06b7
#     XK_Cyrillic_JE* = 0x06b8
#     XK_Serbian_JE* = 0x06b8
#     XK_Cyrillic_LJE* = 0x06b9
#     XK_Serbian_LJE* = 0x06b9
#     XK_Cyrillic_NJE* = 0x06ba
#     XK_Serbian_NJE* = 0x06ba
#     XK_Serbian_TSHE* = 0x06bb
#     XK_Macedonia_KJE* = 0x06bc
#     XK_Ukrainian_GHE_WITH_UPTURN* = 0x06bd
#     XK_Byelorussian_SHORTU* = 0x06be
#     XK_Cyrillic_DZHE* = 0x06bf
#     XK_Serbian_DZE* = 0x06bf
#     XK_Cyrillic_yu* = 0x06c0
#     XK_Cyrillic_a* = 0x06c1
#     XK_Cyrillic_be* = 0x06c2
#     XK_Cyrillic_tse* = 0x06c3
#     XK_Cyrillic_de* = 0x06c4
#     XK_Cyrillic_ie* = 0x06c5
#     XK_Cyrillic_ef* = 0x06c6
#     XK_Cyrillic_ghe* = 0x06c7
#     XK_Cyrillic_ha* = 0x06c8
#     XK_Cyrillic_i* = 0x06c9
#     XK_Cyrillic_shorti* = 0x06ca
#     XK_Cyrillic_ka* = 0x06cb
#     XK_Cyrillic_el* = 0x06cc
#     XK_Cyrillic_em* = 0x06cd
#     XK_Cyrillic_en* = 0x06ce
#     XK_Cyrillic_o* = 0x06cf
#     XK_Cyrillic_pe* = 0x06d0
#     XK_Cyrillic_ya* = 0x06d1
#     XK_Cyrillic_er* = 0x06d2
#     XK_Cyrillic_es* = 0x06d3
#     XK_Cyrillic_te* = 0x06d4
#     XK_Cyrillic_u* = 0x06d5
#     XK_Cyrillic_zhe* = 0x06d6
#     XK_Cyrillic_ve* = 0x06d7
#     XK_Cyrillic_softsign* = 0x06d8
#     XK_Cyrillic_yeru* = 0x06d9
#     XK_Cyrillic_ze* = 0x06da
#     XK_Cyrillic_sha* = 0x06db
#     XK_Cyrillic_e* = 0x06dc
#     XK_Cyrillic_shcha* = 0x06dd
#     XK_Cyrillic_che* = 0x06de
#     XK_Cyrillic_hardsign* = 0x06df
#     XK_Cyrillic_YU* = 0x06e0
#     XK_Cyrillic_A* = 0x06e1
#     XK_Cyrillic_BE* = 0x06e2
#     XK_Cyrillic_TSE* = 0x06e3
#     XK_Cyrillic_DE* = 0x06e4
#     XK_Cyrillic_IE* = 0x06e5
#     XK_Cyrillic_EF* = 0x06e6
#     XK_Cyrillic_GHE* = 0x06e7
#     XK_Cyrillic_HA* = 0x06e8
#     XK_Cyrillic_I* = 0x06e9
#     XK_Cyrillic_SHORTI* = 0x06ea
#     XK_Cyrillic_KA* = 0x06eb
#     XK_Cyrillic_EL* = 0x06ec
#     XK_Cyrillic_EM* = 0x06ed
#     XK_Cyrillic_EN* = 0x06ee
#     XK_Cyrillic_O* = 0x06ef
#     XK_Cyrillic_PE* = 0x06f0
#     XK_Cyrillic_YA* = 0x06f1
#     XK_Cyrillic_ER* = 0x06f2
#     XK_Cyrillic_ES* = 0x06f3
#     XK_Cyrillic_TE* = 0x06f4
#     XK_Cyrillic_U* = 0x06f5
#     XK_Cyrillic_ZHE* = 0x06f6
#     XK_Cyrillic_VE* = 0x06f7
#     XK_Cyrillic_SOFTSIGN* = 0x06f8
#     XK_Cyrillic_YERU* = 0x06f9
#     XK_Cyrillic_ZE* = 0x06fa
#     XK_Cyrillic_SHA* = 0x06fb
#     XK_Cyrillic_E* = 0x06fc
#     XK_Cyrillic_SHCHA* = 0x06fd
#     XK_Cyrillic_CHE* = 0x06fe
#     XK_Cyrillic_HARDSIGN* = 0x06ff
# ##
# ##  Greek
# ##  (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
# ##  Byte 3 = 7
# ##

# when defined(XK_GREEK):
#   const
#     XK_Greek_ALPHAaccent* = 0x07a1
#     XK_Greek_EPSILONaccent* = 0x07a2
#     XK_Greek_ETAaccent* = 0x07a3
#     XK_Greek_IOTAaccent* = 0x07a4
#     XK_Greek_IOTAdieresis* = 0x07a5
#     XK_Greek_IOTAdiaeresis* = 0x07a5
#     XK_Greek_OMICRONaccent* = 0x07a7
#     XK_Greek_UPSILONaccent* = 0x07a8
#     XK_Greek_UPSILONdieresis* = 0x07a9
#     XK_Greek_OMEGAaccent* = 0x07ab
#     XK_Greek_accentdieresis* = 0x07ae
#     XK_Greek_horizbar* = 0x07af
#     XK_Greek_alphaaccent* = 0x07b1
#     XK_Greek_epsilonaccent* = 0x07b2
#     XK_Greek_etaaccent* = 0x07b3
#     XK_Greek_iotaaccent* = 0x07b4
#     XK_Greek_iotadieresis* = 0x07b5
#     XK_Greek_iotaaccentdieresis* = 0x07b6
#     XK_Greek_omicronaccent* = 0x07b7
#     XK_Greek_upsilonaccent* = 0x07b8
#     XK_Greek_upsilondieresis* = 0x07b9
#     XK_Greek_upsilonaccentdieresis* = 0x07ba
#     XK_Greek_omegaaccent* = 0x07bb
#     XK_Greek_ALPHA* = 0x07c1
#     XK_Greek_BETA* = 0x07c2
#     XK_Greek_GAMMA* = 0x07c3
#     XK_Greek_DELTA* = 0x07c4
#     XK_Greek_EPSILON* = 0x07c5
#     XK_Greek_ZETA* = 0x07c6
#     XK_Greek_ETA* = 0x07c7
#     XK_Greek_THETA* = 0x07c8
#     XK_Greek_IOTA* = 0x07c9
#     XK_Greek_KAPPA* = 0x07ca
#     XK_Greek_LAMDA* = 0x07cb
#     XK_Greek_LAMBDA* = 0x07cb
#     XK_Greek_MU* = 0x07cc
#     XK_Greek_NU* = 0x07cd
#     XK_Greek_XI* = 0x07ce
#     XK_Greek_OMICRON* = 0x07cf
#     XK_Greek_PI* = 0x07d0
#     XK_Greek_RHO* = 0x07d1
#     XK_Greek_SIGMA* = 0x07d2
#     XK_Greek_TAU* = 0x07d4
#     XK_Greek_UPSILON* = 0x07d5
#     XK_Greek_PHI* = 0x07d6
#     XK_Greek_CHI* = 0x07d7
#     XK_Greek_PSI* = 0x07d8
#     XK_Greek_OMEGA* = 0x07d9
#     XK_Greek_alpha* = 0x07e1
#     XK_Greek_beta* = 0x07e2
#     XK_Greek_gamma* = 0x07e3
#     XK_Greek_delta* = 0x07e4
#     XK_Greek_epsilon* = 0x07e5
#     XK_Greek_zeta* = 0x07e6
#     XK_Greek_eta* = 0x07e7
#     XK_Greek_theta* = 0x07e8
#     XK_Greek_iota* = 0x07e9
#     XK_Greek_kappa* = 0x07ea
#     XK_Greek_lamda* = 0x07eb
#     XK_Greek_lambda* = 0x07eb
#     XK_Greek_mu* = 0x07ec
#     XK_Greek_nu* = 0x07ed
#     XK_Greek_xi* = 0x07ee
#     XK_Greek_omicron* = 0x07ef
#     XK_Greek_pi* = 0x07f0
#     XK_Greek_rho* = 0x07f1
#     XK_Greek_sigma* = 0x07f2
#     XK_Greek_finalsmallsigma* = 0x07f3
#     XK_Greek_tau* = 0x07f4
#     XK_Greek_upsilon* = 0x07f5
#     XK_Greek_phi* = 0x07f6
#     XK_Greek_chi* = 0x07f7
#     XK_Greek_psi* = 0x07f8
#     XK_Greek_omega* = 0x07f9
#     XK_Greek_switch* = 0xff7e
# ##
# ##  Technical
# ##  (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
# ##  Byte 3 = 8
# ##

# when defined(XK_TECHNICAL):
#   const
#     XK_leftradical* = 0x08a1
#     XK_topleftradical* = 0x08a2
#     XK_horizconnector* = 0x08a3
#     XK_topintegral* = 0x08a4
#     XK_botintegral* = 0x08a5
#     XK_vertconnector* = 0x08a6
#     XK_topleftsqbracket* = 0x08a7
#     XK_botleftsqbracket* = 0x08a8
#     XK_toprightsqbracket* = 0x08a9
#     XK_botrightsqbracket* = 0x08aa
#     XK_topleftparens* = 0x08ab
#     XK_botleftparens* = 0x08ac
#     XK_toprightparens* = 0x08ad
#     XK_botrightparens* = 0x08ae
#     XK_leftmiddlecurlybrace* = 0x08af
#     XK_rightmiddlecurlybrace* = 0x08b0
#     XK_topleftsummation* = 0x08b1
#     XK_botleftsummation* = 0x08b2
#     XK_topvertsummationconnector* = 0x08b3
#     XK_botvertsummationconnector* = 0x08b4
#     XK_toprightsummation* = 0x08b5
#     XK_botrightsummation* = 0x08b6
#     XK_rightmiddlesummation* = 0x08b7
#     XK_lessthanequal* = 0x08bc
#     XK_notequal* = 0x08bd
#     XK_greaterthanequal* = 0x08be
#     XK_integral* = 0x08bf
#     XK_therefore* = 0x08c0
#     XK_variation* = 0x08c1
#     XK_infinity* = 0x08c2
#     XK_nabla* = 0x08c5
#     XK_approximate* = 0x08c8
#     XK_similarequal* = 0x08c9
#     XK_ifonlyif* = 0x08cd
#     XK_implies* = 0x08ce
#     XK_identical* = 0x08cf
#     XK_radical* = 0x08d6
#     XK_includedin* = 0x08da
#     XK_includes* = 0x08db
#     XK_intersection* = 0x08dc
#     XK_union* = 0x08dd
#     XK_logicaland* = 0x08de
#     XK_logicalor* = 0x08df
#     XK_partialderivative* = 0x08ef
#     XK_function* = 0x08f6
#     XK_leftarrow* = 0x08fb
#     XK_uparrow* = 0x08fc
#     XK_rightarrow* = 0x08fd
#     XK_downarrow* = 0x08fe
# ##
# ##  Special
# ##  (from the DEC VT100 Special Graphics Character Set)
# ##  Byte 3 = 9
# ##

# when defined(XK_SPECIAL):
#   const
#     XK_blank* = 0x09df
#     XK_soliddiamond* = 0x09e0
#     XK_checkerboard* = 0x09e1
#     XK_ht* = 0x09e2
#     XK_ff* = 0x09e3
#     XK_cr* = 0x09e4
#     XK_lf* = 0x09e5
#     XK_nl* = 0x09e8
#     XK_vt* = 0x09e9
#     XK_lowrightcorner* = 0x09ea
#     XK_uprightcorner* = 0x09eb
#     XK_upleftcorner* = 0x09ec
#     XK_lowleftcorner* = 0x09ed
#     XK_crossinglines* = 0x09ee
#     XK_horizlinescan1* = 0x09ef
#     XK_horizlinescan3* = 0x09f0
#     XK_horizlinescan5* = 0x09f1
#     XK_horizlinescan7* = 0x09f2
#     XK_horizlinescan9* = 0x09f3
#     XK_leftt* = 0x09f4
#     XK_rightt* = 0x09f5
#     XK_bott* = 0x09f6
#     XK_topt* = 0x09f7
#     XK_vertbar* = 0x09f8
# ##
# ##  Publishing
# ##  (these are probably from a long forgotten DEC Publishing
# ##  font that once shipped with DECwrite)
# ##  Byte 3 = 0x0a
# ##

# when defined(XK_PUBLISHING):
#   const
#     XK_emspace* = 0x0aa1
#     XK_enspace* = 0x0aa2
#     XK_em3space* = 0x0aa3
#     XK_em4space* = 0x0aa4
#     XK_digitspace* = 0x0aa5
#     XK_punctspace* = 0x0aa6
#     XK_thinspace* = 0x0aa7
#     XK_hairspace* = 0x0aa8
#     XK_emdash* = 0x0aa9
#     XK_endash* = 0x0aaa
#     XK_signifblank* = 0x0aac
#     XK_ellipsis* = 0x0aae
#     XK_doubbaselinedot* = 0x0aaf
#     XK_onethird* = 0x0ab0
#     XK_twothirds* = 0x0ab1
#     XK_onefifth* = 0x0ab2
#     XK_twofifths* = 0x0ab3
#     XK_threefifths* = 0x0ab4
#     XK_fourfifths* = 0x0ab5
#     XK_onesixth* = 0x0ab6
#     XK_fivesixths* = 0x0ab7
#     XK_careof* = 0x0ab8
#     XK_figdash* = 0x0abb
#     XK_leftanglebracket* = 0x0abc
#     XK_decimalpoint* = 0x0abd
#     XK_rightanglebracket* = 0x0abe
#     XK_marker* = 0x0abf
#     XK_oneeighth* = 0x0ac3
#     XK_threeeighths* = 0x0ac4
#     XK_fiveeighths* = 0x0ac5
#     XK_seveneighths* = 0x0ac6
#     XK_trademark* = 0x0ac9
#     XK_signaturemark* = 0x0aca
#     XK_trademarkincircle* = 0x0acb
#     XK_leftopentriangle* = 0x0acc
#     XK_rightopentriangle* = 0x0acd
#     XK_emopencircle* = 0x0ace
#     XK_emopenrectangle* = 0x0acf
#     XK_leftsinglequotemark* = 0x0ad0
#     XK_rightsinglequotemark* = 0x0ad1
#     XK_leftdoublequotemark* = 0x0ad2
#     XK_rightdoublequotemark* = 0x0ad3
#     XK_prescription* = 0x0ad4
#     XK_minutes* = 0x0ad6
#     XK_seconds* = 0x0ad7
#     XK_latincross* = 0x0ad9
#     XK_hexagram* = 0x0ada
#     XK_filledrectbullet* = 0x0adb
#     XK_filledlefttribullet* = 0x0adc
#     XK_filledrighttribullet* = 0x0add
#     XK_emfilledcircle* = 0x0ade
#     XK_emfilledrect* = 0x0adf
#     XK_enopencircbullet* = 0x0ae0
#     XK_enopensquarebullet* = 0x0ae1
#     XK_openrectbullet* = 0x0ae2
#     XK_opentribulletup* = 0x0ae3
#     XK_opentribulletdown* = 0x0ae4
#     XK_openstar* = 0x0ae5
#     XK_enfilledcircbullet* = 0x0ae6
#     XK_enfilledsqbullet* = 0x0ae7
#     XK_filledtribulletup* = 0x0ae8
#     XK_filledtribulletdown* = 0x0ae9
#     XK_leftpointer* = 0x0aea
#     XK_rightpointer* = 0x0aeb
#     XK_club* = 0x0aec
#     XK_diamond* = 0x0aed
#     XK_heart* = 0x0aee
#     XK_maltesecross* = 0x0af0
#     XK_dagger* = 0x0af1
#     XK_doubledagger* = 0x0af2
#     XK_checkmark* = 0x0af3
#     XK_ballotcross* = 0x0af4
#     XK_musicalsharp* = 0x0af5
#     XK_musicalflat* = 0x0af6
#     XK_malesymbol* = 0x0af7
#     XK_femalesymbol* = 0x0af8
#     XK_telephone* = 0x0af9
#     XK_telephonerecorder* = 0x0afa
#     XK_phonographcopyright* = 0x0afb
#     XK_caret* = 0x0afc
#     XK_singlelowquotemark* = 0x0afd
#     XK_doublelowquotemark* = 0x0afe
#     XK_cursor* = 0x0aff
# ##
# ##  APL
# ##  Byte 3 = 0x0b
# ##

# when defined(XK_APL):
#   const
#     XK_leftcaret* = 0x0ba3
#     XK_rightcaret* = 0x0ba6
#     XK_downcaret* = 0x0ba8
#     XK_upcaret* = 0x0ba9
#     XK_overbar* = 0x0bc0
#     XK_downtack* = 0x0bc2
#     XK_upshoe* = 0x0bc3
#     XK_downstile* = 0x0bc4
#     XK_underbar* = 0x0bc6
#     XK_jot* = 0x0bca
#     XK_quad* = 0x0bcc
#     XK_uptack* = 0x0bce
#     XK_circle* = 0x0bcf
#     XK_upstile* = 0x0bd3
#     XK_downshoe* = 0x0bd6
#     XK_rightshoe* = 0x0bd8
#     XK_leftshoe* = 0x0bda
#     XK_lefttack* = 0x0bdc
#     XK_righttack* = 0x0bfc
# ##
# ##  Hebrew
# ##  Byte 3 = 0x0c
# ##

# when defined(XK_HEBREW):
#   const
#     XK_hebrew_doublelowline* = 0x0cdf
#     XK_hebrew_aleph* = 0x0ce0
#     XK_hebrew_bet* = 0x0ce1
#     XK_hebrew_beth* = 0x0ce1
#     XK_hebrew_gimel* = 0x0ce2
#     XK_hebrew_gimmel* = 0x0ce2
#     XK_hebrew_dalet* = 0x0ce3
#     XK_hebrew_daleth* = 0x0ce3
#     XK_hebrew_he* = 0x0ce4
#     XK_hebrew_waw* = 0x0ce5
#     XK_hebrew_zain* = 0x0ce6
#     XK_hebrew_zayin* = 0x0ce6
#     XK_hebrew_chet* = 0x0ce7
#     XK_hebrew_het* = 0x0ce7
#     XK_hebrew_tet* = 0x0ce8
#     XK_hebrew_teth* = 0x0ce8
#     XK_hebrew_yod* = 0x0ce9
#     XK_hebrew_finalkaph* = 0x0cea
#     XK_hebrew_kaph* = 0x0ceb
#     XK_hebrew_lamed* = 0x0cec
#     XK_hebrew_finalmem* = 0x0ced
#     XK_hebrew_mem* = 0x0cee
#     XK_hebrew_finalnun* = 0x0cef
#     XK_hebrew_nun* = 0x0cf0
#     XK_hebrew_samech* = 0x0cf1
#     XK_hebrew_samekh* = 0x0cf1
#     XK_hebrew_ayin* = 0x0cf2
#     XK_hebrew_finalpe* = 0x0cf3
#     XK_hebrew_pe* = 0x0cf4
#     XK_hebrew_finalzade* = 0x0cf5
#     XK_hebrew_finalzadi* = 0x0cf5
#     XK_hebrew_zade* = 0x0cf6
#     XK_hebrew_zadi* = 0x0cf6
#     XK_hebrew_qoph* = 0x0cf7
#     XK_hebrew_kuf* = 0x0cf7
#     XK_hebrew_resh* = 0x0cf8
#     XK_hebrew_shin* = 0x0cf9
#     XK_hebrew_taw* = 0x0cfa
#     XK_hebrew_taf* = 0x0cfa
#     XK_Hebrew_switch* = 0xff7e
# ##
# ##  Thai
# ##  Byte 3 = 0x0d
# ##

# when defined(XK_THAI):
#   const
#     XK_Thai_kokai* = 0x0da1
#     XK_Thai_khokhai* = 0x0da2
#     XK_Thai_khokhuat* = 0x0da3
#     XK_Thai_khokhwai* = 0x0da4
#     XK_Thai_khokhon* = 0x0da5
#     XK_Thai_khorakhang* = 0x0da6
#     XK_Thai_ngongu* = 0x0da7
#     XK_Thai_chochan* = 0x0da8
#     XK_Thai_choching* = 0x0da9
#     XK_Thai_chochang* = 0x0daa
#     XK_Thai_soso* = 0x0dab
#     XK_Thai_chochoe* = 0x0dac
#     XK_Thai_yoying* = 0x0dad
#     XK_Thai_dochada* = 0x0dae
#     XK_Thai_topatak* = 0x0daf
#     XK_Thai_thothan* = 0x0db0
#     XK_Thai_thonangmontho* = 0x0db1
#     XK_Thai_thophuthao* = 0x0db2
#     XK_Thai_nonen* = 0x0db3
#     XK_Thai_dodek* = 0x0db4
#     XK_Thai_totao* = 0x0db5
#     XK_Thai_thothung* = 0x0db6
#     XK_Thai_thothahan* = 0x0db7
#     XK_Thai_thothong* = 0x0db8
#     XK_Thai_nonu* = 0x0db9
#     XK_Thai_bobaimai* = 0x0dba
#     XK_Thai_popla* = 0x0dbb
#     XK_Thai_phophung* = 0x0dbc
#     XK_Thai_fofa* = 0x0dbd
#     XK_Thai_phophan* = 0x0dbe
#     XK_Thai_fofan* = 0x0dbf
#     XK_Thai_phosamphao* = 0x0dc0
#     XK_Thai_moma* = 0x0dc1
#     XK_Thai_yoyak* = 0x0dc2
#     XK_Thai_rorua* = 0x0dc3
#     XK_Thai_ru* = 0x0dc4
#     XK_Thai_loling* = 0x0dc5
#     XK_Thai_lu* = 0x0dc6
#     XK_Thai_wowaen* = 0x0dc7
#     XK_Thai_sosala* = 0x0dc8
#     XK_Thai_sorusi* = 0x0dc9
#     XK_Thai_sosua* = 0x0dca
#     XK_Thai_hohip* = 0x0dcb
#     XK_Thai_lochula* = 0x0dcc
#     XK_Thai_oang* = 0x0dcd
#     XK_Thai_honokhuk* = 0x0dce
#     XK_Thai_paiyannoi* = 0x0dcf
#     XK_Thai_saraa* = 0x0dd0
#     XK_Thai_maihanakat* = 0x0dd1
#     XK_Thai_saraaa* = 0x0dd2
#     XK_Thai_saraam* = 0x0dd3
#     XK_Thai_sarai* = 0x0dd4
#     XK_Thai_saraii* = 0x0dd5
#     XK_Thai_saraue* = 0x0dd6
#     XK_Thai_sarauee* = 0x0dd7
#     XK_Thai_sarau* = 0x0dd8
#     XK_Thai_sarauu* = 0x0dd9
#     XK_Thai_phinthu* = 0x0dda
#     XK_Thai_maihanakat_maitho* = 0x0dde
#     XK_Thai_baht* = 0x0ddf
#     XK_Thai_sarae* = 0x0de0
#     XK_Thai_saraae* = 0x0de1
#     XK_Thai_sarao* = 0x0de2
#     XK_Thai_saraaimaimuan* = 0x0de3
#     XK_Thai_saraaimaimalai* = 0x0de4
#     XK_Thai_lakkhangyao* = 0x0de5
#     XK_Thai_maiyamok* = 0x0de6
#     XK_Thai_maitaikhu* = 0x0de7
#     XK_Thai_maiek* = 0x0de8
#     XK_Thai_maitho* = 0x0de9
#     XK_Thai_maitri* = 0x0dea
#     XK_Thai_maichattawa* = 0x0deb
#     XK_Thai_thanthakhat* = 0x0dec
#     XK_Thai_nikhahit* = 0x0ded
#     XK_Thai_leksun* = 0x0df0
#     XK_Thai_leknung* = 0x0df1
#     XK_Thai_leksong* = 0x0df2
#     XK_Thai_leksam* = 0x0df3
#     XK_Thai_leksi* = 0x0df4
#     XK_Thai_lekha* = 0x0df5
#     XK_Thai_lekhok* = 0x0df6
#     XK_Thai_lekchet* = 0x0df7
#     XK_Thai_lekpaet* = 0x0df8
#     XK_Thai_lekkao* = 0x0df9
# ##
# ##  Korean
# ##  Byte 3 = 0x0e
# ##

# when defined(XK_KOREAN):
#   const
#     XK_Hangul* = 0xff31
#     XK_Hangul_Start* = 0xff32
#     XK_Hangul_End* = 0xff33
#     XK_Hangul_Hanja* = 0xff34
#     XK_Hangul_Jamo* = 0xff35
#     XK_Hangul_Romaja* = 0xff36
#     XK_Hangul_Codeinput* = 0xff37
#     XK_Hangul_Jeonja* = 0xff38
#     XK_Hangul_Banja* = 0xff39
#     XK_Hangul_PreHanja* = 0xff3a
#     XK_Hangul_PostHanja* = 0xff3b
#     XK_Hangul_SingleCandidate* = 0xff3c
#     XK_Hangul_MultipleCandidate* = 0xff3d
#     XK_Hangul_PreviousCandidate* = 0xff3e
#     XK_Hangul_Special* = 0xff3f
#     XK_Hangul_switch* = 0xff7e
#   ##  Hangul Consonant Characters
#   const
#     XK_Hangul_Kiyeog* = 0x0ea1
#     XK_Hangul_SsangKiyeog* = 0x0ea2
#     XK_Hangul_KiyeogSios* = 0x0ea3
#     XK_Hangul_Nieun* = 0x0ea4
#     XK_Hangul_NieunJieuj* = 0x0ea5
#     XK_Hangul_NieunHieuh* = 0x0ea6
#     XK_Hangul_Dikeud* = 0x0ea7
#     XK_Hangul_SsangDikeud* = 0x0ea8
#     XK_Hangul_Rieul* = 0x0ea9
#     XK_Hangul_RieulKiyeog* = 0x0eaa
#     XK_Hangul_RieulMieum* = 0x0eab
#     XK_Hangul_RieulPieub* = 0x0eac
#     XK_Hangul_RieulSios* = 0x0ead
#     XK_Hangul_RieulTieut* = 0x0eae
#     XK_Hangul_RieulPhieuf* = 0x0eaf
#     XK_Hangul_RieulHieuh* = 0x0eb0
#     XK_Hangul_Mieum* = 0x0eb1
#     XK_Hangul_Pieub* = 0x0eb2
#     XK_Hangul_SsangPieub* = 0x0eb3
#     XK_Hangul_PieubSios* = 0x0eb4
#     XK_Hangul_Sios* = 0x0eb5
#     XK_Hangul_SsangSios* = 0x0eb6
#     XK_Hangul_Ieung* = 0x0eb7
#     XK_Hangul_Jieuj* = 0x0eb8
#     XK_Hangul_SsangJieuj* = 0x0eb9
#     XK_Hangul_Cieuc* = 0x0eba
#     XK_Hangul_Khieuq* = 0x0ebb
#     XK_Hangul_Tieut* = 0x0ebc
#     XK_Hangul_Phieuf* = 0x0ebd
#     XK_Hangul_Hieuh* = 0x0ebe
#   ##  Hangul Vowel Characters
#   const
#     XK_Hangul_A* = 0x0ebf
#     XK_Hangul_AE* = 0x0ec0
#     XK_Hangul_YA* = 0x0ec1
#     XK_Hangul_YAE* = 0x0ec2
#     XK_Hangul_EO* = 0x0ec3
#     XK_Hangul_E* = 0x0ec4
#     XK_Hangul_YEO* = 0x0ec5
#     XK_Hangul_YE* = 0x0ec6
#     XK_Hangul_O* = 0x0ec7
#     XK_Hangul_WA* = 0x0ec8
#     XK_Hangul_WAE* = 0x0ec9
#     XK_Hangul_OE* = 0x0eca
#     XK_Hangul_YO* = 0x0ecb
#     XK_Hangul_U* = 0x0ecc
#     XK_Hangul_WEO* = 0x0ecd
#     XK_Hangul_WE* = 0x0ece
#     XK_Hangul_WI* = 0x0ecf
#     XK_Hangul_YU* = 0x0ed0
#     XK_Hangul_EU* = 0x0ed1
#     XK_Hangul_YI* = 0x0ed2
#     XK_Hangul_I* = 0x0ed3
#   ##  Hangul syllable-final (JongSeong) Characters
#   const
#     XK_Hangul_J_Kiyeog* = 0x0ed4
#     XK_Hangul_J_SsangKiyeog* = 0x0ed5
#     XK_Hangul_J_KiyeogSios* = 0x0ed6
#     XK_Hangul_J_Nieun* = 0x0ed7
#     XK_Hangul_J_NieunJieuj* = 0x0ed8
#     XK_Hangul_J_NieunHieuh* = 0x0ed9
#     XK_Hangul_J_Dikeud* = 0x0eda
#     XK_Hangul_J_Rieul* = 0x0edb
#     XK_Hangul_J_RieulKiyeog* = 0x0edc
#     XK_Hangul_J_RieulMieum* = 0x0edd
#     XK_Hangul_J_RieulPieub* = 0x0ede
#     XK_Hangul_J_RieulSios* = 0x0edf
#     XK_Hangul_J_RieulTieut* = 0x0ee0
#     XK_Hangul_J_RieulPhieuf* = 0x0ee1
#     XK_Hangul_J_RieulHieuh* = 0x0ee2
#     XK_Hangul_J_Mieum* = 0x0ee3
#     XK_Hangul_J_Pieub* = 0x0ee4
#     XK_Hangul_J_PieubSios* = 0x0ee5
#     XK_Hangul_J_Sios* = 0x0ee6
#     XK_Hangul_J_SsangSios* = 0x0ee7
#     XK_Hangul_J_Ieung* = 0x0ee8
#     XK_Hangul_J_Jieuj* = 0x0ee9
#     XK_Hangul_J_Cieuc* = 0x0eea
#     XK_Hangul_J_Khieuq* = 0x0eeb
#     XK_Hangul_J_Tieut* = 0x0eec
#     XK_Hangul_J_Phieuf* = 0x0eed
#     XK_Hangul_J_Hieuh* = 0x0eee
#   ##  Ancient Hangul Consonant Characters
#   const
#     XK_Hangul_RieulYeorinHieuh* = 0x0eef
#     XK_Hangul_SunkyeongeumMieum* = 0x0ef0
#     XK_Hangul_SunkyeongeumPieub* = 0x0ef1
#     XK_Hangul_PanSios* = 0x0ef2
#     XK_Hangul_KkogjiDalrinIeung* = 0x0ef3
#     XK_Hangul_SunkyeongeumPhieuf* = 0x0ef4
#     XK_Hangul_YeorinHieuh* = 0x0ef5
#   ##  Ancient Hangul Vowel Characters
#   const
#     XK_Hangul_AraeA* = 0x0ef6
#     XK_Hangul_AraeAE* = 0x0ef7
#   ##  Ancient Hangul syllable-final (JongSeong) Characters
#   const
#     XK_Hangul_J_PanSios* = 0x0ef8
#     XK_Hangul_J_KkogjiDalrinIeung* = 0x0ef9
#     XK_Hangul_J_YeorinHieuh* = 0x0efa
#   ##  Korean currency symbol
#   const
#     XK_Korean_Won* = 0x0eff
# ##
# ##  Armenian
# ##

# when defined(XK_ARMENIAN):
#   const
#     XK_Armenian_ligature_ew* = 0x1000587
#     XK_Armenian_full_stop* = 0x1000589
#     XK_Armenian_verjaket* = 0x1000589
#     XK_Armenian_separation_mark* = 0x100055d
#     XK_Armenian_but* = 0x100055d
#     XK_Armenian_hyphen* = 0x100058a
#     XK_Armenian_yentamna* = 0x100058a
#     XK_Armenian_exclam* = 0x100055c
#     XK_Armenian_amanak* = 0x100055c
#     XK_Armenian_accent* = 0x100055b
#     XK_Armenian_shesht* = 0x100055b
#     XK_Armenian_question* = 0x100055e
#     XK_Armenian_paruyk* = 0x100055e
#     XK_Armenian_AYB* = 0x1000531
#     XK_Armenian_ayb* = 0x1000561
#     XK_Armenian_BEN* = 0x1000532
#     XK_Armenian_ben* = 0x1000562
#     XK_Armenian_GIM* = 0x1000533
#     XK_Armenian_gim* = 0x1000563
#     XK_Armenian_DA* = 0x1000534
#     XK_Armenian_da* = 0x1000564
#     XK_Armenian_YECH* = 0x1000535
#     XK_Armenian_yech* = 0x1000565
#     XK_Armenian_ZA* = 0x1000536
#     XK_Armenian_za* = 0x1000566
#     XK_Armenian_E* = 0x1000537
#     XK_Armenian_e* = 0x1000567
#     XK_Armenian_AT* = 0x1000538
#     XK_Armenian_at* = 0x1000568
#     XK_Armenian_TO* = 0x1000539
#     XK_Armenian_to* = 0x1000569
#     XK_Armenian_ZHE* = 0x100053a
#     XK_Armenian_zhe* = 0x100056a
#     XK_Armenian_INI* = 0x100053b
#     XK_Armenian_ini* = 0x100056b
#     XK_Armenian_LYUN* = 0x100053c
#     XK_Armenian_lyun* = 0x100056c
#     XK_Armenian_KHE* = 0x100053d
#     XK_Armenian_khe* = 0x100056d
#     XK_Armenian_TSA* = 0x100053e
#     XK_Armenian_tsa* = 0x100056e
#     XK_Armenian_KEN* = 0x100053f
#     XK_Armenian_ken* = 0x100056f
#     XK_Armenian_HO* = 0x1000540
#     XK_Armenian_ho* = 0x1000570
#     XK_Armenian_DZA* = 0x1000541
#     XK_Armenian_dza* = 0x1000571
#     XK_Armenian_GHAT* = 0x1000542
#     XK_Armenian_ghat* = 0x1000572
#     XK_Armenian_TCHE* = 0x1000543
#     XK_Armenian_tche* = 0x1000573
#     XK_Armenian_MEN* = 0x1000544
#     XK_Armenian_men* = 0x1000574
#     XK_Armenian_HI* = 0x1000545
#     XK_Armenian_hi* = 0x1000575
#     XK_Armenian_NU* = 0x1000546
#     XK_Armenian_nu* = 0x1000576
#     XK_Armenian_SHA* = 0x1000547
#     XK_Armenian_sha* = 0x1000577
#     XK_Armenian_VO* = 0x1000548
#     XK_Armenian_vo* = 0x1000578
#     XK_Armenian_CHA* = 0x1000549
#     XK_Armenian_cha* = 0x1000579
#     XK_Armenian_PE* = 0x100054a
#     XK_Armenian_pe* = 0x100057a
#     XK_Armenian_JE* = 0x100054b
#     XK_Armenian_je* = 0x100057b
#     XK_Armenian_RA* = 0x100054c
#     XK_Armenian_ra* = 0x100057c
#     XK_Armenian_SE* = 0x100054d
#     XK_Armenian_se* = 0x100057d
#     XK_Armenian_VEV* = 0x100054e
#     XK_Armenian_vev* = 0x100057e
#     XK_Armenian_TYUN* = 0x100054f
#     XK_Armenian_tyun* = 0x100057f
#     XK_Armenian_RE* = 0x1000550
#     XK_Armenian_re* = 0x1000580
#     XK_Armenian_TSO* = 0x1000551
#     XK_Armenian_tso* = 0x1000581
#     XK_Armenian_VYUN* = 0x1000552
#     XK_Armenian_vyun* = 0x1000582
#     XK_Armenian_PYUR* = 0x1000553
#     XK_Armenian_pyur* = 0x1000583
#     XK_Armenian_KE* = 0x1000554
#     XK_Armenian_ke* = 0x1000584
#     XK_Armenian_O* = 0x1000555
#     XK_Armenian_o* = 0x1000585
#     XK_Armenian_FE* = 0x1000556
#     XK_Armenian_fe* = 0x1000586
#     XK_Armenian_apostrophe* = 0x100055a
# ##
# ##  Georgian
# ##

# when defined(XK_GEORGIAN):
#   const
#     XK_Georgian_an* = 0x10010d0
#     XK_Georgian_ban* = 0x10010d1
#     XK_Georgian_gan* = 0x10010d2
#     XK_Georgian_don* = 0x10010d3
#     XK_Georgian_en* = 0x10010d4
#     XK_Georgian_vin* = 0x10010d5
#     XK_Georgian_zen* = 0x10010d6
#     XK_Georgian_tan* = 0x10010d7
#     XK_Georgian_in* = 0x10010d8
#     XK_Georgian_kan* = 0x10010d9
#     XK_Georgian_las* = 0x10010da
#     XK_Georgian_man* = 0x10010db
#     XK_Georgian_nar* = 0x10010dc
#     XK_Georgian_on* = 0x10010dd
#     XK_Georgian_par* = 0x10010de
#     XK_Georgian_zhar* = 0x10010df
#     XK_Georgian_rae* = 0x10010e0
#     XK_Georgian_san* = 0x10010e1
#     XK_Georgian_tar* = 0x10010e2
#     XK_Georgian_un* = 0x10010e3
#     XK_Georgian_phar* = 0x10010e4
#     XK_Georgian_khar* = 0x10010e5
#     XK_Georgian_ghan* = 0x10010e6
#     XK_Georgian_qar* = 0x10010e7
#     XK_Georgian_shin* = 0x10010e8
#     XK_Georgian_chin* = 0x10010e9
#     XK_Georgian_can* = 0x10010ea
#     XK_Georgian_jil* = 0x10010eb
#     XK_Georgian_cil* = 0x10010ec
#     XK_Georgian_char* = 0x10010ed
#     XK_Georgian_xan* = 0x10010ee
#     XK_Georgian_jhan* = 0x10010ef
#     XK_Georgian_hae* = 0x10010f0
#     XK_Georgian_he* = 0x10010f1
#     XK_Georgian_hie* = 0x10010f2
#     XK_Georgian_we* = 0x10010f3
#     XK_Georgian_har* = 0x10010f4
#     XK_Georgian_hoe* = 0x10010f5
#     XK_Georgian_fi* = 0x10010f6
# ##
# ##  Azeri (and other Turkic or Caucasian languages)
# ##

# when defined(XK_CAUCASUS):
#   ##  latin
#   const
#     XK_Xabovedot* = 0x1001e8a
#     XK_Ibreve* = 0x100012c
#     XK_Zstroke* = 0x10001b5
#     XK_Gcaron* = 0x10001e6
#     XK_Ocaron* = 0x10001d1
#     XK_Obarred* = 0x100019f
#     XK_xabovedot* = 0x1001e8b
#     XK_ibreve* = 0x100012d
#     XK_zstroke* = 0x10001b6
#     XK_gcaron* = 0x10001e7
#     XK_ocaron* = 0x10001d2
#     XK_obarred* = 0x1000275
#     XK_SCHWA* = 0x100018f
#     XK_schwa* = 0x1000259
#   ##  those are not really Caucasus
#   ##  For Inupiak
#   const
#     XK_Lbelowdot* = 0x1001e36
#     XK_lbelowdot* = 0x1001e37
# ##
# ##  Vietnamese
# ##

# when defined(XK_VIETNAMESE):
#   const
#     XK_Abelowdot* = 0x1001ea0
#     XK_abelowdot* = 0x1001ea1
#     XK_Ahook* = 0x1001ea2
#     XK_ahook* = 0x1001ea3
#     XK_Acircumflexacute* = 0x1001ea4
#     XK_acircumflexacute* = 0x1001ea5
#     XK_Acircumflexgrave* = 0x1001ea6
#     XK_acircumflexgrave* = 0x1001ea7
#     XK_Acircumflexhook* = 0x1001ea8
#     XK_acircumflexhook* = 0x1001ea9
#     XK_Acircumflextilde* = 0x1001eaa
#     XK_acircumflextilde* = 0x1001eab
#     XK_Acircumflexbelowdot* = 0x1001eac
#     XK_acircumflexbelowdot* = 0x1001ead
#     XK_Abreveacute* = 0x1001eae
#     XK_abreveacute* = 0x1001eaf
#     XK_Abrevegrave* = 0x1001eb0
#     XK_abrevegrave* = 0x1001eb1
#     XK_Abrevehook* = 0x1001eb2
#     XK_abrevehook* = 0x1001eb3
#     XK_Abrevetilde* = 0x1001eb4
#     XK_abrevetilde* = 0x1001eb5
#     XK_Abrevebelowdot* = 0x1001eb6
#     XK_abrevebelowdot* = 0x1001eb7
#     XK_Ebelowdot* = 0x1001eb8
#     XK_ebelowdot* = 0x1001eb9
#     XK_Ehook* = 0x1001eba
#     XK_ehook* = 0x1001ebb
#     XK_Etilde* = 0x1001ebc
#     XK_etilde* = 0x1001ebd
#     XK_Ecircumflexacute* = 0x1001ebe
#     XK_ecircumflexacute* = 0x1001ebf
#     XK_Ecircumflexgrave* = 0x1001ec0
#     XK_ecircumflexgrave* = 0x1001ec1
#     XK_Ecircumflexhook* = 0x1001ec2
#     XK_ecircumflexhook* = 0x1001ec3
#     XK_Ecircumflextilde* = 0x1001ec4
#     XK_ecircumflextilde* = 0x1001ec5
#     XK_Ecircumflexbelowdot* = 0x1001ec6
#     XK_ecircumflexbelowdot* = 0x1001ec7
#     XK_Ihook* = 0x1001ec8
#     XK_ihook* = 0x1001ec9
#     XK_Ibelowdot* = 0x1001eca
#     XK_ibelowdot* = 0x1001ecb
#     XK_Obelowdot* = 0x1001ecc
#     XK_obelowdot* = 0x1001ecd
#     XK_Ohook* = 0x1001ece
#     XK_ohook* = 0x1001ecf
#     XK_Ocircumflexacute* = 0x1001ed0
#     XK_ocircumflexacute* = 0x1001ed1
#     XK_Ocircumflexgrave* = 0x1001ed2
#     XK_ocircumflexgrave* = 0x1001ed3
#     XK_Ocircumflexhook* = 0x1001ed4
#     XK_ocircumflexhook* = 0x1001ed5
#     XK_Ocircumflextilde* = 0x1001ed6
#     XK_ocircumflextilde* = 0x1001ed7
#     XK_Ocircumflexbelowdot* = 0x1001ed8
#     XK_ocircumflexbelowdot* = 0x1001ed9
#     XK_Ohornacute* = 0x1001eda
#     XK_ohornacute* = 0x1001edb
#     XK_Ohorngrave* = 0x1001edc
#     XK_ohorngrave* = 0x1001edd
#     XK_Ohornhook* = 0x1001ede
#     XK_ohornhook* = 0x1001edf
#     XK_Ohorntilde* = 0x1001ee0
#     XK_ohorntilde* = 0x1001ee1
#     XK_Ohornbelowdot* = 0x1001ee2
#     XK_ohornbelowdot* = 0x1001ee3
#     XK_Ubelowdot* = 0x1001ee4
#     XK_ubelowdot* = 0x1001ee5
#     XK_Uhook* = 0x1001ee6
#     XK_uhook* = 0x1001ee7
#     XK_Uhornacute* = 0x1001ee8
#     XK_uhornacute* = 0x1001ee9
#     XK_Uhorngrave* = 0x1001eea
#     XK_uhorngrave* = 0x1001eeb
#     XK_Uhornhook* = 0x1001eec
#     XK_uhornhook* = 0x1001eed
#     XK_Uhorntilde* = 0x1001eee
#     XK_uhorntilde* = 0x1001eef
#     XK_Uhornbelowdot* = 0x1001ef0
#     XK_uhornbelowdot* = 0x1001ef1
#     XK_Ybelowdot* = 0x1001ef4
#     XK_ybelowdot* = 0x1001ef5
#     XK_Yhook* = 0x1001ef6
#     XK_yhook* = 0x1001ef7
#     XK_Ytilde* = 0x1001ef8
#     XK_ytilde* = 0x1001ef9
#     XK_Ohorn* = 0x10001a0
#     XK_ohorn* = 0x10001a1
#     XK_Uhorn* = 0x10001af
#     XK_uhorn* = 0x10001b0
# when defined(XK_CURRENCY):
#   const
#     XK_EcuSign* = 0x10020a0
#     XK_ColonSign* = 0x10020a1
#     XK_CruzeiroSign* = 0x10020a2
#     XK_FFrancSign* = 0x10020a3
#     XK_LiraSign* = 0x10020a4
#     XK_MillSign* = 0x10020a5
#     XK_NairaSign* = 0x10020a6
#     XK_PesetaSign* = 0x10020a7
#     XK_RupeeSign* = 0x10020a8
#     XK_WonSign* = 0x10020a9
#     XK_NewSheqelSign* = 0x10020aa
#     XK_DongSign* = 0x10020ab
#     XK_EuroSign* = 0x20ac