commit 707d7d6

Devine Lu Linvega  ·  2024-01-20 19:18:28 +0000 UTC
parent 694eddd
Better bounds testing code
3 files changed,  +2048, -17
+10, -16
 1@@ -10,6 +10,9 @@
 2 	#2358 .System/b DEO2
 3 	;on-mouse .Mouse/vector DEO2
 4 	<draw-guide>
 5+	.Screen/width DEI2 #01 SFT2 .Screen/x DEO2
 6+	.Screen/height DEI2 #01 SFT2 .Screen/y DEO2
 7+	<redraw>
 8 	BRK
 9 
10 @on-mouse ( -> )
11@@ -20,7 +23,10 @@
12 	<draw-guide>
13 	( | cursor )
14 	#41 ;cursor-icn <update-cursor>
15-	( | draw portrait )
16+	<redraw>
17+	BRK
18+
19+@<redraw> ( -- )
20 	.Screen/x DEI2k #0008 ADD2 ROT DEO2
21 	.Screen/y DEI2k #0020 SUB2 ROT DEO2
22 	[ LIT2 36 -Screen/auto ] DEO
23@@ -34,10 +40,7 @@
24 	.Screen/x DEI2k #0010 ADD2 ROT DEO2
25 	.Screen/y DEI2k #0020 ADD2 ROT DEO2
26 	#a1 <draw-portrait>
27-	( <draw-box>
28-	.Screen/y DEI2k #0060 SUB2 ROT DEO2
29-	<draw-box> )
30-	BRK
31+	JMP2r
32 
33 @<draw-portrait> ( color -- )
34 	;portrait-chr .Screen/addr DEO2
35@@ -60,16 +63,8 @@
36 	JMP2r
37 
38 @<draw-guide> ( -- )
39-	#0000 DUP2 .Screen/x DEO2 .Screen/y DEO2
40-	#f2 .Screen/auto DEO
41-	;guide-icn .Screen/addr DEO2
42-	#1000
43-	&l ( -- ) 
44-		#01 .Screen/sprite DEO
45-		INC GTHk ?&l 
46-	POP2
47-	( | circles )
48-	#0010 DUP2 .Screen/x DEO2 .Screen/y DEO2
49+	.Screen/width DEI2 #01 SFT2 #0040 SUB2 .Screen/x DEO2
50+	.Screen/height DEI2 #01 SFT2 #0040 SUB2 .Screen/y DEO2
51 	#02 <draw-circle>
52 	.Screen/y DEI2k #0008 ADD2 ROT DEO2
53 	#82 <draw-circle>
54@@ -138,4 +133,3 @@
55 @circle-chr [
56 	071f 3c70 60e3 c7c7 0000 030f 1f1f 3f3f ]
57 
58-
+2037, -0
   1@@ -0,0 +1,2037 @@
   2+/* $Xorg: keysymdef.h,v 1.4 2001/02/09 02:03:23 $ */
   3+
   4+/***********************************************************
   5+Copyright 1987, 1994, 1998  The Open Group
   6+
   7+Permission to use, copy, modify, distribute, and sell this software and its
   8+documentation for any purpose is hereby granted without fee, provided that
   9+the above copyright notice appear in all copies and that both that
  10+copyright notice and this permission notice appear in supporting
  11+documentation.
  12+
  13+The above copyright notice and this permission notice shall be included
  14+in all copies or substantial portions of the Software.
  15+
  16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  17+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  19+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
  20+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  21+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  22+OTHER DEALINGS IN THE SOFTWARE.
  23+
  24+Except as contained in this notice, the name of The Open Group shall
  25+not be used in advertising or otherwise to promote the sale, use or
  26+other dealings in this Software without prior written authorization
  27+from The Open Group.
  28+
  29+
  30+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
  31+
  32+                        All Rights Reserved
  33+
  34+Permission to use, copy, modify, and distribute this software and its
  35+documentation for any purpose and without fee is hereby granted,
  36+provided that the above copyright notice appear in all copies and that
  37+both that copyright notice and this permission notice appear in
  38+supporting documentation, and that the name of Digital not be
  39+used in advertising or publicity pertaining to distribution of the
  40+software without specific, written prior permission.
  41+
  42+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  43+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  44+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  45+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  46+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  47+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  48+SOFTWARE.
  49+
  50+******************************************************************/
  51+/* $XFree86: $ */
  52+
  53+/*
  54+ * The "X11 Window System Protocol" standard defines in Appendix A the
  55+ * keysym codes. These 29-bit integer values identify characters or
  56+ * functions associated with each key (e.g., via the visible
  57+ * engraving) of a keyboard layout. This file assigns mnemonic macro
  58+ * names for these keysyms.
  59+ *
  60+ * This file is also compiled (by xc/lib/X11/util/makekeys.c) into
  61+ * hash tables that can be accessed with X11 library functions such as
  62+ * XStringToKeysym() and XKeysymToString().
  63+ *
  64+ * Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
  65+ * character, this is noted in a comment that provides both the U+xxxx
  66+ * Unicode position, as well as the official Unicode name of the
  67+ * character.
  68+ *
  69+ * Where the correspondence is either not one-to-one or semantically
  70+ * unclear, the Unicode position and name are enclosed in
  71+ * parentheses. Such legacy keysyms should be considered deprecated
  72+ * and are not recommended for use in future keyboard mappings.
  73+ *
  74+ * For any future extension of the keysyms with characters already
  75+ * found in ISO 10646 / Unicode, the following algorithm shall be
  76+ * used. The new keysym code position will simply be the character's
  77+ * Unicode number plus 0x01000000. The keysym values in the range
  78+ * 0x01000100 to 0x0110ffff are reserved to represent Unicode
  79+ * characters in the range U+0100 to U+10FFFF.
  80+ * 
  81+ * While most newer Unicode-based X11 clients do already accept
  82+ * Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
  83+ * will remain necessary for clients -- in the interest of
  84+ * compatibility with existing servers -- to also understand the
  85+ * existing legacy keysym values in the range 0x0100 to 0x20ff.
  86+ *
  87+ * Where several mnemonic names are defined for the same keysym in this
  88+ * file, all but the first one listed should be considered deprecated.
  89+ *
  90+ * Mnemonic names for keysyms are defined in this file with lines
  91+ * that match one of these Perl regular expressions:
  92+ *
  93+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
  94+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
  95+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
  96+ *
  97+ * When adding new keysyms to this file, do not forget to also update the
  98+ * mappings in xc/lib/X11/KeyBind.c and the protocol specification in
  99+ * xc/doc/specs/XProtocol/X11.keysyms.
 100+ */
 101+
 102+#define XK_VoidSymbol                  0xffffff  /* Void symbol */
 103+
 104+#ifdef XK_MISCELLANY
 105+/*
 106+ * TTY function keys, cleverly chosen to map to ASCII, for convenience of
 107+ * programming, but could have been arbitrary (at the cost of lookup
 108+ * tables in client code).
 109+ */
 110+
 111+#define XK_BackSpace                     0xff08  /* Back space, back char */
 112+#define XK_Tab                           0xff09
 113+#define XK_Linefeed                      0xff0a  /* Linefeed, LF */
 114+#define XK_Clear                         0xff0b
 115+#define XK_Return                        0xff0d  /* Return, enter */
 116+#define XK_Pause                         0xff13  /* Pause, hold */
 117+#define XK_Scroll_Lock                   0xff14
 118+#define XK_Sys_Req                       0xff15
 119+#define XK_Escape                        0xff1b
 120+#define XK_Delete                        0xffff  /* Delete, rubout */
 121+
 122+
 123+
 124+/* International & multi-key character composition */
 125+
 126+#define XK_Multi_key                     0xff20  /* Multi-key character compose */
 127+#define XK_Codeinput                     0xff37
 128+#define XK_SingleCandidate               0xff3c
 129+#define XK_MultipleCandidate             0xff3d
 130+#define XK_PreviousCandidate             0xff3e
 131+
 132+/* Japanese keyboard support */
 133+
 134+#define XK_Kanji                         0xff21  /* Kanji, Kanji convert */
 135+#define XK_Muhenkan                      0xff22  /* Cancel Conversion */
 136+#define XK_Henkan_Mode                   0xff23  /* Start/Stop Conversion */
 137+#define XK_Henkan                        0xff23  /* Alias for Henkan_Mode */
 138+#define XK_Romaji                        0xff24  /* to Romaji */
 139+#define XK_Hiragana                      0xff25  /* to Hiragana */
 140+#define XK_Katakana                      0xff26  /* to Katakana */
 141+#define XK_Hiragana_Katakana             0xff27  /* Hiragana/Katakana toggle */
 142+#define XK_Zenkaku                       0xff28  /* to Zenkaku */
 143+#define XK_Hankaku                       0xff29  /* to Hankaku */
 144+#define XK_Zenkaku_Hankaku               0xff2a  /* Zenkaku/Hankaku toggle */
 145+#define XK_Touroku                       0xff2b  /* Add to Dictionary */
 146+#define XK_Massyo                        0xff2c  /* Delete from Dictionary */
 147+#define XK_Kana_Lock                     0xff2d  /* Kana Lock */
 148+#define XK_Kana_Shift                    0xff2e  /* Kana Shift */
 149+#define XK_Eisu_Shift                    0xff2f  /* Alphanumeric Shift */
 150+#define XK_Eisu_toggle                   0xff30  /* Alphanumeric toggle */
 151+#define XK_Kanji_Bangou                  0xff37  /* Codeinput */
 152+#define XK_Zen_Koho                      0xff3d  /* Multiple/All Candidate(s) */
 153+#define XK_Mae_Koho                      0xff3e  /* Previous Candidate */
 154+
 155+/* 0xff31 thru 0xff3f are under XK_KOREAN */
 156+
 157+/* Cursor control & motion */
 158+
 159+#define XK_Home                          0xff50
 160+#define XK_Left                          0xff51  /* Move left, left arrow */
 161+#define XK_Up                            0xff52  /* Move up, up arrow */
 162+#define XK_Right                         0xff53  /* Move right, right arrow */
 163+#define XK_Down                          0xff54  /* Move down, down arrow */
 164+#define XK_Prior                         0xff55  /* Prior, previous */
 165+#define XK_Page_Up                       0xff55
 166+#define XK_Next                          0xff56  /* Next */
 167+#define XK_Page_Down                     0xff56
 168+#define XK_End                           0xff57  /* EOL */
 169+#define XK_Begin                         0xff58  /* BOL */
 170+
 171+
 172+/* Misc functions */
 173+
 174+#define XK_Select                        0xff60  /* Select, mark */
 175+#define XK_Print                         0xff61
 176+#define XK_Execute                       0xff62  /* Execute, run, do */
 177+#define XK_Insert                        0xff63  /* Insert, insert here */
 178+#define XK_Undo                          0xff65
 179+#define XK_Redo                          0xff66  /* Redo, again */
 180+#define XK_Menu                          0xff67
 181+#define XK_Find                          0xff68  /* Find, search */
 182+#define XK_Cancel                        0xff69  /* Cancel, stop, abort, exit */
 183+#define XK_Help                          0xff6a  /* Help */
 184+#define XK_Break                         0xff6b
 185+#define XK_Mode_switch                   0xff7e  /* Character set switch */
 186+#define XK_script_switch                 0xff7e  /* Alias for mode_switch */
 187+#define XK_Num_Lock                      0xff7f
 188+
 189+/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
 190+
 191+#define XK_KP_Space                      0xff80  /* Space */
 192+#define XK_KP_Tab                        0xff89
 193+#define XK_KP_Enter                      0xff8d  /* Enter */
 194+#define XK_KP_F1                         0xff91  /* PF1, KP_A, ... */
 195+#define XK_KP_F2                         0xff92
 196+#define XK_KP_F3                         0xff93
 197+#define XK_KP_F4                         0xff94
 198+#define XK_KP_Home                       0xff95
 199+#define XK_KP_Left                       0xff96
 200+#define XK_KP_Up                         0xff97
 201+#define XK_KP_Right                      0xff98
 202+#define XK_KP_Down                       0xff99
 203+#define XK_KP_Prior                      0xff9a
 204+#define XK_KP_Page_Up                    0xff9a
 205+#define XK_KP_Next                       0xff9b
 206+#define XK_KP_Page_Down                  0xff9b
 207+#define XK_KP_End                        0xff9c
 208+#define XK_KP_Begin                      0xff9d
 209+#define XK_KP_Insert                     0xff9e
 210+#define XK_KP_Delete                     0xff9f
 211+#define XK_KP_Equal                      0xffbd  /* Equals */
 212+#define XK_KP_Multiply                   0xffaa
 213+#define XK_KP_Add                        0xffab
 214+#define XK_KP_Separator                  0xffac  /* Separator, often comma */
 215+#define XK_KP_Subtract                   0xffad
 216+#define XK_KP_Decimal                    0xffae
 217+#define XK_KP_Divide                     0xffaf
 218+
 219+#define XK_KP_0                          0xffb0
 220+#define XK_KP_1                          0xffb1
 221+#define XK_KP_2                          0xffb2
 222+#define XK_KP_3                          0xffb3
 223+#define XK_KP_4                          0xffb4
 224+#define XK_KP_5                          0xffb5
 225+#define XK_KP_6                          0xffb6
 226+#define XK_KP_7                          0xffb7
 227+#define XK_KP_8                          0xffb8
 228+#define XK_KP_9                          0xffb9
 229+
 230+
 231+
 232+/*
 233+ * Auxilliary functions; note the duplicate definitions for left and right
 234+ * function keys;  Sun keyboards and a few other manufactures have such
 235+ * function key groups on the left and/or right sides of the keyboard.
 236+ * We've not found a keyboard with more than 35 function keys total.
 237+ */
 238+
 239+#define XK_F1                            0xffbe
 240+#define XK_F2                            0xffbf
 241+#define XK_F3                            0xffc0
 242+#define XK_F4                            0xffc1
 243+#define XK_F5                            0xffc2
 244+#define XK_F6                            0xffc3
 245+#define XK_F7                            0xffc4
 246+#define XK_F8                            0xffc5
 247+#define XK_F9                            0xffc6
 248+#define XK_F10                           0xffc7
 249+#define XK_F11                           0xffc8
 250+#define XK_L1                            0xffc8
 251+#define XK_F12                           0xffc9
 252+#define XK_L2                            0xffc9
 253+#define XK_F13                           0xffca
 254+#define XK_L3                            0xffca
 255+#define XK_F14                           0xffcb
 256+#define XK_L4                            0xffcb
 257+#define XK_F15                           0xffcc
 258+#define XK_L5                            0xffcc
 259+#define XK_F16                           0xffcd
 260+#define XK_L6                            0xffcd
 261+#define XK_F17                           0xffce
 262+#define XK_L7                            0xffce
 263+#define XK_F18                           0xffcf
 264+#define XK_L8                            0xffcf
 265+#define XK_F19                           0xffd0
 266+#define XK_L9                            0xffd0
 267+#define XK_F20                           0xffd1
 268+#define XK_L10                           0xffd1
 269+#define XK_F21                           0xffd2
 270+#define XK_R1                            0xffd2
 271+#define XK_F22                           0xffd3
 272+#define XK_R2                            0xffd3
 273+#define XK_F23                           0xffd4
 274+#define XK_R3                            0xffd4
 275+#define XK_F24                           0xffd5
 276+#define XK_R4                            0xffd5
 277+#define XK_F25                           0xffd6
 278+#define XK_R5                            0xffd6
 279+#define XK_F26                           0xffd7
 280+#define XK_R6                            0xffd7
 281+#define XK_F27                           0xffd8
 282+#define XK_R7                            0xffd8
 283+#define XK_F28                           0xffd9
 284+#define XK_R8                            0xffd9
 285+#define XK_F29                           0xffda
 286+#define XK_R9                            0xffda
 287+#define XK_F30                           0xffdb
 288+#define XK_R10                           0xffdb
 289+#define XK_F31                           0xffdc
 290+#define XK_R11                           0xffdc
 291+#define XK_F32                           0xffdd
 292+#define XK_R12                           0xffdd
 293+#define XK_F33                           0xffde
 294+#define XK_R13                           0xffde
 295+#define XK_F34                           0xffdf
 296+#define XK_R14                           0xffdf
 297+#define XK_F35                           0xffe0
 298+#define XK_R15                           0xffe0
 299+
 300+/* Modifiers */
 301+
 302+#define XK_Shift_L                       0xffe1  /* Left shift */
 303+#define XK_Shift_R                       0xffe2  /* Right shift */
 304+#define XK_Control_L                     0xffe3  /* Left control */
 305+#define XK_Control_R                     0xffe4  /* Right control */
 306+#define XK_Caps_Lock                     0xffe5  /* Caps lock */
 307+#define XK_Shift_Lock                    0xffe6  /* Shift lock */
 308+
 309+#define XK_Meta_L                        0xffe7  /* Left meta */
 310+#define XK_Meta_R                        0xffe8  /* Right meta */
 311+#define XK_Alt_L                         0xffe9  /* Left alt */
 312+#define XK_Alt_R                         0xffea  /* Right alt */
 313+#define XK_Super_L                       0xffeb  /* Left super */
 314+#define XK_Super_R                       0xffec  /* Right super */
 315+#define XK_Hyper_L                       0xffed  /* Left hyper */
 316+#define XK_Hyper_R                       0xffee  /* Right hyper */
 317+#endif /* XK_MISCELLANY */
 318+
 319+/*
 320+ * Keyboard (XKB) Extension function and modifier keys
 321+ * (from Appendix C of "The X Keyboard Extension: Protocol Specification")
 322+ * Byte 3 = 0xfe
 323+ */
 324+
 325+#ifdef XK_XKB_KEYS
 326+#define XK_ISO_Lock                      0xfe01
 327+#define XK_ISO_Level2_Latch              0xfe02
 328+#define XK_ISO_Level3_Shift              0xfe03
 329+#define XK_ISO_Level3_Latch              0xfe04
 330+#define XK_ISO_Level3_Lock               0xfe05
 331+#define XK_ISO_Group_Shift               0xff7e  /* Alias for mode_switch */
 332+#define XK_ISO_Group_Latch               0xfe06
 333+#define XK_ISO_Group_Lock                0xfe07
 334+#define XK_ISO_Next_Group                0xfe08
 335+#define XK_ISO_Next_Group_Lock           0xfe09
 336+#define XK_ISO_Prev_Group                0xfe0a
 337+#define XK_ISO_Prev_Group_Lock           0xfe0b
 338+#define XK_ISO_First_Group               0xfe0c
 339+#define XK_ISO_First_Group_Lock          0xfe0d
 340+#define XK_ISO_Last_Group                0xfe0e
 341+#define XK_ISO_Last_Group_Lock           0xfe0f
 342+
 343+#define XK_ISO_Left_Tab                  0xfe20
 344+#define XK_ISO_Move_Line_Up              0xfe21
 345+#define XK_ISO_Move_Line_Down            0xfe22
 346+#define XK_ISO_Partial_Line_Up           0xfe23
 347+#define XK_ISO_Partial_Line_Down         0xfe24
 348+#define XK_ISO_Partial_Space_Left        0xfe25
 349+#define XK_ISO_Partial_Space_Right       0xfe26
 350+#define XK_ISO_Set_Margin_Left           0xfe27
 351+#define XK_ISO_Set_Margin_Right          0xfe28
 352+#define XK_ISO_Release_Margin_Left       0xfe29
 353+#define XK_ISO_Release_Margin_Right      0xfe2a
 354+#define XK_ISO_Release_Both_Margins      0xfe2b
 355+#define XK_ISO_Fast_Cursor_Left          0xfe2c
 356+#define XK_ISO_Fast_Cursor_Right         0xfe2d
 357+#define XK_ISO_Fast_Cursor_Up            0xfe2e
 358+#define XK_ISO_Fast_Cursor_Down          0xfe2f
 359+#define XK_ISO_Continuous_Underline      0xfe30
 360+#define XK_ISO_Discontinuous_Underline   0xfe31
 361+#define XK_ISO_Emphasize                 0xfe32
 362+#define XK_ISO_Center_Object             0xfe33
 363+#define XK_ISO_Enter                     0xfe34
 364+
 365+#define XK_dead_grave                    0xfe50
 366+#define XK_dead_acute                    0xfe51
 367+#define XK_dead_circumflex               0xfe52
 368+#define XK_dead_tilde                    0xfe53
 369+#define XK_dead_macron                   0xfe54
 370+#define XK_dead_breve                    0xfe55
 371+#define XK_dead_abovedot                 0xfe56
 372+#define XK_dead_diaeresis                0xfe57
 373+#define XK_dead_abovering                0xfe58
 374+#define XK_dead_doubleacute              0xfe59
 375+#define XK_dead_caron                    0xfe5a
 376+#define XK_dead_cedilla                  0xfe5b
 377+#define XK_dead_ogonek                   0xfe5c
 378+#define XK_dead_iota                     0xfe5d
 379+#define XK_dead_voiced_sound             0xfe5e
 380+#define XK_dead_semivoiced_sound         0xfe5f
 381+#define XK_dead_belowdot                 0xfe60
 382+#define XK_dead_hook                     0xfe61
 383+#define XK_dead_horn                     0xfe62
 384+
 385+#define XK_First_Virtual_Screen          0xfed0
 386+#define XK_Prev_Virtual_Screen           0xfed1
 387+#define XK_Next_Virtual_Screen           0xfed2
 388+#define XK_Last_Virtual_Screen           0xfed4
 389+#define XK_Terminate_Server              0xfed5
 390+
 391+#define XK_AccessX_Enable                0xfe70
 392+#define XK_AccessX_Feedback_Enable       0xfe71
 393+#define XK_RepeatKeys_Enable             0xfe72
 394+#define XK_SlowKeys_Enable               0xfe73
 395+#define XK_BounceKeys_Enable             0xfe74
 396+#define XK_StickyKeys_Enable             0xfe75
 397+#define XK_MouseKeys_Enable              0xfe76
 398+#define XK_MouseKeys_Accel_Enable        0xfe77
 399+#define XK_Overlay1_Enable               0xfe78
 400+#define XK_Overlay2_Enable               0xfe79
 401+#define XK_AudibleBell_Enable            0xfe7a
 402+
 403+#define XK_Pointer_Left                  0xfee0
 404+#define XK_Pointer_Right                 0xfee1
 405+#define XK_Pointer_Up                    0xfee2
 406+#define XK_Pointer_Down                  0xfee3
 407+#define XK_Pointer_UpLeft                0xfee4
 408+#define XK_Pointer_UpRight               0xfee5
 409+#define XK_Pointer_DownLeft              0xfee6
 410+#define XK_Pointer_DownRight             0xfee7
 411+#define XK_Pointer_Button_Dflt           0xfee8
 412+#define XK_Pointer_Button1               0xfee9
 413+#define XK_Pointer_Button2               0xfeea
 414+#define XK_Pointer_Button3               0xfeeb
 415+#define XK_Pointer_Button4               0xfeec
 416+#define XK_Pointer_Button5               0xfeed
 417+#define XK_Pointer_DblClick_Dflt         0xfeee
 418+#define XK_Pointer_DblClick1             0xfeef
 419+#define XK_Pointer_DblClick2             0xfef0
 420+#define XK_Pointer_DblClick3             0xfef1
 421+#define XK_Pointer_DblClick4             0xfef2
 422+#define XK_Pointer_DblClick5             0xfef3
 423+#define XK_Pointer_Drag_Dflt             0xfef4
 424+#define XK_Pointer_Drag1                 0xfef5
 425+#define XK_Pointer_Drag2                 0xfef6
 426+#define XK_Pointer_Drag3                 0xfef7
 427+#define XK_Pointer_Drag4                 0xfef8
 428+#define XK_Pointer_Drag5                 0xfefd
 429+
 430+#define XK_Pointer_EnableKeys            0xfef9
 431+#define XK_Pointer_Accelerate            0xfefa
 432+#define XK_Pointer_DfltBtnNext           0xfefb
 433+#define XK_Pointer_DfltBtnPrev           0xfefc
 434+
 435+#endif /* XK_XKB_KEYS */
 436+
 437+/*
 438+ * 3270 Terminal Keys
 439+ * Byte 3 = 0xfd
 440+ */
 441+
 442+#ifdef XK_3270
 443+#define XK_3270_Duplicate                0xfd01
 444+#define XK_3270_FieldMark                0xfd02
 445+#define XK_3270_Right2                   0xfd03
 446+#define XK_3270_Left2                    0xfd04
 447+#define XK_3270_BackTab                  0xfd05
 448+#define XK_3270_EraseEOF                 0xfd06
 449+#define XK_3270_EraseInput               0xfd07
 450+#define XK_3270_Reset                    0xfd08
 451+#define XK_3270_Quit                     0xfd09
 452+#define XK_3270_PA1                      0xfd0a
 453+#define XK_3270_PA2                      0xfd0b
 454+#define XK_3270_PA3                      0xfd0c
 455+#define XK_3270_Test                     0xfd0d
 456+#define XK_3270_Attn                     0xfd0e
 457+#define XK_3270_CursorBlink              0xfd0f
 458+#define XK_3270_AltCursor                0xfd10
 459+#define XK_3270_KeyClick                 0xfd11
 460+#define XK_3270_Jump                     0xfd12
 461+#define XK_3270_Ident                    0xfd13
 462+#define XK_3270_Rule                     0xfd14
 463+#define XK_3270_Copy                     0xfd15
 464+#define XK_3270_Play                     0xfd16
 465+#define XK_3270_Setup                    0xfd17
 466+#define XK_3270_Record                   0xfd18
 467+#define XK_3270_ChangeScreen             0xfd19
 468+#define XK_3270_DeleteWord               0xfd1a
 469+#define XK_3270_ExSelect                 0xfd1b
 470+#define XK_3270_CursorSelect             0xfd1c
 471+#define XK_3270_PrintScreen              0xfd1d
 472+#define XK_3270_Enter                    0xfd1e
 473+#endif /* XK_3270 */
 474+
 475+/*
 476+ * Latin 1
 477+ * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
 478+ * Byte 3 = 0
 479+ */
 480+#ifdef XK_LATIN1
 481+#define XK_space                         0x0020  /* U+0020 SPACE */
 482+#define XK_exclam                        0x0021  /* U+0021 EXCLAMATION MARK */
 483+#define XK_quotedbl                      0x0022  /* U+0022 QUOTATION MARK */
 484+#define XK_numbersign                    0x0023  /* U+0023 NUMBER SIGN */
 485+#define XK_dollar                        0x0024  /* U+0024 DOLLAR SIGN */
 486+#define XK_percent                       0x0025  /* U+0025 PERCENT SIGN */
 487+#define XK_ampersand                     0x0026  /* U+0026 AMPERSAND */
 488+#define XK_apostrophe                    0x0027  /* U+0027 APOSTROPHE */
 489+#define XK_quoteright                    0x0027  /* deprecated */
 490+#define XK_parenleft                     0x0028  /* U+0028 LEFT PARENTHESIS */
 491+#define XK_parenright                    0x0029  /* U+0029 RIGHT PARENTHESIS */
 492+#define XK_asterisk                      0x002a  /* U+002A ASTERISK */
 493+#define XK_plus                          0x002b  /* U+002B PLUS SIGN */
 494+#define XK_comma                         0x002c  /* U+002C COMMA */
 495+#define XK_minus                         0x002d  /* U+002D HYPHEN-MINUS */
 496+#define XK_period                        0x002e  /* U+002E FULL STOP */
 497+#define XK_slash                         0x002f  /* U+002F SOLIDUS */
 498+#define XK_0                             0x0030  /* U+0030 DIGIT ZERO */
 499+#define XK_1                             0x0031  /* U+0031 DIGIT ONE */
 500+#define XK_2                             0x0032  /* U+0032 DIGIT TWO */
 501+#define XK_3                             0x0033  /* U+0033 DIGIT THREE */
 502+#define XK_4                             0x0034  /* U+0034 DIGIT FOUR */
 503+#define XK_5                             0x0035  /* U+0035 DIGIT FIVE */
 504+#define XK_6                             0x0036  /* U+0036 DIGIT SIX */
 505+#define XK_7                             0x0037  /* U+0037 DIGIT SEVEN */
 506+#define XK_8                             0x0038  /* U+0038 DIGIT EIGHT */
 507+#define XK_9                             0x0039  /* U+0039 DIGIT NINE */
 508+#define XK_colon                         0x003a  /* U+003A COLON */
 509+#define XK_semicolon                     0x003b  /* U+003B SEMICOLON */
 510+#define XK_less                          0x003c  /* U+003C LESS-THAN SIGN */
 511+#define XK_equal                         0x003d  /* U+003D EQUALS SIGN */
 512+#define XK_greater                       0x003e  /* U+003E GREATER-THAN SIGN */
 513+#define XK_question                      0x003f  /* U+003F QUESTION MARK */
 514+#define XK_at                            0x0040  /* U+0040 COMMERCIAL AT */
 515+#define XK_A                             0x0041  /* U+0041 LATIN CAPITAL LETTER A */
 516+#define XK_B                             0x0042  /* U+0042 LATIN CAPITAL LETTER B */
 517+#define XK_C                             0x0043  /* U+0043 LATIN CAPITAL LETTER C */
 518+#define XK_D                             0x0044  /* U+0044 LATIN CAPITAL LETTER D */
 519+#define XK_E                             0x0045  /* U+0045 LATIN CAPITAL LETTER E */
 520+#define XK_F                             0x0046  /* U+0046 LATIN CAPITAL LETTER F */
 521+#define XK_G                             0x0047  /* U+0047 LATIN CAPITAL LETTER G */
 522+#define XK_H                             0x0048  /* U+0048 LATIN CAPITAL LETTER H */
 523+#define XK_I                             0x0049  /* U+0049 LATIN CAPITAL LETTER I */
 524+#define XK_J                             0x004a  /* U+004A LATIN CAPITAL LETTER J */
 525+#define XK_K                             0x004b  /* U+004B LATIN CAPITAL LETTER K */
 526+#define XK_L                             0x004c  /* U+004C LATIN CAPITAL LETTER L */
 527+#define XK_M                             0x004d  /* U+004D LATIN CAPITAL LETTER M */
 528+#define XK_N                             0x004e  /* U+004E LATIN CAPITAL LETTER N */
 529+#define XK_O                             0x004f  /* U+004F LATIN CAPITAL LETTER O */
 530+#define XK_P                             0x0050  /* U+0050 LATIN CAPITAL LETTER P */
 531+#define XK_Q                             0x0051  /* U+0051 LATIN CAPITAL LETTER Q */
 532+#define XK_R                             0x0052  /* U+0052 LATIN CAPITAL LETTER R */
 533+#define XK_S                             0x0053  /* U+0053 LATIN CAPITAL LETTER S */
 534+#define XK_T                             0x0054  /* U+0054 LATIN CAPITAL LETTER T */
 535+#define XK_U                             0x0055  /* U+0055 LATIN CAPITAL LETTER U */
 536+#define XK_V                             0x0056  /* U+0056 LATIN CAPITAL LETTER V */
 537+#define XK_W                             0x0057  /* U+0057 LATIN CAPITAL LETTER W */
 538+#define XK_X                             0x0058  /* U+0058 LATIN CAPITAL LETTER X */
 539+#define XK_Y                             0x0059  /* U+0059 LATIN CAPITAL LETTER Y */
 540+#define XK_Z                             0x005a  /* U+005A LATIN CAPITAL LETTER Z */
 541+#define XK_bracketleft                   0x005b  /* U+005B LEFT SQUARE BRACKET */
 542+#define XK_backslash                     0x005c  /* U+005C REVERSE SOLIDUS */
 543+#define XK_bracketright                  0x005d  /* U+005D RIGHT SQUARE BRACKET */
 544+#define XK_asciicircum                   0x005e  /* U+005E CIRCUMFLEX ACCENT */
 545+#define XK_underscore                    0x005f  /* U+005F LOW LINE */
 546+#define XK_grave                         0x0060  /* U+0060 GRAVE ACCENT */
 547+#define XK_quoteleft                     0x0060  /* deprecated */
 548+#define XK_a                             0x0061  /* U+0061 LATIN SMALL LETTER A */
 549+#define XK_b                             0x0062  /* U+0062 LATIN SMALL LETTER B */
 550+#define XK_c                             0x0063  /* U+0063 LATIN SMALL LETTER C */
 551+#define XK_d                             0x0064  /* U+0064 LATIN SMALL LETTER D */
 552+#define XK_e                             0x0065  /* U+0065 LATIN SMALL LETTER E */
 553+#define XK_f                             0x0066  /* U+0066 LATIN SMALL LETTER F */
 554+#define XK_g                             0x0067  /* U+0067 LATIN SMALL LETTER G */
 555+#define XK_h                             0x0068  /* U+0068 LATIN SMALL LETTER H */
 556+#define XK_i                             0x0069  /* U+0069 LATIN SMALL LETTER I */
 557+#define XK_j                             0x006a  /* U+006A LATIN SMALL LETTER J */
 558+#define XK_k                             0x006b  /* U+006B LATIN SMALL LETTER K */
 559+#define XK_l                             0x006c  /* U+006C LATIN SMALL LETTER L */
 560+#define XK_m                             0x006d  /* U+006D LATIN SMALL LETTER M */
 561+#define XK_n                             0x006e  /* U+006E LATIN SMALL LETTER N */
 562+#define XK_o                             0x006f  /* U+006F LATIN SMALL LETTER O */
 563+#define XK_p                             0x0070  /* U+0070 LATIN SMALL LETTER P */
 564+#define XK_q                             0x0071  /* U+0071 LATIN SMALL LETTER Q */
 565+#define XK_r                             0x0072  /* U+0072 LATIN SMALL LETTER R */
 566+#define XK_s                             0x0073  /* U+0073 LATIN SMALL LETTER S */
 567+#define XK_t                             0x0074  /* U+0074 LATIN SMALL LETTER T */
 568+#define XK_u                             0x0075  /* U+0075 LATIN SMALL LETTER U */
 569+#define XK_v                             0x0076  /* U+0076 LATIN SMALL LETTER V */
 570+#define XK_w                             0x0077  /* U+0077 LATIN SMALL LETTER W */
 571+#define XK_x                             0x0078  /* U+0078 LATIN SMALL LETTER X */
 572+#define XK_y                             0x0079  /* U+0079 LATIN SMALL LETTER Y */
 573+#define XK_z                             0x007a  /* U+007A LATIN SMALL LETTER Z */
 574+#define XK_braceleft                     0x007b  /* U+007B LEFT CURLY BRACKET */
 575+#define XK_bar                           0x007c  /* U+007C VERTICAL LINE */
 576+#define XK_braceright                    0x007d  /* U+007D RIGHT CURLY BRACKET */
 577+#define XK_asciitilde                    0x007e  /* U+007E TILDE */
 578+
 579+#define XK_nobreakspace                  0x00a0  /* U+00A0 NO-BREAK SPACE */
 580+#define XK_exclamdown                    0x00a1  /* U+00A1 INVERTED EXCLAMATION MARK */
 581+#define XK_cent                          0x00a2  /* U+00A2 CENT SIGN */
 582+#define XK_sterling                      0x00a3  /* U+00A3 POUND SIGN */
 583+#define XK_currency                      0x00a4  /* U+00A4 CURRENCY SIGN */
 584+#define XK_yen                           0x00a5  /* U+00A5 YEN SIGN */
 585+#define XK_brokenbar                     0x00a6  /* U+00A6 BROKEN BAR */
 586+#define XK_section                       0x00a7  /* U+00A7 SECTION SIGN */
 587+#define XK_diaeresis                     0x00a8  /* U+00A8 DIAERESIS */
 588+#define XK_copyright                     0x00a9  /* U+00A9 COPYRIGHT SIGN */
 589+#define XK_ordfeminine                   0x00aa  /* U+00AA FEMININE ORDINAL INDICATOR */
 590+#define XK_guillemotleft                 0x00ab  /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
 591+#define XK_notsign                       0x00ac  /* U+00AC NOT SIGN */
 592+#define XK_hyphen                        0x00ad  /* U+00AD SOFT HYPHEN */
 593+#define XK_registered                    0x00ae  /* U+00AE REGISTERED SIGN */
 594+#define XK_macron                        0x00af  /* U+00AF MACRON */
 595+#define XK_degree                        0x00b0  /* U+00B0 DEGREE SIGN */
 596+#define XK_plusminus                     0x00b1  /* U+00B1 PLUS-MINUS SIGN */
 597+#define XK_twosuperior                   0x00b2  /* U+00B2 SUPERSCRIPT TWO */
 598+#define XK_threesuperior                 0x00b3  /* U+00B3 SUPERSCRIPT THREE */
 599+#define XK_acute                         0x00b4  /* U+00B4 ACUTE ACCENT */
 600+#define XK_mu                            0x00b5  /* U+00B5 MICRO SIGN */
 601+#define XK_paragraph                     0x00b6  /* U+00B6 PILCROW SIGN */
 602+#define XK_periodcentered                0x00b7  /* U+00B7 MIDDLE DOT */
 603+#define XK_cedilla                       0x00b8  /* U+00B8 CEDILLA */
 604+#define XK_onesuperior                   0x00b9  /* U+00B9 SUPERSCRIPT ONE */
 605+#define XK_masculine                     0x00ba  /* U+00BA MASCULINE ORDINAL INDICATOR */
 606+#define XK_guillemotright                0x00bb  /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
 607+#define XK_onequarter                    0x00bc  /* U+00BC VULGAR FRACTION ONE QUARTER */
 608+#define XK_onehalf                       0x00bd  /* U+00BD VULGAR FRACTION ONE HALF */
 609+#define XK_threequarters                 0x00be  /* U+00BE VULGAR FRACTION THREE QUARTERS */
 610+#define XK_questiondown                  0x00bf  /* U+00BF INVERTED QUESTION MARK */
 611+#define XK_Agrave                        0x00c0  /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */
 612+#define XK_Aacute                        0x00c1  /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */
 613+#define XK_Acircumflex                   0x00c2  /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
 614+#define XK_Atilde                        0x00c3  /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */
 615+#define XK_Adiaeresis                    0x00c4  /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */
 616+#define XK_Aring                         0x00c5  /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */
 617+#define XK_AE                            0x00c6  /* U+00C6 LATIN CAPITAL LETTER AE */
 618+#define XK_Ccedilla                      0x00c7  /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */
 619+#define XK_Egrave                        0x00c8  /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */
 620+#define XK_Eacute                        0x00c9  /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
 621+#define XK_Ecircumflex                   0x00ca  /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
 622+#define XK_Ediaeresis                    0x00cb  /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */
 623+#define XK_Igrave                        0x00cc  /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */
 624+#define XK_Iacute                        0x00cd  /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */
 625+#define XK_Icircumflex                   0x00ce  /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
 626+#define XK_Idiaeresis                    0x00cf  /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */
 627+#define XK_ETH                           0x00d0  /* U+00D0 LATIN CAPITAL LETTER ETH */
 628+#define XK_Eth                           0x00d0  /* deprecated */
 629+#define XK_Ntilde                        0x00d1  /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */
 630+#define XK_Ograve                        0x00d2  /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */
 631+#define XK_Oacute                        0x00d3  /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */
 632+#define XK_Ocircumflex                   0x00d4  /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
 633+#define XK_Otilde                        0x00d5  /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */
 634+#define XK_Odiaeresis                    0x00d6  /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */
 635+#define XK_multiply                      0x00d7  /* U+00D7 MULTIPLICATION SIGN */
 636+#define XK_Oslash                        0x00d8  /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
 637+#define XK_Ooblique                      0x00d8  /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
 638+#define XK_Ugrave                        0x00d9  /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */
 639+#define XK_Uacute                        0x00da  /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */
 640+#define XK_Ucircumflex                   0x00db  /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
 641+#define XK_Udiaeresis                    0x00dc  /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */
 642+#define XK_Yacute                        0x00dd  /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */
 643+#define XK_THORN                         0x00de  /* U+00DE LATIN CAPITAL LETTER THORN */
 644+#define XK_Thorn                         0x00de  /* deprecated */
 645+#define XK_ssharp                        0x00df  /* U+00DF LATIN SMALL LETTER SHARP S */
 646+#define XK_agrave                        0x00e0  /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */
 647+#define XK_aacute                        0x00e1  /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */
 648+#define XK_acircumflex                   0x00e2  /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */
 649+#define XK_atilde                        0x00e3  /* U+00E3 LATIN SMALL LETTER A WITH TILDE */
 650+#define XK_adiaeresis                    0x00e4  /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */
 651+#define XK_aring                         0x00e5  /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */
 652+#define XK_ae                            0x00e6  /* U+00E6 LATIN SMALL LETTER AE */
 653+#define XK_ccedilla                      0x00e7  /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */
 654+#define XK_egrave                        0x00e8  /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */
 655+#define XK_eacute                        0x00e9  /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
 656+#define XK_ecircumflex                   0x00ea  /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */
 657+#define XK_ediaeresis                    0x00eb  /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */
 658+#define XK_igrave                        0x00ec  /* U+00EC LATIN SMALL LETTER I WITH GRAVE */
 659+#define XK_iacute                        0x00ed  /* U+00ED LATIN SMALL LETTER I WITH ACUTE */
 660+#define XK_icircumflex                   0x00ee  /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */
 661+#define XK_idiaeresis                    0x00ef  /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */
 662+#define XK_eth                           0x00f0  /* U+00F0 LATIN SMALL LETTER ETH */
 663+#define XK_ntilde                        0x00f1  /* U+00F1 LATIN SMALL LETTER N WITH TILDE */
 664+#define XK_ograve                        0x00f2  /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */
 665+#define XK_oacute                        0x00f3  /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */
 666+#define XK_ocircumflex                   0x00f4  /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */
 667+#define XK_otilde                        0x00f5  /* U+00F5 LATIN SMALL LETTER O WITH TILDE */
 668+#define XK_odiaeresis                    0x00f6  /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */
 669+#define XK_division                      0x00f7  /* U+00F7 DIVISION SIGN */
 670+#define XK_oslash                        0x00f8  /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
 671+#define XK_ooblique                      0x00f8  /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
 672+#define XK_ugrave                        0x00f9  /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */
 673+#define XK_uacute                        0x00fa  /* U+00FA LATIN SMALL LETTER U WITH ACUTE */
 674+#define XK_ucircumflex                   0x00fb  /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */
 675+#define XK_udiaeresis                    0x00fc  /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */
 676+#define XK_yacute                        0x00fd  /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */
 677+#define XK_thorn                         0x00fe  /* U+00FE LATIN SMALL LETTER THORN */
 678+#define XK_ydiaeresis                    0x00ff  /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
 679+#endif /* XK_LATIN1 */
 680+
 681+/*
 682+ * Latin 2
 683+ * Byte 3 = 1
 684+ */
 685+
 686+#ifdef XK_LATIN2
 687+#define XK_Aogonek                       0x01a1  /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */
 688+#define XK_breve                         0x01a2  /* U+02D8 BREVE */
 689+#define XK_Lstroke                       0x01a3  /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
 690+#define XK_Lcaron                        0x01a5  /* U+013D LATIN CAPITAL LETTER L WITH CARON */
 691+#define XK_Sacute                        0x01a6  /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */
 692+#define XK_Scaron                        0x01a9  /* U+0160 LATIN CAPITAL LETTER S WITH CARON */
 693+#define XK_Scedilla                      0x01aa  /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */
 694+#define XK_Tcaron                        0x01ab  /* U+0164 LATIN CAPITAL LETTER T WITH CARON */
 695+#define XK_Zacute                        0x01ac  /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */
 696+#define XK_Zcaron                        0x01ae  /* U+017D LATIN CAPITAL LETTER Z WITH CARON */
 697+#define XK_Zabovedot                     0x01af  /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */
 698+#define XK_aogonek                       0x01b1  /* U+0105 LATIN SMALL LETTER A WITH OGONEK */
 699+#define XK_ogonek                        0x01b2  /* U+02DB OGONEK */
 700+#define XK_lstroke                       0x01b3  /* U+0142 LATIN SMALL LETTER L WITH STROKE */
 701+#define XK_lcaron                        0x01b5  /* U+013E LATIN SMALL LETTER L WITH CARON */
 702+#define XK_sacute                        0x01b6  /* U+015B LATIN SMALL LETTER S WITH ACUTE */
 703+#define XK_caron                         0x01b7  /* U+02C7 CARON */
 704+#define XK_scaron                        0x01b9  /* U+0161 LATIN SMALL LETTER S WITH CARON */
 705+#define XK_scedilla                      0x01ba  /* U+015F LATIN SMALL LETTER S WITH CEDILLA */
 706+#define XK_tcaron                        0x01bb  /* U+0165 LATIN SMALL LETTER T WITH CARON */
 707+#define XK_zacute                        0x01bc  /* U+017A LATIN SMALL LETTER Z WITH ACUTE */
 708+#define XK_doubleacute                   0x01bd  /* U+02DD DOUBLE ACUTE ACCENT */
 709+#define XK_zcaron                        0x01be  /* U+017E LATIN SMALL LETTER Z WITH CARON */
 710+#define XK_zabovedot                     0x01bf  /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */
 711+#define XK_Racute                        0x01c0  /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */
 712+#define XK_Abreve                        0x01c3  /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */
 713+#define XK_Lacute                        0x01c5  /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */
 714+#define XK_Cacute                        0x01c6  /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */
 715+#define XK_Ccaron                        0x01c8  /* U+010C LATIN CAPITAL LETTER C WITH CARON */
 716+#define XK_Eogonek                       0x01ca  /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */
 717+#define XK_Ecaron                        0x01cc  /* U+011A LATIN CAPITAL LETTER E WITH CARON */
 718+#define XK_Dcaron                        0x01cf  /* U+010E LATIN CAPITAL LETTER D WITH CARON */
 719+#define XK_Dstroke                       0x01d0  /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */
 720+#define XK_Nacute                        0x01d1  /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */
 721+#define XK_Ncaron                        0x01d2  /* U+0147 LATIN CAPITAL LETTER N WITH CARON */
 722+#define XK_Odoubleacute                  0x01d5  /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
 723+#define XK_Rcaron                        0x01d8  /* U+0158 LATIN CAPITAL LETTER R WITH CARON */
 724+#define XK_Uring                         0x01d9  /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */
 725+#define XK_Udoubleacute                  0x01db  /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
 726+#define XK_Tcedilla                      0x01de  /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */
 727+#define XK_racute                        0x01e0  /* U+0155 LATIN SMALL LETTER R WITH ACUTE */
 728+#define XK_abreve                        0x01e3  /* U+0103 LATIN SMALL LETTER A WITH BREVE */
 729+#define XK_lacute                        0x01e5  /* U+013A LATIN SMALL LETTER L WITH ACUTE */
 730+#define XK_cacute                        0x01e6  /* U+0107 LATIN SMALL LETTER C WITH ACUTE */
 731+#define XK_ccaron                        0x01e8  /* U+010D LATIN SMALL LETTER C WITH CARON */
 732+#define XK_eogonek                       0x01ea  /* U+0119 LATIN SMALL LETTER E WITH OGONEK */
 733+#define XK_ecaron                        0x01ec  /* U+011B LATIN SMALL LETTER E WITH CARON */
 734+#define XK_dcaron                        0x01ef  /* U+010F LATIN SMALL LETTER D WITH CARON */
 735+#define XK_dstroke                       0x01f0  /* U+0111 LATIN SMALL LETTER D WITH STROKE */
 736+#define XK_nacute                        0x01f1  /* U+0144 LATIN SMALL LETTER N WITH ACUTE */
 737+#define XK_ncaron                        0x01f2  /* U+0148 LATIN SMALL LETTER N WITH CARON */
 738+#define XK_odoubleacute                  0x01f5  /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */
 739+#define XK_udoubleacute                  0x01fb  /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */
 740+#define XK_rcaron                        0x01f8  /* U+0159 LATIN SMALL LETTER R WITH CARON */
 741+#define XK_uring                         0x01f9  /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */
 742+#define XK_tcedilla                      0x01fe  /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */
 743+#define XK_abovedot                      0x01ff  /* U+02D9 DOT ABOVE */
 744+#endif /* XK_LATIN2 */
 745+
 746+/*
 747+ * Latin 3
 748+ * Byte 3 = 2
 749+ */
 750+
 751+#ifdef XK_LATIN3
 752+#define XK_Hstroke                       0x02a1  /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */
 753+#define XK_Hcircumflex                   0x02a6  /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
 754+#define XK_Iabovedot                     0x02a9  /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */
 755+#define XK_Gbreve                        0x02ab  /* U+011E LATIN CAPITAL LETTER G WITH BREVE */
 756+#define XK_Jcircumflex                   0x02ac  /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
 757+#define XK_hstroke                       0x02b1  /* U+0127 LATIN SMALL LETTER H WITH STROKE */
 758+#define XK_hcircumflex                   0x02b6  /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */
 759+#define XK_idotless                      0x02b9  /* U+0131 LATIN SMALL LETTER DOTLESS I */
 760+#define XK_gbreve                        0x02bb  /* U+011F LATIN SMALL LETTER G WITH BREVE */
 761+#define XK_jcircumflex                   0x02bc  /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */
 762+#define XK_Cabovedot                     0x02c5  /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */
 763+#define XK_Ccircumflex                   0x02c6  /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
 764+#define XK_Gabovedot                     0x02d5  /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */
 765+#define XK_Gcircumflex                   0x02d8  /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
 766+#define XK_Ubreve                        0x02dd  /* U+016C LATIN CAPITAL LETTER U WITH BREVE */
 767+#define XK_Scircumflex                   0x02de  /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
 768+#define XK_cabovedot                     0x02e5  /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */
 769+#define XK_ccircumflex                   0x02e6  /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */
 770+#define XK_gabovedot                     0x02f5  /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */
 771+#define XK_gcircumflex                   0x02f8  /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */
 772+#define XK_ubreve                        0x02fd  /* U+016D LATIN SMALL LETTER U WITH BREVE */
 773+#define XK_scircumflex                   0x02fe  /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */
 774+#endif /* XK_LATIN3 */
 775+
 776+
 777+/*
 778+ * Latin 4
 779+ * Byte 3 = 3
 780+ */
 781+
 782+#ifdef XK_LATIN4
 783+#define XK_kra                           0x03a2  /* U+0138 LATIN SMALL LETTER KRA */
 784+#define XK_kappa                         0x03a2  /* deprecated */
 785+#define XK_Rcedilla                      0x03a3  /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */
 786+#define XK_Itilde                        0x03a5  /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */
 787+#define XK_Lcedilla                      0x03a6  /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */
 788+#define XK_Emacron                       0x03aa  /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */
 789+#define XK_Gcedilla                      0x03ab  /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */
 790+#define XK_Tslash                        0x03ac  /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */
 791+#define XK_rcedilla                      0x03b3  /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */
 792+#define XK_itilde                        0x03b5  /* U+0129 LATIN SMALL LETTER I WITH TILDE */
 793+#define XK_lcedilla                      0x03b6  /* U+013C LATIN SMALL LETTER L WITH CEDILLA */
 794+#define XK_emacron                       0x03ba  /* U+0113 LATIN SMALL LETTER E WITH MACRON */
 795+#define XK_gcedilla                      0x03bb  /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */
 796+#define XK_tslash                        0x03bc  /* U+0167 LATIN SMALL LETTER T WITH STROKE */
 797+#define XK_ENG                           0x03bd  /* U+014A LATIN CAPITAL LETTER ENG */
 798+#define XK_eng                           0x03bf  /* U+014B LATIN SMALL LETTER ENG */
 799+#define XK_Amacron                       0x03c0  /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */
 800+#define XK_Iogonek                       0x03c7  /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */
 801+#define XK_Eabovedot                     0x03cc  /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */
 802+#define XK_Imacron                       0x03cf  /* U+012A LATIN CAPITAL LETTER I WITH MACRON */
 803+#define XK_Ncedilla                      0x03d1  /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */
 804+#define XK_Omacron                       0x03d2  /* U+014C LATIN CAPITAL LETTER O WITH MACRON */
 805+#define XK_Kcedilla                      0x03d3  /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */
 806+#define XK_Uogonek                       0x03d9  /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */
 807+#define XK_Utilde                        0x03dd  /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */
 808+#define XK_Umacron                       0x03de  /* U+016A LATIN CAPITAL LETTER U WITH MACRON */
 809+#define XK_amacron                       0x03e0  /* U+0101 LATIN SMALL LETTER A WITH MACRON */
 810+#define XK_iogonek                       0x03e7  /* U+012F LATIN SMALL LETTER I WITH OGONEK */
 811+#define XK_eabovedot                     0x03ec  /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */
 812+#define XK_imacron                       0x03ef  /* U+012B LATIN SMALL LETTER I WITH MACRON */
 813+#define XK_ncedilla                      0x03f1  /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */
 814+#define XK_omacron                       0x03f2  /* U+014D LATIN SMALL LETTER O WITH MACRON */
 815+#define XK_kcedilla                      0x03f3  /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */
 816+#define XK_uogonek                       0x03f9  /* U+0173 LATIN SMALL LETTER U WITH OGONEK */
 817+#define XK_utilde                        0x03fd  /* U+0169 LATIN SMALL LETTER U WITH TILDE */
 818+#define XK_umacron                       0x03fe  /* U+016B LATIN SMALL LETTER U WITH MACRON */
 819+#endif /* XK_LATIN4 */
 820+
 821+/*
 822+ * Latin 8
 823+ */
 824+#ifdef XK_LATIN8
 825+#define XK_Babovedot                  0x1001e02  /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */
 826+#define XK_babovedot                  0x1001e03  /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */
 827+#define XK_Dabovedot                  0x1001e0a  /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */
 828+#define XK_Wgrave                     0x1001e80  /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */
 829+#define XK_Wacute                     0x1001e82  /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */
 830+#define XK_dabovedot                  0x1001e0b  /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */
 831+#define XK_Ygrave                     0x1001ef2  /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */
 832+#define XK_Fabovedot                  0x1001e1e  /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */
 833+#define XK_fabovedot                  0x1001e1f  /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */
 834+#define XK_Mabovedot                  0x1001e40  /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */
 835+#define XK_mabovedot                  0x1001e41  /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */
 836+#define XK_Pabovedot                  0x1001e56  /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */
 837+#define XK_wgrave                     0x1001e81  /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */
 838+#define XK_pabovedot                  0x1001e57  /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */
 839+#define XK_wacute                     0x1001e83  /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */
 840+#define XK_Sabovedot                  0x1001e60  /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */
 841+#define XK_ygrave                     0x1001ef3  /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */
 842+#define XK_Wdiaeresis                 0x1001e84  /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */
 843+#define XK_wdiaeresis                 0x1001e85  /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */
 844+#define XK_sabovedot                  0x1001e61  /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */
 845+#define XK_Wcircumflex                0x1000174  /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
 846+#define XK_Tabovedot                  0x1001e6a  /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */
 847+#define XK_Ycircumflex                0x1000176  /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
 848+#define XK_wcircumflex                0x1000175  /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */
 849+#define XK_tabovedot                  0x1001e6b  /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */
 850+#define XK_ycircumflex                0x1000177  /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */
 851+#endif /* XK_LATIN8 */
 852+
 853+/*
 854+ * Latin 9
 855+ * Byte 3 = 0x13
 856+ */
 857+
 858+#ifdef XK_LATIN9
 859+#define XK_OE                            0x13bc  /* U+0152 LATIN CAPITAL LIGATURE OE */
 860+#define XK_oe                            0x13bd  /* U+0153 LATIN SMALL LIGATURE OE */
 861+#define XK_Ydiaeresis                    0x13be  /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */
 862+#endif /* XK_LATIN9 */
 863+
 864+/*
 865+ * Katakana
 866+ * Byte 3 = 4
 867+ */
 868+
 869+#ifdef XK_KATAKANA
 870+#define XK_overline                      0x047e  /* U+203E OVERLINE */
 871+#define XK_kana_fullstop                 0x04a1  /* U+3002 IDEOGRAPHIC FULL STOP */
 872+#define XK_kana_openingbracket           0x04a2  /* U+300C LEFT CORNER BRACKET */
 873+#define XK_kana_closingbracket           0x04a3  /* U+300D RIGHT CORNER BRACKET */
 874+#define XK_kana_comma                    0x04a4  /* U+3001 IDEOGRAPHIC COMMA */
 875+#define XK_kana_conjunctive              0x04a5  /* U+30FB KATAKANA MIDDLE DOT */
 876+#define XK_kana_middledot                0x04a5  /* deprecated */
 877+#define XK_kana_WO                       0x04a6  /* U+30F2 KATAKANA LETTER WO */
 878+#define XK_kana_a                        0x04a7  /* U+30A1 KATAKANA LETTER SMALL A */
 879+#define XK_kana_i                        0x04a8  /* U+30A3 KATAKANA LETTER SMALL I */
 880+#define XK_kana_u                        0x04a9  /* U+30A5 KATAKANA LETTER SMALL U */
 881+#define XK_kana_e                        0x04aa  /* U+30A7 KATAKANA LETTER SMALL E */
 882+#define XK_kana_o                        0x04ab  /* U+30A9 KATAKANA LETTER SMALL O */
 883+#define XK_kana_ya                       0x04ac  /* U+30E3 KATAKANA LETTER SMALL YA */
 884+#define XK_kana_yu                       0x04ad  /* U+30E5 KATAKANA LETTER SMALL YU */
 885+#define XK_kana_yo                       0x04ae  /* U+30E7 KATAKANA LETTER SMALL YO */
 886+#define XK_kana_tsu                      0x04af  /* U+30C3 KATAKANA LETTER SMALL TU */
 887+#define XK_kana_tu                       0x04af  /* deprecated */
 888+#define XK_prolongedsound                0x04b0  /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */
 889+#define XK_kana_A                        0x04b1  /* U+30A2 KATAKANA LETTER A */
 890+#define XK_kana_I                        0x04b2  /* U+30A4 KATAKANA LETTER I */
 891+#define XK_kana_U                        0x04b3  /* U+30A6 KATAKANA LETTER U */
 892+#define XK_kana_E                        0x04b4  /* U+30A8 KATAKANA LETTER E */
 893+#define XK_kana_O                        0x04b5  /* U+30AA KATAKANA LETTER O */
 894+#define XK_kana_KA                       0x04b6  /* U+30AB KATAKANA LETTER KA */
 895+#define XK_kana_KI                       0x04b7  /* U+30AD KATAKANA LETTER KI */
 896+#define XK_kana_KU                       0x04b8  /* U+30AF KATAKANA LETTER KU */
 897+#define XK_kana_KE                       0x04b9  /* U+30B1 KATAKANA LETTER KE */
 898+#define XK_kana_KO                       0x04ba  /* U+30B3 KATAKANA LETTER KO */
 899+#define XK_kana_SA                       0x04bb  /* U+30B5 KATAKANA LETTER SA */
 900+#define XK_kana_SHI                      0x04bc  /* U+30B7 KATAKANA LETTER SI */
 901+#define XK_kana_SU                       0x04bd  /* U+30B9 KATAKANA LETTER SU */
 902+#define XK_kana_SE                       0x04be  /* U+30BB KATAKANA LETTER SE */
 903+#define XK_kana_SO                       0x04bf  /* U+30BD KATAKANA LETTER SO */
 904+#define XK_kana_TA                       0x04c0  /* U+30BF KATAKANA LETTER TA */
 905+#define XK_kana_CHI                      0x04c1  /* U+30C1 KATAKANA LETTER TI */
 906+#define XK_kana_TI                       0x04c1  /* deprecated */
 907+#define XK_kana_TSU                      0x04c2  /* U+30C4 KATAKANA LETTER TU */
 908+#define XK_kana_TU                       0x04c2  /* deprecated */
 909+#define XK_kana_TE                       0x04c3  /* U+30C6 KATAKANA LETTER TE */
 910+#define XK_kana_TO                       0x04c4  /* U+30C8 KATAKANA LETTER TO */
 911+#define XK_kana_NA                       0x04c5  /* U+30CA KATAKANA LETTER NA */
 912+#define XK_kana_NI                       0x04c6  /* U+30CB KATAKANA LETTER NI */
 913+#define XK_kana_NU                       0x04c7  /* U+30CC KATAKANA LETTER NU */
 914+#define XK_kana_NE                       0x04c8  /* U+30CD KATAKANA LETTER NE */
 915+#define XK_kana_NO                       0x04c9  /* U+30CE KATAKANA LETTER NO */
 916+#define XK_kana_HA                       0x04ca  /* U+30CF KATAKANA LETTER HA */
 917+#define XK_kana_HI                       0x04cb  /* U+30D2 KATAKANA LETTER HI */
 918+#define XK_kana_FU                       0x04cc  /* U+30D5 KATAKANA LETTER HU */
 919+#define XK_kana_HU                       0x04cc  /* deprecated */
 920+#define XK_kana_HE                       0x04cd  /* U+30D8 KATAKANA LETTER HE */
 921+#define XK_kana_HO                       0x04ce  /* U+30DB KATAKANA LETTER HO */
 922+#define XK_kana_MA                       0x04cf  /* U+30DE KATAKANA LETTER MA */
 923+#define XK_kana_MI                       0x04d0  /* U+30DF KATAKANA LETTER MI */
 924+#define XK_kana_MU                       0x04d1  /* U+30E0 KATAKANA LETTER MU */
 925+#define XK_kana_ME                       0x04d2  /* U+30E1 KATAKANA LETTER ME */
 926+#define XK_kana_MO                       0x04d3  /* U+30E2 KATAKANA LETTER MO */
 927+#define XK_kana_YA                       0x04d4  /* U+30E4 KATAKANA LETTER YA */
 928+#define XK_kana_YU                       0x04d5  /* U+30E6 KATAKANA LETTER YU */
 929+#define XK_kana_YO                       0x04d6  /* U+30E8 KATAKANA LETTER YO */
 930+#define XK_kana_RA                       0x04d7  /* U+30E9 KATAKANA LETTER RA */
 931+#define XK_kana_RI                       0x04d8  /* U+30EA KATAKANA LETTER RI */
 932+#define XK_kana_RU                       0x04d9  /* U+30EB KATAKANA LETTER RU */
 933+#define XK_kana_RE                       0x04da  /* U+30EC KATAKANA LETTER RE */
 934+#define XK_kana_RO                       0x04db  /* U+30ED KATAKANA LETTER RO */
 935+#define XK_kana_WA                       0x04dc  /* U+30EF KATAKANA LETTER WA */
 936+#define XK_kana_N                        0x04dd  /* U+30F3 KATAKANA LETTER N */
 937+#define XK_voicedsound                   0x04de  /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
 938+#define XK_semivoicedsound               0x04df  /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
 939+#define XK_kana_switch                   0xff7e  /* Alias for mode_switch */
 940+#endif /* XK_KATAKANA */
 941+
 942+/*
 943+ * Arabic
 944+ * Byte 3 = 5
 945+ */
 946+
 947+#ifdef XK_ARABIC
 948+#define XK_Farsi_0                    0x10006f0  /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */
 949+#define XK_Farsi_1                    0x10006f1  /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */
 950+#define XK_Farsi_2                    0x10006f2  /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */
 951+#define XK_Farsi_3                    0x10006f3  /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */
 952+#define XK_Farsi_4                    0x10006f4  /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */
 953+#define XK_Farsi_5                    0x10006f5  /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */
 954+#define XK_Farsi_6                    0x10006f6  /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */
 955+#define XK_Farsi_7                    0x10006f7  /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */
 956+#define XK_Farsi_8                    0x10006f8  /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */
 957+#define XK_Farsi_9                    0x10006f9  /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */
 958+#define XK_Arabic_percent             0x100066a  /* U+066A ARABIC PERCENT SIGN */
 959+#define XK_Arabic_superscript_alef    0x1000670  /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */
 960+#define XK_Arabic_tteh                0x1000679  /* U+0679 ARABIC LETTER TTEH */
 961+#define XK_Arabic_peh                 0x100067e  /* U+067E ARABIC LETTER PEH */
 962+#define XK_Arabic_tcheh               0x1000686  /* U+0686 ARABIC LETTER TCHEH */
 963+#define XK_Arabic_ddal                0x1000688  /* U+0688 ARABIC LETTER DDAL */
 964+#define XK_Arabic_rreh                0x1000691  /* U+0691 ARABIC LETTER RREH */
 965+#define XK_Arabic_comma                  0x05ac  /* U+060C ARABIC COMMA */
 966+#define XK_Arabic_fullstop            0x10006d4  /* U+06D4 ARABIC FULL STOP */
 967+#define XK_Arabic_0                   0x1000660  /* U+0660 ARABIC-INDIC DIGIT ZERO */
 968+#define XK_Arabic_1                   0x1000661  /* U+0661 ARABIC-INDIC DIGIT ONE */
 969+#define XK_Arabic_2                   0x1000662  /* U+0662 ARABIC-INDIC DIGIT TWO */
 970+#define XK_Arabic_3                   0x1000663  /* U+0663 ARABIC-INDIC DIGIT THREE */
 971+#define XK_Arabic_4                   0x1000664  /* U+0664 ARABIC-INDIC DIGIT FOUR */
 972+#define XK_Arabic_5                   0x1000665  /* U+0665 ARABIC-INDIC DIGIT FIVE */
 973+#define XK_Arabic_6                   0x1000666  /* U+0666 ARABIC-INDIC DIGIT SIX */
 974+#define XK_Arabic_7                   0x1000667  /* U+0667 ARABIC-INDIC DIGIT SEVEN */
 975+#define XK_Arabic_8                   0x1000668  /* U+0668 ARABIC-INDIC DIGIT EIGHT */
 976+#define XK_Arabic_9                   0x1000669  /* U+0669 ARABIC-INDIC DIGIT NINE */
 977+#define XK_Arabic_semicolon              0x05bb  /* U+061B ARABIC SEMICOLON */
 978+#define XK_Arabic_question_mark          0x05bf  /* U+061F ARABIC QUESTION MARK */
 979+#define XK_Arabic_hamza                  0x05c1  /* U+0621 ARABIC LETTER HAMZA */
 980+#define XK_Arabic_maddaonalef            0x05c2  /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */
 981+#define XK_Arabic_hamzaonalef            0x05c3  /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */
 982+#define XK_Arabic_hamzaonwaw             0x05c4  /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */
 983+#define XK_Arabic_hamzaunderalef         0x05c5  /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */
 984+#define XK_Arabic_hamzaonyeh             0x05c6  /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */
 985+#define XK_Arabic_alef                   0x05c7  /* U+0627 ARABIC LETTER ALEF */
 986+#define XK_Arabic_beh                    0x05c8  /* U+0628 ARABIC LETTER BEH */
 987+#define XK_Arabic_tehmarbuta             0x05c9  /* U+0629 ARABIC LETTER TEH MARBUTA */
 988+#define XK_Arabic_teh                    0x05ca  /* U+062A ARABIC LETTER TEH */
 989+#define XK_Arabic_theh                   0x05cb  /* U+062B ARABIC LETTER THEH */
 990+#define XK_Arabic_jeem                   0x05cc  /* U+062C ARABIC LETTER JEEM */
 991+#define XK_Arabic_hah                    0x05cd  /* U+062D ARABIC LETTER HAH */
 992+#define XK_Arabic_khah                   0x05ce  /* U+062E ARABIC LETTER KHAH */
 993+#define XK_Arabic_dal                    0x05cf  /* U+062F ARABIC LETTER DAL */
 994+#define XK_Arabic_thal                   0x05d0  /* U+0630 ARABIC LETTER THAL */
 995+#define XK_Arabic_ra                     0x05d1  /* U+0631 ARABIC LETTER REH */
 996+#define XK_Arabic_zain                   0x05d2  /* U+0632 ARABIC LETTER ZAIN */
 997+#define XK_Arabic_seen                   0x05d3  /* U+0633 ARABIC LETTER SEEN */
 998+#define XK_Arabic_sheen                  0x05d4  /* U+0634 ARABIC LETTER SHEEN */
 999+#define XK_Arabic_sad                    0x05d5  /* U+0635 ARABIC LETTER SAD */
1000+#define XK_Arabic_dad                    0x05d6  /* U+0636 ARABIC LETTER DAD */
1001+#define XK_Arabic_tah                    0x05d7  /* U+0637 ARABIC LETTER TAH */
1002+#define XK_Arabic_zah                    0x05d8  /* U+0638 ARABIC LETTER ZAH */
1003+#define XK_Arabic_ain                    0x05d9  /* U+0639 ARABIC LETTER AIN */
1004+#define XK_Arabic_ghain                  0x05da  /* U+063A ARABIC LETTER GHAIN */
1005+#define XK_Arabic_tatweel                0x05e0  /* U+0640 ARABIC TATWEEL */
1006+#define XK_Arabic_feh                    0x05e1  /* U+0641 ARABIC LETTER FEH */
1007+#define XK_Arabic_qaf                    0x05e2  /* U+0642 ARABIC LETTER QAF */
1008+#define XK_Arabic_kaf                    0x05e3  /* U+0643 ARABIC LETTER KAF */
1009+#define XK_Arabic_lam                    0x05e4  /* U+0644 ARABIC LETTER LAM */
1010+#define XK_Arabic_meem                   0x05e5  /* U+0645 ARABIC LETTER MEEM */
1011+#define XK_Arabic_noon                   0x05e6  /* U+0646 ARABIC LETTER NOON */
1012+#define XK_Arabic_ha                     0x05e7  /* U+0647 ARABIC LETTER HEH */
1013+#define XK_Arabic_heh                    0x05e7  /* deprecated */
1014+#define XK_Arabic_waw                    0x05e8  /* U+0648 ARABIC LETTER WAW */
1015+#define XK_Arabic_alefmaksura            0x05e9  /* U+0649 ARABIC LETTER ALEF MAKSURA */
1016+#define XK_Arabic_yeh                    0x05ea  /* U+064A ARABIC LETTER YEH */
1017+#define XK_Arabic_fathatan               0x05eb  /* U+064B ARABIC FATHATAN */
1018+#define XK_Arabic_dammatan               0x05ec  /* U+064C ARABIC DAMMATAN */
1019+#define XK_Arabic_kasratan               0x05ed  /* U+064D ARABIC KASRATAN */
1020+#define XK_Arabic_fatha                  0x05ee  /* U+064E ARABIC FATHA */
1021+#define XK_Arabic_damma                  0x05ef  /* U+064F ARABIC DAMMA */
1022+#define XK_Arabic_kasra                  0x05f0  /* U+0650 ARABIC KASRA */
1023+#define XK_Arabic_shadda                 0x05f1  /* U+0651 ARABIC SHADDA */
1024+#define XK_Arabic_sukun                  0x05f2  /* U+0652 ARABIC SUKUN */
1025+#define XK_Arabic_madda_above         0x1000653  /* U+0653 ARABIC MADDAH ABOVE */
1026+#define XK_Arabic_hamza_above         0x1000654  /* U+0654 ARABIC HAMZA ABOVE */
1027+#define XK_Arabic_hamza_below         0x1000655  /* U+0655 ARABIC HAMZA BELOW */
1028+#define XK_Arabic_jeh                 0x1000698  /* U+0698 ARABIC LETTER JEH */
1029+#define XK_Arabic_veh                 0x10006a4  /* U+06A4 ARABIC LETTER VEH */
1030+#define XK_Arabic_keheh               0x10006a9  /* U+06A9 ARABIC LETTER KEHEH */
1031+#define XK_Arabic_gaf                 0x10006af  /* U+06AF ARABIC LETTER GAF */
1032+#define XK_Arabic_noon_ghunna         0x10006ba  /* U+06BA ARABIC LETTER NOON GHUNNA */
1033+#define XK_Arabic_heh_doachashmee     0x10006be  /* U+06BE ARABIC LETTER HEH DOACHASHMEE */
1034+#define XK_Farsi_yeh                  0x10006cc  /* U+06CC ARABIC LETTER FARSI YEH */
1035+#define XK_Arabic_farsi_yeh           0x10006cc  /* U+06CC ARABIC LETTER FARSI YEH */
1036+#define XK_Arabic_yeh_baree           0x10006d2  /* U+06D2 ARABIC LETTER YEH BARREE */
1037+#define XK_Arabic_heh_goal            0x10006c1  /* U+06C1 ARABIC LETTER HEH GOAL */
1038+#define XK_Arabic_switch                 0xff7e  /* Alias for mode_switch */
1039+#endif /* XK_ARABIC */
1040+
1041+/*
1042+ * Cyrillic
1043+ * Byte 3 = 6
1044+ */
1045+#ifdef XK_CYRILLIC
1046+#define XK_Cyrillic_GHE_bar           0x1000492  /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */
1047+#define XK_Cyrillic_ghe_bar           0x1000493  /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */
1048+#define XK_Cyrillic_ZHE_descender     0x1000496  /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
1049+#define XK_Cyrillic_zhe_descender     0x1000497  /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
1050+#define XK_Cyrillic_KA_descender      0x100049a  /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
1051+#define XK_Cyrillic_ka_descender      0x100049b  /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */
1052+#define XK_Cyrillic_KA_vertstroke     0x100049c  /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
1053+#define XK_Cyrillic_ka_vertstroke     0x100049d  /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
1054+#define XK_Cyrillic_EN_descender      0x10004a2  /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
1055+#define XK_Cyrillic_en_descender      0x10004a3  /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */
1056+#define XK_Cyrillic_U_straight        0x10004ae  /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */
1057+#define XK_Cyrillic_u_straight        0x10004af  /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */
1058+#define XK_Cyrillic_U_straight_bar    0x10004b0  /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
1059+#define XK_Cyrillic_u_straight_bar    0x10004b1  /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
1060+#define XK_Cyrillic_HA_descender      0x10004b2  /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
1061+#define XK_Cyrillic_ha_descender      0x10004b3  /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */
1062+#define XK_Cyrillic_CHE_descender     0x10004b6  /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
1063+#define XK_Cyrillic_che_descender     0x10004b7  /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */
1064+#define XK_Cyrillic_CHE_vertstroke    0x10004b8  /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
1065+#define XK_Cyrillic_che_vertstroke    0x10004b9  /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
1066+#define XK_Cyrillic_SHHA              0x10004ba  /* U+04BA CYRILLIC CAPITAL LETTER SHHA */
1067+#define XK_Cyrillic_shha              0x10004bb  /* U+04BB CYRILLIC SMALL LETTER SHHA */
1068+
1069+#define XK_Cyrillic_SCHWA             0x10004d8  /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */
1070+#define XK_Cyrillic_schwa             0x10004d9  /* U+04D9 CYRILLIC SMALL LETTER SCHWA */
1071+#define XK_Cyrillic_I_macron          0x10004e2  /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */
1072+#define XK_Cyrillic_i_macron          0x10004e3  /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */
1073+#define XK_Cyrillic_O_bar             0x10004e8  /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */
1074+#define XK_Cyrillic_o_bar             0x10004e9  /* U+04E9 CYRILLIC SMALL LETTER BARRED O */
1075+#define XK_Cyrillic_U_macron          0x10004ee  /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */
1076+#define XK_Cyrillic_u_macron          0x10004ef  /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */
1077+
1078+#define XK_Serbian_dje                   0x06a1  /* U+0452 CYRILLIC SMALL LETTER DJE */
1079+#define XK_Macedonia_gje                 0x06a2  /* U+0453 CYRILLIC SMALL LETTER GJE */
1080+#define XK_Cyrillic_io                   0x06a3  /* U+0451 CYRILLIC SMALL LETTER IO */
1081+#define XK_Ukrainian_ie                  0x06a4  /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */
1082+#define XK_Ukranian_je                   0x06a4  /* deprecated */
1083+#define XK_Macedonia_dse                 0x06a5  /* U+0455 CYRILLIC SMALL LETTER DZE */
1084+#define XK_Ukrainian_i                   0x06a6  /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
1085+#define XK_Ukranian_i                    0x06a6  /* deprecated */
1086+#define XK_Ukrainian_yi                  0x06a7  /* U+0457 CYRILLIC SMALL LETTER YI */
1087+#define XK_Ukranian_yi                   0x06a7  /* deprecated */
1088+#define XK_Cyrillic_je                   0x06a8  /* U+0458 CYRILLIC SMALL LETTER JE */
1089+#define XK_Serbian_je                    0x06a8  /* deprecated */
1090+#define XK_Cyrillic_lje                  0x06a9  /* U+0459 CYRILLIC SMALL LETTER LJE */
1091+#define XK_Serbian_lje                   0x06a9  /* deprecated */
1092+#define XK_Cyrillic_nje                  0x06aa  /* U+045A CYRILLIC SMALL LETTER NJE */
1093+#define XK_Serbian_nje                   0x06aa  /* deprecated */
1094+#define XK_Serbian_tshe                  0x06ab  /* U+045B CYRILLIC SMALL LETTER TSHE */
1095+#define XK_Macedonia_kje                 0x06ac  /* U+045C CYRILLIC SMALL LETTER KJE */
1096+#define XK_Ukrainian_ghe_with_upturn     0x06ad  /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */
1097+#define XK_Byelorussian_shortu           0x06ae  /* U+045E CYRILLIC SMALL LETTER SHORT U */
1098+#define XK_Cyrillic_dzhe                 0x06af  /* U+045F CYRILLIC SMALL LETTER DZHE */
1099+#define XK_Serbian_dze                   0x06af  /* deprecated */
1100+#define XK_numerosign                    0x06b0  /* U+2116 NUMERO SIGN */
1101+#define XK_Serbian_DJE                   0x06b1  /* U+0402 CYRILLIC CAPITAL LETTER DJE */
1102+#define XK_Macedonia_GJE                 0x06b2  /* U+0403 CYRILLIC CAPITAL LETTER GJE */
1103+#define XK_Cyrillic_IO                   0x06b3  /* U+0401 CYRILLIC CAPITAL LETTER IO */
1104+#define XK_Ukrainian_IE                  0x06b4  /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
1105+#define XK_Ukranian_JE                   0x06b4  /* deprecated */
1106+#define XK_Macedonia_DSE                 0x06b5  /* U+0405 CYRILLIC CAPITAL LETTER DZE */
1107+#define XK_Ukrainian_I                   0x06b6  /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
1108+#define XK_Ukranian_I                    0x06b6  /* deprecated */
1109+#define XK_Ukrainian_YI                  0x06b7  /* U+0407 CYRILLIC CAPITAL LETTER YI */
1110+#define XK_Ukranian_YI                   0x06b7  /* deprecated */
1111+#define XK_Cyrillic_JE                   0x06b8  /* U+0408 CYRILLIC CAPITAL LETTER JE */
1112+#define XK_Serbian_JE                    0x06b8  /* deprecated */
1113+#define XK_Cyrillic_LJE                  0x06b9  /* U+0409 CYRILLIC CAPITAL LETTER LJE */
1114+#define XK_Serbian_LJE                   0x06b9  /* deprecated */
1115+#define XK_Cyrillic_NJE                  0x06ba  /* U+040A CYRILLIC CAPITAL LETTER NJE */
1116+#define XK_Serbian_NJE                   0x06ba  /* deprecated */
1117+#define XK_Serbian_TSHE                  0x06bb  /* U+040B CYRILLIC CAPITAL LETTER TSHE */
1118+#define XK_Macedonia_KJE                 0x06bc  /* U+040C CYRILLIC CAPITAL LETTER KJE */
1119+#define XK_Ukrainian_GHE_WITH_UPTURN     0x06bd  /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
1120+#define XK_Byelorussian_SHORTU           0x06be  /* U+040E CYRILLIC CAPITAL LETTER SHORT U */
1121+#define XK_Cyrillic_DZHE                 0x06bf  /* U+040F CYRILLIC CAPITAL LETTER DZHE */
1122+#define XK_Serbian_DZE                   0x06bf  /* deprecated */
1123+#define XK_Cyrillic_yu                   0x06c0  /* U+044E CYRILLIC SMALL LETTER YU */
1124+#define XK_Cyrillic_a                    0x06c1  /* U+0430 CYRILLIC SMALL LETTER A */
1125+#define XK_Cyrillic_be                   0x06c2  /* U+0431 CYRILLIC SMALL LETTER BE */
1126+#define XK_Cyrillic_tse                  0x06c3  /* U+0446 CYRILLIC SMALL LETTER TSE */
1127+#define XK_Cyrillic_de                   0x06c4  /* U+0434 CYRILLIC SMALL LETTER DE */
1128+#define XK_Cyrillic_ie                   0x06c5  /* U+0435 CYRILLIC SMALL LETTER IE */
1129+#define XK_Cyrillic_ef                   0x06c6  /* U+0444 CYRILLIC SMALL LETTER EF */
1130+#define XK_Cyrillic_ghe                  0x06c7  /* U+0433 CYRILLIC SMALL LETTER GHE */
1131+#define XK_Cyrillic_ha                   0x06c8  /* U+0445 CYRILLIC SMALL LETTER HA */
1132+#define XK_Cyrillic_i                    0x06c9  /* U+0438 CYRILLIC SMALL LETTER I */
1133+#define XK_Cyrillic_shorti               0x06ca  /* U+0439 CYRILLIC SMALL LETTER SHORT I */
1134+#define XK_Cyrillic_ka                   0x06cb  /* U+043A CYRILLIC SMALL LETTER KA */
1135+#define XK_Cyrillic_el                   0x06cc  /* U+043B CYRILLIC SMALL LETTER EL */
1136+#define XK_Cyrillic_em                   0x06cd  /* U+043C CYRILLIC SMALL LETTER EM */
1137+#define XK_Cyrillic_en                   0x06ce  /* U+043D CYRILLIC SMALL LETTER EN */
1138+#define XK_Cyrillic_o                    0x06cf  /* U+043E CYRILLIC SMALL LETTER O */
1139+#define XK_Cyrillic_pe                   0x06d0  /* U+043F CYRILLIC SMALL LETTER PE */
1140+#define XK_Cyrillic_ya                   0x06d1  /* U+044F CYRILLIC SMALL LETTER YA */
1141+#define XK_Cyrillic_er                   0x06d2  /* U+0440 CYRILLIC SMALL LETTER ER */
1142+#define XK_Cyrillic_es                   0x06d3  /* U+0441 CYRILLIC SMALL LETTER ES */
1143+#define XK_Cyrillic_te                   0x06d4  /* U+0442 CYRILLIC SMALL LETTER TE */
1144+#define XK_Cyrillic_u                    0x06d5  /* U+0443 CYRILLIC SMALL LETTER U */
1145+#define XK_Cyrillic_zhe                  0x06d6  /* U+0436 CYRILLIC SMALL LETTER ZHE */
1146+#define XK_Cyrillic_ve                   0x06d7  /* U+0432 CYRILLIC SMALL LETTER VE */
1147+#define XK_Cyrillic_softsign             0x06d8  /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */
1148+#define XK_Cyrillic_yeru                 0x06d9  /* U+044B CYRILLIC SMALL LETTER YERU */
1149+#define XK_Cyrillic_ze                   0x06da  /* U+0437 CYRILLIC SMALL LETTER ZE */
1150+#define XK_Cyrillic_sha                  0x06db  /* U+0448 CYRILLIC SMALL LETTER SHA */
1151+#define XK_Cyrillic_e                    0x06dc  /* U+044D CYRILLIC SMALL LETTER E */
1152+#define XK_Cyrillic_shcha                0x06dd  /* U+0449 CYRILLIC SMALL LETTER SHCHA */
1153+#define XK_Cyrillic_che                  0x06de  /* U+0447 CYRILLIC SMALL LETTER CHE */
1154+#define XK_Cyrillic_hardsign             0x06df  /* U+044A CYRILLIC SMALL LETTER HARD SIGN */
1155+#define XK_Cyrillic_YU                   0x06e0  /* U+042E CYRILLIC CAPITAL LETTER YU */
1156+#define XK_Cyrillic_A                    0x06e1  /* U+0410 CYRILLIC CAPITAL LETTER A */
1157+#define XK_Cyrillic_BE                   0x06e2  /* U+0411 CYRILLIC CAPITAL LETTER BE */
1158+#define XK_Cyrillic_TSE                  0x06e3  /* U+0426 CYRILLIC CAPITAL LETTER TSE */
1159+#define XK_Cyrillic_DE                   0x06e4  /* U+0414 CYRILLIC CAPITAL LETTER DE */
1160+#define XK_Cyrillic_IE                   0x06e5  /* U+0415 CYRILLIC CAPITAL LETTER IE */
1161+#define XK_Cyrillic_EF                   0x06e6  /* U+0424 CYRILLIC CAPITAL LETTER EF */
1162+#define XK_Cyrillic_GHE                  0x06e7  /* U+0413 CYRILLIC CAPITAL LETTER GHE */
1163+#define XK_Cyrillic_HA                   0x06e8  /* U+0425 CYRILLIC CAPITAL LETTER HA */
1164+#define XK_Cyrillic_I                    0x06e9  /* U+0418 CYRILLIC CAPITAL LETTER I */
1165+#define XK_Cyrillic_SHORTI               0x06ea  /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */
1166+#define XK_Cyrillic_KA                   0x06eb  /* U+041A CYRILLIC CAPITAL LETTER KA */
1167+#define XK_Cyrillic_EL                   0x06ec  /* U+041B CYRILLIC CAPITAL LETTER EL */
1168+#define XK_Cyrillic_EM                   0x06ed  /* U+041C CYRILLIC CAPITAL LETTER EM */
1169+#define XK_Cyrillic_EN                   0x06ee  /* U+041D CYRILLIC CAPITAL LETTER EN */
1170+#define XK_Cyrillic_O                    0x06ef  /* U+041E CYRILLIC CAPITAL LETTER O */
1171+#define XK_Cyrillic_PE                   0x06f0  /* U+041F CYRILLIC CAPITAL LETTER PE */
1172+#define XK_Cyrillic_YA                   0x06f1  /* U+042F CYRILLIC CAPITAL LETTER YA */
1173+#define XK_Cyrillic_ER                   0x06f2  /* U+0420 CYRILLIC CAPITAL LETTER ER */
1174+#define XK_Cyrillic_ES                   0x06f3  /* U+0421 CYRILLIC CAPITAL LETTER ES */
1175+#define XK_Cyrillic_TE                   0x06f4  /* U+0422 CYRILLIC CAPITAL LETTER TE */
1176+#define XK_Cyrillic_U                    0x06f5  /* U+0423 CYRILLIC CAPITAL LETTER U */
1177+#define XK_Cyrillic_ZHE                  0x06f6  /* U+0416 CYRILLIC CAPITAL LETTER ZHE */
1178+#define XK_Cyrillic_VE                   0x06f7  /* U+0412 CYRILLIC CAPITAL LETTER VE */
1179+#define XK_Cyrillic_SOFTSIGN             0x06f8  /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */
1180+#define XK_Cyrillic_YERU                 0x06f9  /* U+042B CYRILLIC CAPITAL LETTER YERU */
1181+#define XK_Cyrillic_ZE                   0x06fa  /* U+0417 CYRILLIC CAPITAL LETTER ZE */
1182+#define XK_Cyrillic_SHA                  0x06fb  /* U+0428 CYRILLIC CAPITAL LETTER SHA */
1183+#define XK_Cyrillic_E                    0x06fc  /* U+042D CYRILLIC CAPITAL LETTER E */
1184+#define XK_Cyrillic_SHCHA                0x06fd  /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
1185+#define XK_Cyrillic_CHE                  0x06fe  /* U+0427 CYRILLIC CAPITAL LETTER CHE */
1186+#define XK_Cyrillic_HARDSIGN             0x06ff  /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */
1187+#endif /* XK_CYRILLIC */
1188+
1189+/*
1190+ * Greek
1191+ * (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
1192+ * Byte 3 = 7
1193+ */
1194+
1195+#ifdef XK_GREEK
1196+#define XK_Greek_ALPHAaccent             0x07a1  /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */
1197+#define XK_Greek_EPSILONaccent           0x07a2  /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */
1198+#define XK_Greek_ETAaccent               0x07a3  /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */
1199+#define XK_Greek_IOTAaccent              0x07a4  /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */
1200+#define XK_Greek_IOTAdieresis            0x07a5  /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
1201+#define XK_Greek_IOTAdiaeresis           0x07a5  /* old typo */
1202+#define XK_Greek_OMICRONaccent           0x07a7  /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */
1203+#define XK_Greek_UPSILONaccent           0x07a8  /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */
1204+#define XK_Greek_UPSILONdieresis         0x07a9  /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
1205+#define XK_Greek_OMEGAaccent             0x07ab  /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */
1206+#define XK_Greek_accentdieresis          0x07ae  /* U+0385 GREEK DIALYTIKA TONOS */
1207+#define XK_Greek_horizbar                0x07af  /* U+2015 HORIZONTAL BAR */
1208+#define XK_Greek_alphaaccent             0x07b1  /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */
1209+#define XK_Greek_epsilonaccent           0x07b2  /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */
1210+#define XK_Greek_etaaccent               0x07b3  /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */
1211+#define XK_Greek_iotaaccent              0x07b4  /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */
1212+#define XK_Greek_iotadieresis            0x07b5  /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */
1213+#define XK_Greek_iotaaccentdieresis      0x07b6  /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
1214+#define XK_Greek_omicronaccent           0x07b7  /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */
1215+#define XK_Greek_upsilonaccent           0x07b8  /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */
1216+#define XK_Greek_upsilondieresis         0x07b9  /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
1217+#define XK_Greek_upsilonaccentdieresis   0x07ba  /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
1218+#define XK_Greek_omegaaccent             0x07bb  /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */
1219+#define XK_Greek_ALPHA                   0x07c1  /* U+0391 GREEK CAPITAL LETTER ALPHA */
1220+#define XK_Greek_BETA                    0x07c2  /* U+0392 GREEK CAPITAL LETTER BETA */
1221+#define XK_Greek_GAMMA                   0x07c3  /* U+0393 GREEK CAPITAL LETTER GAMMA */
1222+#define XK_Greek_DELTA                   0x07c4  /* U+0394 GREEK CAPITAL LETTER DELTA */
1223+#define XK_Greek_EPSILON                 0x07c5  /* U+0395 GREEK CAPITAL LETTER EPSILON */
1224+#define XK_Greek_ZETA                    0x07c6  /* U+0396 GREEK CAPITAL LETTER ZETA */
1225+#define XK_Greek_ETA                     0x07c7  /* U+0397 GREEK CAPITAL LETTER ETA */
1226+#define XK_Greek_THETA                   0x07c8  /* U+0398 GREEK CAPITAL LETTER THETA */
1227+#define XK_Greek_IOTA                    0x07c9  /* U+0399 GREEK CAPITAL LETTER IOTA */
1228+#define XK_Greek_KAPPA                   0x07ca  /* U+039A GREEK CAPITAL LETTER KAPPA */
1229+#define XK_Greek_LAMDA                   0x07cb  /* U+039B GREEK CAPITAL LETTER LAMDA */
1230+#define XK_Greek_LAMBDA                  0x07cb  /* U+039B GREEK CAPITAL LETTER LAMDA */
1231+#define XK_Greek_MU                      0x07cc  /* U+039C GREEK CAPITAL LETTER MU */
1232+#define XK_Greek_NU                      0x07cd  /* U+039D GREEK CAPITAL LETTER NU */
1233+#define XK_Greek_XI                      0x07ce  /* U+039E GREEK CAPITAL LETTER XI */
1234+#define XK_Greek_OMICRON                 0x07cf  /* U+039F GREEK CAPITAL LETTER OMICRON */
1235+#define XK_Greek_PI                      0x07d0  /* U+03A0 GREEK CAPITAL LETTER PI */
1236+#define XK_Greek_RHO                     0x07d1  /* U+03A1 GREEK CAPITAL LETTER RHO */
1237+#define XK_Greek_SIGMA                   0x07d2  /* U+03A3 GREEK CAPITAL LETTER SIGMA */
1238+#define XK_Greek_TAU                     0x07d4  /* U+03A4 GREEK CAPITAL LETTER TAU */
1239+#define XK_Greek_UPSILON                 0x07d5  /* U+03A5 GREEK CAPITAL LETTER UPSILON */
1240+#define XK_Greek_PHI                     0x07d6  /* U+03A6 GREEK CAPITAL LETTER PHI */
1241+#define XK_Greek_CHI                     0x07d7  /* U+03A7 GREEK CAPITAL LETTER CHI */
1242+#define XK_Greek_PSI                     0x07d8  /* U+03A8 GREEK CAPITAL LETTER PSI */
1243+#define XK_Greek_OMEGA                   0x07d9  /* U+03A9 GREEK CAPITAL LETTER OMEGA */
1244+#define XK_Greek_alpha                   0x07e1  /* U+03B1 GREEK SMALL LETTER ALPHA */
1245+#define XK_Greek_beta                    0x07e2  /* U+03B2 GREEK SMALL LETTER BETA */
1246+#define XK_Greek_gamma                   0x07e3  /* U+03B3 GREEK SMALL LETTER GAMMA */
1247+#define XK_Greek_delta                   0x07e4  /* U+03B4 GREEK SMALL LETTER DELTA */
1248+#define XK_Greek_epsilon                 0x07e5  /* U+03B5 GREEK SMALL LETTER EPSILON */
1249+#define XK_Greek_zeta                    0x07e6  /* U+03B6 GREEK SMALL LETTER ZETA */
1250+#define XK_Greek_eta                     0x07e7  /* U+03B7 GREEK SMALL LETTER ETA */
1251+#define XK_Greek_theta                   0x07e8  /* U+03B8 GREEK SMALL LETTER THETA */
1252+#define XK_Greek_iota                    0x07e9  /* U+03B9 GREEK SMALL LETTER IOTA */
1253+#define XK_Greek_kappa                   0x07ea  /* U+03BA GREEK SMALL LETTER KAPPA */
1254+#define XK_Greek_lamda                   0x07eb  /* U+03BB GREEK SMALL LETTER LAMDA */
1255+#define XK_Greek_lambda                  0x07eb  /* U+03BB GREEK SMALL LETTER LAMDA */
1256+#define XK_Greek_mu                      0x07ec  /* U+03BC GREEK SMALL LETTER MU */
1257+#define XK_Greek_nu                      0x07ed  /* U+03BD GREEK SMALL LETTER NU */
1258+#define XK_Greek_xi                      0x07ee  /* U+03BE GREEK SMALL LETTER XI */
1259+#define XK_Greek_omicron                 0x07ef  /* U+03BF GREEK SMALL LETTER OMICRON */
1260+#define XK_Greek_pi                      0x07f0  /* U+03C0 GREEK SMALL LETTER PI */
1261+#define XK_Greek_rho                     0x07f1  /* U+03C1 GREEK SMALL LETTER RHO */
1262+#define XK_Greek_sigma                   0x07f2  /* U+03C3 GREEK SMALL LETTER SIGMA */
1263+#define XK_Greek_finalsmallsigma         0x07f3  /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */
1264+#define XK_Greek_tau                     0x07f4  /* U+03C4 GREEK SMALL LETTER TAU */
1265+#define XK_Greek_upsilon                 0x07f5  /* U+03C5 GREEK SMALL LETTER UPSILON */
1266+#define XK_Greek_phi                     0x07f6  /* U+03C6 GREEK SMALL LETTER PHI */
1267+#define XK_Greek_chi                     0x07f7  /* U+03C7 GREEK SMALL LETTER CHI */
1268+#define XK_Greek_psi                     0x07f8  /* U+03C8 GREEK SMALL LETTER PSI */
1269+#define XK_Greek_omega                   0x07f9  /* U+03C9 GREEK SMALL LETTER OMEGA */
1270+#define XK_Greek_switch                  0xff7e  /* Alias for mode_switch */
1271+#endif /* XK_GREEK */
1272+
1273+/*
1274+ * Technical
1275+ * (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
1276+ * Byte 3 = 8
1277+ */
1278+
1279+#ifdef XK_TECHNICAL
1280+#define XK_leftradical                   0x08a1  /* U+23B7 RADICAL SYMBOL BOTTOM */
1281+#define XK_topleftradical                0x08a2  /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/
1282+#define XK_horizconnector                0x08a3  /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/
1283+#define XK_topintegral                   0x08a4  /* U+2320 TOP HALF INTEGRAL */
1284+#define XK_botintegral                   0x08a5  /* U+2321 BOTTOM HALF INTEGRAL */
1285+#define XK_vertconnector                 0x08a6  /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/
1286+#define XK_topleftsqbracket              0x08a7  /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */
1287+#define XK_botleftsqbracket              0x08a8  /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */
1288+#define XK_toprightsqbracket             0x08a9  /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */
1289+#define XK_botrightsqbracket             0x08aa  /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */
1290+#define XK_topleftparens                 0x08ab  /* U+239B LEFT PARENTHESIS UPPER HOOK */
1291+#define XK_botleftparens                 0x08ac  /* U+239D LEFT PARENTHESIS LOWER HOOK */
1292+#define XK_toprightparens                0x08ad  /* U+239E RIGHT PARENTHESIS UPPER HOOK */
1293+#define XK_botrightparens                0x08ae  /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */
1294+#define XK_leftmiddlecurlybrace          0x08af  /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */
1295+#define XK_rightmiddlecurlybrace         0x08b0  /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */
1296+#define XK_topleftsummation              0x08b1
1297+#define XK_botleftsummation              0x08b2
1298+#define XK_topvertsummationconnector     0x08b3
1299+#define XK_botvertsummationconnector     0x08b4
1300+#define XK_toprightsummation             0x08b5
1301+#define XK_botrightsummation             0x08b6
1302+#define XK_rightmiddlesummation          0x08b7
1303+#define XK_lessthanequal                 0x08bc  /* U+2264 LESS-THAN OR EQUAL TO */
1304+#define XK_notequal                      0x08bd  /* U+2260 NOT EQUAL TO */
1305+#define XK_greaterthanequal              0x08be  /* U+2265 GREATER-THAN OR EQUAL TO */
1306+#define XK_integral                      0x08bf  /* U+222B INTEGRAL */
1307+#define XK_therefore                     0x08c0  /* U+2234 THEREFORE */
1308+#define XK_variation                     0x08c1  /* U+221D PROPORTIONAL TO */
1309+#define XK_infinity                      0x08c2  /* U+221E INFINITY */
1310+#define XK_nabla                         0x08c5  /* U+2207 NABLA */
1311+#define XK_approximate                   0x08c8  /* U+223C TILDE OPERATOR */
1312+#define XK_similarequal                  0x08c9  /* U+2243 ASYMPTOTICALLY EQUAL TO */
1313+#define XK_ifonlyif                      0x08cd  /* U+21D4 LEFT RIGHT DOUBLE ARROW */
1314+#define XK_implies                       0x08ce  /* U+21D2 RIGHTWARDS DOUBLE ARROW */
1315+#define XK_identical                     0x08cf  /* U+2261 IDENTICAL TO */
1316+#define XK_radical                       0x08d6  /* U+221A SQUARE ROOT */
1317+#define XK_includedin                    0x08da  /* U+2282 SUBSET OF */
1318+#define XK_includes                      0x08db  /* U+2283 SUPERSET OF */
1319+#define XK_intersection                  0x08dc  /* U+2229 INTERSECTION */
1320+#define XK_union                         0x08dd  /* U+222A UNION */
1321+#define XK_logicaland                    0x08de  /* U+2227 LOGICAL AND */
1322+#define XK_logicalor                     0x08df  /* U+2228 LOGICAL OR */
1323+#define XK_partialderivative             0x08ef  /* U+2202 PARTIAL DIFFERENTIAL */
1324+#define XK_function                      0x08f6  /* U+0192 LATIN SMALL LETTER F WITH HOOK */
1325+#define XK_leftarrow                     0x08fb  /* U+2190 LEFTWARDS ARROW */
1326+#define XK_uparrow                       0x08fc  /* U+2191 UPWARDS ARROW */
1327+#define XK_rightarrow                    0x08fd  /* U+2192 RIGHTWARDS ARROW */
1328+#define XK_downarrow                     0x08fe  /* U+2193 DOWNWARDS ARROW */
1329+#endif /* XK_TECHNICAL */
1330+
1331+/*
1332+ * Special
1333+ * (from the DEC VT100 Special Graphics Character Set)
1334+ * Byte 3 = 9
1335+ */
1336+
1337+#ifdef XK_SPECIAL
1338+#define XK_blank                         0x09df
1339+#define XK_soliddiamond                  0x09e0  /* U+25C6 BLACK DIAMOND */
1340+#define XK_checkerboard                  0x09e1  /* U+2592 MEDIUM SHADE */
1341+#define XK_ht                            0x09e2  /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */
1342+#define XK_ff                            0x09e3  /* U+240C SYMBOL FOR FORM FEED */
1343+#define XK_cr                            0x09e4  /* U+240D SYMBOL FOR CARRIAGE RETURN */
1344+#define XK_lf                            0x09e5  /* U+240A SYMBOL FOR LINE FEED */
1345+#define XK_nl                            0x09e8  /* U+2424 SYMBOL FOR NEWLINE */
1346+#define XK_vt                            0x09e9  /* U+240B SYMBOL FOR VERTICAL TABULATION */
1347+#define XK_lowrightcorner                0x09ea  /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */
1348+#define XK_uprightcorner                 0x09eb  /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */
1349+#define XK_upleftcorner                  0x09ec  /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */
1350+#define XK_lowleftcorner                 0x09ed  /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */
1351+#define XK_crossinglines                 0x09ee  /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
1352+#define XK_horizlinescan1                0x09ef  /* U+23BA HORIZONTAL SCAN LINE-1 */
1353+#define XK_horizlinescan3                0x09f0  /* U+23BB HORIZONTAL SCAN LINE-3 */
1354+#define XK_horizlinescan5                0x09f1  /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */
1355+#define XK_horizlinescan7                0x09f2  /* U+23BC HORIZONTAL SCAN LINE-7 */
1356+#define XK_horizlinescan9                0x09f3  /* U+23BD HORIZONTAL SCAN LINE-9 */
1357+#define XK_leftt                         0x09f4  /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
1358+#define XK_rightt                        0x09f5  /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */
1359+#define XK_bott                          0x09f6  /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */
1360+#define XK_topt                          0x09f7  /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
1361+#define XK_vertbar                       0x09f8  /* U+2502 BOX DRAWINGS LIGHT VERTICAL */
1362+#endif /* XK_SPECIAL */
1363+
1364+/*
1365+ * Publishing
1366+ * (these are probably from a long forgotten DEC Publishing
1367+ * font that once shipped with DECwrite)
1368+ * Byte 3 = 0x0a
1369+ */
1370+
1371+#ifdef XK_PUBLISHING
1372+#define XK_emspace                       0x0aa1  /* U+2003 EM SPACE */
1373+#define XK_enspace                       0x0aa2  /* U+2002 EN SPACE */
1374+#define XK_em3space                      0x0aa3  /* U+2004 THREE-PER-EM SPACE */
1375+#define XK_em4space                      0x0aa4  /* U+2005 FOUR-PER-EM SPACE */
1376+#define XK_digitspace                    0x0aa5  /* U+2007 FIGURE SPACE */
1377+#define XK_punctspace                    0x0aa6  /* U+2008 PUNCTUATION SPACE */
1378+#define XK_thinspace                     0x0aa7  /* U+2009 THIN SPACE */
1379+#define XK_hairspace                     0x0aa8  /* U+200A HAIR SPACE */
1380+#define XK_emdash                        0x0aa9  /* U+2014 EM DASH */
1381+#define XK_endash                        0x0aaa  /* U+2013 EN DASH */
1382+#define XK_signifblank                   0x0aac  /*(U+2423 OPEN BOX)*/
1383+#define XK_ellipsis                      0x0aae  /* U+2026 HORIZONTAL ELLIPSIS */
1384+#define XK_doubbaselinedot               0x0aaf  /* U+2025 TWO DOT LEADER */
1385+#define XK_onethird                      0x0ab0  /* U+2153 VULGAR FRACTION ONE THIRD */
1386+#define XK_twothirds                     0x0ab1  /* U+2154 VULGAR FRACTION TWO THIRDS */
1387+#define XK_onefifth                      0x0ab2  /* U+2155 VULGAR FRACTION ONE FIFTH */
1388+#define XK_twofifths                     0x0ab3  /* U+2156 VULGAR FRACTION TWO FIFTHS */
1389+#define XK_threefifths                   0x0ab4  /* U+2157 VULGAR FRACTION THREE FIFTHS */
1390+#define XK_fourfifths                    0x0ab5  /* U+2158 VULGAR FRACTION FOUR FIFTHS */
1391+#define XK_onesixth                      0x0ab6  /* U+2159 VULGAR FRACTION ONE SIXTH */
1392+#define XK_fivesixths                    0x0ab7  /* U+215A VULGAR FRACTION FIVE SIXTHS */
1393+#define XK_careof                        0x0ab8  /* U+2105 CARE OF */
1394+#define XK_figdash                       0x0abb  /* U+2012 FIGURE DASH */
1395+#define XK_leftanglebracket              0x0abc  /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/
1396+#define XK_decimalpoint                  0x0abd  /*(U+002E FULL STOP)*/
1397+#define XK_rightanglebracket             0x0abe  /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/
1398+#define XK_marker                        0x0abf
1399+#define XK_oneeighth                     0x0ac3  /* U+215B VULGAR FRACTION ONE EIGHTH */
1400+#define XK_threeeighths                  0x0ac4  /* U+215C VULGAR FRACTION THREE EIGHTHS */
1401+#define XK_fiveeighths                   0x0ac5  /* U+215D VULGAR FRACTION FIVE EIGHTHS */
1402+#define XK_seveneighths                  0x0ac6  /* U+215E VULGAR FRACTION SEVEN EIGHTHS */
1403+#define XK_trademark                     0x0ac9  /* U+2122 TRADE MARK SIGN */
1404+#define XK_signaturemark                 0x0aca  /*(U+2613 SALTIRE)*/
1405+#define XK_trademarkincircle             0x0acb
1406+#define XK_leftopentriangle              0x0acc  /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/
1407+#define XK_rightopentriangle             0x0acd  /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/
1408+#define XK_emopencircle                  0x0ace  /*(U+25CB WHITE CIRCLE)*/
1409+#define XK_emopenrectangle               0x0acf  /*(U+25AF WHITE VERTICAL RECTANGLE)*/
1410+#define XK_leftsinglequotemark           0x0ad0  /* U+2018 LEFT SINGLE QUOTATION MARK */
1411+#define XK_rightsinglequotemark          0x0ad1  /* U+2019 RIGHT SINGLE QUOTATION MARK */
1412+#define XK_leftdoublequotemark           0x0ad2  /* U+201C LEFT DOUBLE QUOTATION MARK */
1413+#define XK_rightdoublequotemark          0x0ad3  /* U+201D RIGHT DOUBLE QUOTATION MARK */
1414+#define XK_prescription                  0x0ad4  /* U+211E PRESCRIPTION TAKE */
1415+#define XK_minutes                       0x0ad6  /* U+2032 PRIME */
1416+#define XK_seconds                       0x0ad7  /* U+2033 DOUBLE PRIME */
1417+#define XK_latincross                    0x0ad9  /* U+271D LATIN CROSS */
1418+#define XK_hexagram                      0x0ada
1419+#define XK_filledrectbullet              0x0adb  /*(U+25AC BLACK RECTANGLE)*/
1420+#define XK_filledlefttribullet           0x0adc  /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/
1421+#define XK_filledrighttribullet          0x0add  /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/
1422+#define XK_emfilledcircle                0x0ade  /*(U+25CF BLACK CIRCLE)*/
1423+#define XK_emfilledrect                  0x0adf  /*(U+25AE BLACK VERTICAL RECTANGLE)*/
1424+#define XK_enopencircbullet              0x0ae0  /*(U+25E6 WHITE BULLET)*/
1425+#define XK_enopensquarebullet            0x0ae1  /*(U+25AB WHITE SMALL SQUARE)*/
1426+#define XK_openrectbullet                0x0ae2  /*(U+25AD WHITE RECTANGLE)*/
1427+#define XK_opentribulletup               0x0ae3  /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/
1428+#define XK_opentribulletdown             0x0ae4  /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/
1429+#define XK_openstar                      0x0ae5  /*(U+2606 WHITE STAR)*/
1430+#define XK_enfilledcircbullet            0x0ae6  /*(U+2022 BULLET)*/
1431+#define XK_enfilledsqbullet              0x0ae7  /*(U+25AA BLACK SMALL SQUARE)*/
1432+#define XK_filledtribulletup             0x0ae8  /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/
1433+#define XK_filledtribulletdown           0x0ae9  /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/
1434+#define XK_leftpointer                   0x0aea  /*(U+261C WHITE LEFT POINTING INDEX)*/
1435+#define XK_rightpointer                  0x0aeb  /*(U+261E WHITE RIGHT POINTING INDEX)*/
1436+#define XK_club                          0x0aec  /* U+2663 BLACK CLUB SUIT */
1437+#define XK_diamond                       0x0aed  /* U+2666 BLACK DIAMOND SUIT */
1438+#define XK_heart                         0x0aee  /* U+2665 BLACK HEART SUIT */
1439+#define XK_maltesecross                  0x0af0  /* U+2720 MALTESE CROSS */
1440+#define XK_dagger                        0x0af1  /* U+2020 DAGGER */
1441+#define XK_doubledagger                  0x0af2  /* U+2021 DOUBLE DAGGER */
1442+#define XK_checkmark                     0x0af3  /* U+2713 CHECK MARK */
1443+#define XK_ballotcross                   0x0af4  /* U+2717 BALLOT X */
1444+#define XK_musicalsharp                  0x0af5  /* U+266F MUSIC SHARP SIGN */
1445+#define XK_musicalflat                   0x0af6  /* U+266D MUSIC FLAT SIGN */
1446+#define XK_malesymbol                    0x0af7  /* U+2642 MALE SIGN */
1447+#define XK_femalesymbol                  0x0af8  /* U+2640 FEMALE SIGN */
1448+#define XK_telephone                     0x0af9  /* U+260E BLACK TELEPHONE */
1449+#define XK_telephonerecorder             0x0afa  /* U+2315 TELEPHONE RECORDER */
1450+#define XK_phonographcopyright           0x0afb  /* U+2117 SOUND RECORDING COPYRIGHT */
1451+#define XK_caret                         0x0afc  /* U+2038 CARET */
1452+#define XK_singlelowquotemark            0x0afd  /* U+201A SINGLE LOW-9 QUOTATION MARK */
1453+#define XK_doublelowquotemark            0x0afe  /* U+201E DOUBLE LOW-9 QUOTATION MARK */
1454+#define XK_cursor                        0x0aff
1455+#endif /* XK_PUBLISHING */
1456+
1457+/*
1458+ * APL
1459+ * Byte 3 = 0x0b
1460+ */
1461+
1462+#ifdef XK_APL
1463+#define XK_leftcaret                     0x0ba3  /*(U+003C LESS-THAN SIGN)*/
1464+#define XK_rightcaret                    0x0ba6  /*(U+003E GREATER-THAN SIGN)*/
1465+#define XK_downcaret                     0x0ba8  /*(U+2228 LOGICAL OR)*/
1466+#define XK_upcaret                       0x0ba9  /*(U+2227 LOGICAL AND)*/
1467+#define XK_overbar                       0x0bc0  /*(U+00AF MACRON)*/
1468+#define XK_downtack                      0x0bc2  /* U+22A5 UP TACK */
1469+#define XK_upshoe                        0x0bc3  /*(U+2229 INTERSECTION)*/
1470+#define XK_downstile                     0x0bc4  /* U+230A LEFT FLOOR */
1471+#define XK_underbar                      0x0bc6  /*(U+005F LOW LINE)*/
1472+#define XK_jot                           0x0bca  /* U+2218 RING OPERATOR */
1473+#define XK_quad                          0x0bcc  /* U+2395 APL FUNCTIONAL SYMBOL QUAD */
1474+#define XK_uptack                        0x0bce  /* U+22A4 DOWN TACK */
1475+#define XK_circle                        0x0bcf  /* U+25CB WHITE CIRCLE */
1476+#define XK_upstile                       0x0bd3  /* U+2308 LEFT CEILING */
1477+#define XK_downshoe                      0x0bd6  /*(U+222A UNION)*/
1478+#define XK_rightshoe                     0x0bd8  /*(U+2283 SUPERSET OF)*/
1479+#define XK_leftshoe                      0x0bda  /*(U+2282 SUBSET OF)*/
1480+#define XK_lefttack                      0x0bdc  /* U+22A2 RIGHT TACK */
1481+#define XK_righttack                     0x0bfc  /* U+22A3 LEFT TACK */
1482+#endif /* XK_APL */
1483+
1484+/*
1485+ * Hebrew
1486+ * Byte 3 = 0x0c
1487+ */
1488+
1489+#ifdef XK_HEBREW
1490+#define XK_hebrew_doublelowline          0x0cdf  /* U+2017 DOUBLE LOW LINE */
1491+#define XK_hebrew_aleph                  0x0ce0  /* U+05D0 HEBREW LETTER ALEF */
1492+#define XK_hebrew_bet                    0x0ce1  /* U+05D1 HEBREW LETTER BET */
1493+#define XK_hebrew_beth                   0x0ce1  /* deprecated */
1494+#define XK_hebrew_gimel                  0x0ce2  /* U+05D2 HEBREW LETTER GIMEL */
1495+#define XK_hebrew_gimmel                 0x0ce2  /* deprecated */
1496+#define XK_hebrew_dalet                  0x0ce3  /* U+05D3 HEBREW LETTER DALET */
1497+#define XK_hebrew_daleth                 0x0ce3  /* deprecated */
1498+#define XK_hebrew_he                     0x0ce4  /* U+05D4 HEBREW LETTER HE */
1499+#define XK_hebrew_waw                    0x0ce5  /* U+05D5 HEBREW LETTER VAV */
1500+#define XK_hebrew_zain                   0x0ce6  /* U+05D6 HEBREW LETTER ZAYIN */
1501+#define XK_hebrew_zayin                  0x0ce6  /* deprecated */
1502+#define XK_hebrew_chet                   0x0ce7  /* U+05D7 HEBREW LETTER HET */
1503+#define XK_hebrew_het                    0x0ce7  /* deprecated */
1504+#define XK_hebrew_tet                    0x0ce8  /* U+05D8 HEBREW LETTER TET */
1505+#define XK_hebrew_teth                   0x0ce8  /* deprecated */
1506+#define XK_hebrew_yod                    0x0ce9  /* U+05D9 HEBREW LETTER YOD */
1507+#define XK_hebrew_finalkaph              0x0cea  /* U+05DA HEBREW LETTER FINAL KAF */
1508+#define XK_hebrew_kaph                   0x0ceb  /* U+05DB HEBREW LETTER KAF */
1509+#define XK_hebrew_lamed                  0x0cec  /* U+05DC HEBREW LETTER LAMED */
1510+#define XK_hebrew_finalmem               0x0ced  /* U+05DD HEBREW LETTER FINAL MEM */
1511+#define XK_hebrew_mem                    0x0cee  /* U+05DE HEBREW LETTER MEM */
1512+#define XK_hebrew_finalnun               0x0cef  /* U+05DF HEBREW LETTER FINAL NUN */
1513+#define XK_hebrew_nun                    0x0cf0  /* U+05E0 HEBREW LETTER NUN */
1514+#define XK_hebrew_samech                 0x0cf1  /* U+05E1 HEBREW LETTER SAMEKH */
1515+#define XK_hebrew_samekh                 0x0cf1  /* deprecated */
1516+#define XK_hebrew_ayin                   0x0cf2  /* U+05E2 HEBREW LETTER AYIN */
1517+#define XK_hebrew_finalpe                0x0cf3  /* U+05E3 HEBREW LETTER FINAL PE */
1518+#define XK_hebrew_pe                     0x0cf4  /* U+05E4 HEBREW LETTER PE */
1519+#define XK_hebrew_finalzade              0x0cf5  /* U+05E5 HEBREW LETTER FINAL TSADI */
1520+#define XK_hebrew_finalzadi              0x0cf5  /* deprecated */
1521+#define XK_hebrew_zade                   0x0cf6  /* U+05E6 HEBREW LETTER TSADI */
1522+#define XK_hebrew_zadi                   0x0cf6  /* deprecated */
1523+#define XK_hebrew_qoph                   0x0cf7  /* U+05E7 HEBREW LETTER QOF */
1524+#define XK_hebrew_kuf                    0x0cf7  /* deprecated */
1525+#define XK_hebrew_resh                   0x0cf8  /* U+05E8 HEBREW LETTER RESH */
1526+#define XK_hebrew_shin                   0x0cf9  /* U+05E9 HEBREW LETTER SHIN */
1527+#define XK_hebrew_taw                    0x0cfa  /* U+05EA HEBREW LETTER TAV */
1528+#define XK_hebrew_taf                    0x0cfa  /* deprecated */
1529+#define XK_Hebrew_switch                 0xff7e  /* Alias for mode_switch */
1530+#endif /* XK_HEBREW */
1531+
1532+/*
1533+ * Thai
1534+ * Byte 3 = 0x0d
1535+ */
1536+
1537+#ifdef XK_THAI
1538+#define XK_Thai_kokai                    0x0da1  /* U+0E01 THAI CHARACTER KO KAI */
1539+#define XK_Thai_khokhai                  0x0da2  /* U+0E02 THAI CHARACTER KHO KHAI */
1540+#define XK_Thai_khokhuat                 0x0da3  /* U+0E03 THAI CHARACTER KHO KHUAT */
1541+#define XK_Thai_khokhwai                 0x0da4  /* U+0E04 THAI CHARACTER KHO KHWAI */
1542+#define XK_Thai_khokhon                  0x0da5  /* U+0E05 THAI CHARACTER KHO KHON */
1543+#define XK_Thai_khorakhang               0x0da6  /* U+0E06 THAI CHARACTER KHO RAKHANG */
1544+#define XK_Thai_ngongu                   0x0da7  /* U+0E07 THAI CHARACTER NGO NGU */
1545+#define XK_Thai_chochan                  0x0da8  /* U+0E08 THAI CHARACTER CHO CHAN */
1546+#define XK_Thai_choching                 0x0da9  /* U+0E09 THAI CHARACTER CHO CHING */
1547+#define XK_Thai_chochang                 0x0daa  /* U+0E0A THAI CHARACTER CHO CHANG */
1548+#define XK_Thai_soso                     0x0dab  /* U+0E0B THAI CHARACTER SO SO */
1549+#define XK_Thai_chochoe                  0x0dac  /* U+0E0C THAI CHARACTER CHO CHOE */
1550+#define XK_Thai_yoying                   0x0dad  /* U+0E0D THAI CHARACTER YO YING */
1551+#define XK_Thai_dochada                  0x0dae  /* U+0E0E THAI CHARACTER DO CHADA */
1552+#define XK_Thai_topatak                  0x0daf  /* U+0E0F THAI CHARACTER TO PATAK */
1553+#define XK_Thai_thothan                  0x0db0  /* U+0E10 THAI CHARACTER THO THAN */
1554+#define XK_Thai_thonangmontho            0x0db1  /* U+0E11 THAI CHARACTER THO NANGMONTHO */
1555+#define XK_Thai_thophuthao               0x0db2  /* U+0E12 THAI CHARACTER THO PHUTHAO */
1556+#define XK_Thai_nonen                    0x0db3  /* U+0E13 THAI CHARACTER NO NEN */
1557+#define XK_Thai_dodek                    0x0db4  /* U+0E14 THAI CHARACTER DO DEK */
1558+#define XK_Thai_totao                    0x0db5  /* U+0E15 THAI CHARACTER TO TAO */
1559+#define XK_Thai_thothung                 0x0db6  /* U+0E16 THAI CHARACTER THO THUNG */
1560+#define XK_Thai_thothahan                0x0db7  /* U+0E17 THAI CHARACTER THO THAHAN */
1561+#define XK_Thai_thothong                 0x0db8  /* U+0E18 THAI CHARACTER THO THONG */
1562+#define XK_Thai_nonu                     0x0db9  /* U+0E19 THAI CHARACTER NO NU */
1563+#define XK_Thai_bobaimai                 0x0dba  /* U+0E1A THAI CHARACTER BO BAIMAI */
1564+#define XK_Thai_popla                    0x0dbb  /* U+0E1B THAI CHARACTER PO PLA */
1565+#define XK_Thai_phophung                 0x0dbc  /* U+0E1C THAI CHARACTER PHO PHUNG */
1566+#define XK_Thai_fofa                     0x0dbd  /* U+0E1D THAI CHARACTER FO FA */
1567+#define XK_Thai_phophan                  0x0dbe  /* U+0E1E THAI CHARACTER PHO PHAN */
1568+#define XK_Thai_fofan                    0x0dbf  /* U+0E1F THAI CHARACTER FO FAN */
1569+#define XK_Thai_phosamphao               0x0dc0  /* U+0E20 THAI CHARACTER PHO SAMPHAO */
1570+#define XK_Thai_moma                     0x0dc1  /* U+0E21 THAI CHARACTER MO MA */
1571+#define XK_Thai_yoyak                    0x0dc2  /* U+0E22 THAI CHARACTER YO YAK */
1572+#define XK_Thai_rorua                    0x0dc3  /* U+0E23 THAI CHARACTER RO RUA */
1573+#define XK_Thai_ru                       0x0dc4  /* U+0E24 THAI CHARACTER RU */
1574+#define XK_Thai_loling                   0x0dc5  /* U+0E25 THAI CHARACTER LO LING */
1575+#define XK_Thai_lu                       0x0dc6  /* U+0E26 THAI CHARACTER LU */
1576+#define XK_Thai_wowaen                   0x0dc7  /* U+0E27 THAI CHARACTER WO WAEN */
1577+#define XK_Thai_sosala                   0x0dc8  /* U+0E28 THAI CHARACTER SO SALA */
1578+#define XK_Thai_sorusi                   0x0dc9  /* U+0E29 THAI CHARACTER SO RUSI */
1579+#define XK_Thai_sosua                    0x0dca  /* U+0E2A THAI CHARACTER SO SUA */
1580+#define XK_Thai_hohip                    0x0dcb  /* U+0E2B THAI CHARACTER HO HIP */
1581+#define XK_Thai_lochula                  0x0dcc  /* U+0E2C THAI CHARACTER LO CHULA */
1582+#define XK_Thai_oang                     0x0dcd  /* U+0E2D THAI CHARACTER O ANG */
1583+#define XK_Thai_honokhuk                 0x0dce  /* U+0E2E THAI CHARACTER HO NOKHUK */
1584+#define XK_Thai_paiyannoi                0x0dcf  /* U+0E2F THAI CHARACTER PAIYANNOI */
1585+#define XK_Thai_saraa                    0x0dd0  /* U+0E30 THAI CHARACTER SARA A */
1586+#define XK_Thai_maihanakat               0x0dd1  /* U+0E31 THAI CHARACTER MAI HAN-AKAT */
1587+#define XK_Thai_saraaa                   0x0dd2  /* U+0E32 THAI CHARACTER SARA AA */
1588+#define XK_Thai_saraam                   0x0dd3  /* U+0E33 THAI CHARACTER SARA AM */
1589+#define XK_Thai_sarai                    0x0dd4  /* U+0E34 THAI CHARACTER SARA I */
1590+#define XK_Thai_saraii                   0x0dd5  /* U+0E35 THAI CHARACTER SARA II */
1591+#define XK_Thai_saraue                   0x0dd6  /* U+0E36 THAI CHARACTER SARA UE */
1592+#define XK_Thai_sarauee                  0x0dd7  /* U+0E37 THAI CHARACTER SARA UEE */
1593+#define XK_Thai_sarau                    0x0dd8  /* U+0E38 THAI CHARACTER SARA U */
1594+#define XK_Thai_sarauu                   0x0dd9  /* U+0E39 THAI CHARACTER SARA UU */
1595+#define XK_Thai_phinthu                  0x0dda  /* U+0E3A THAI CHARACTER PHINTHU */
1596+#define XK_Thai_maihanakat_maitho        0x0dde
1597+#define XK_Thai_baht                     0x0ddf  /* U+0E3F THAI CURRENCY SYMBOL BAHT */
1598+#define XK_Thai_sarae                    0x0de0  /* U+0E40 THAI CHARACTER SARA E */
1599+#define XK_Thai_saraae                   0x0de1  /* U+0E41 THAI CHARACTER SARA AE */
1600+#define XK_Thai_sarao                    0x0de2  /* U+0E42 THAI CHARACTER SARA O */
1601+#define XK_Thai_saraaimaimuan            0x0de3  /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */
1602+#define XK_Thai_saraaimaimalai           0x0de4  /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */
1603+#define XK_Thai_lakkhangyao              0x0de5  /* U+0E45 THAI CHARACTER LAKKHANGYAO */
1604+#define XK_Thai_maiyamok                 0x0de6  /* U+0E46 THAI CHARACTER MAIYAMOK */
1605+#define XK_Thai_maitaikhu                0x0de7  /* U+0E47 THAI CHARACTER MAITAIKHU */
1606+#define XK_Thai_maiek                    0x0de8  /* U+0E48 THAI CHARACTER MAI EK */
1607+#define XK_Thai_maitho                   0x0de9  /* U+0E49 THAI CHARACTER MAI THO */
1608+#define XK_Thai_maitri                   0x0dea  /* U+0E4A THAI CHARACTER MAI TRI */
1609+#define XK_Thai_maichattawa              0x0deb  /* U+0E4B THAI CHARACTER MAI CHATTAWA */
1610+#define XK_Thai_thanthakhat              0x0dec  /* U+0E4C THAI CHARACTER THANTHAKHAT */
1611+#define XK_Thai_nikhahit                 0x0ded  /* U+0E4D THAI CHARACTER NIKHAHIT */
1612+#define XK_Thai_leksun                   0x0df0  /* U+0E50 THAI DIGIT ZERO */
1613+#define XK_Thai_leknung                  0x0df1  /* U+0E51 THAI DIGIT ONE */
1614+#define XK_Thai_leksong                  0x0df2  /* U+0E52 THAI DIGIT TWO */
1615+#define XK_Thai_leksam                   0x0df3  /* U+0E53 THAI DIGIT THREE */
1616+#define XK_Thai_leksi                    0x0df4  /* U+0E54 THAI DIGIT FOUR */
1617+#define XK_Thai_lekha                    0x0df5  /* U+0E55 THAI DIGIT FIVE */
1618+#define XK_Thai_lekhok                   0x0df6  /* U+0E56 THAI DIGIT SIX */
1619+#define XK_Thai_lekchet                  0x0df7  /* U+0E57 THAI DIGIT SEVEN */
1620+#define XK_Thai_lekpaet                  0x0df8  /* U+0E58 THAI DIGIT EIGHT */
1621+#define XK_Thai_lekkao                   0x0df9  /* U+0E59 THAI DIGIT NINE */
1622+#endif /* XK_THAI */
1623+
1624+/*
1625+ * Korean
1626+ * Byte 3 = 0x0e
1627+ */
1628+
1629+#ifdef XK_KOREAN
1630+
1631+#define XK_Hangul                        0xff31  /* Hangul start/stop(toggle) */
1632+#define XK_Hangul_Start                  0xff32  /* Hangul start */
1633+#define XK_Hangul_End                    0xff33  /* Hangul end, English start */
1634+#define XK_Hangul_Hanja                  0xff34  /* Start Hangul->Hanja Conversion */
1635+#define XK_Hangul_Jamo                   0xff35  /* Hangul Jamo mode */
1636+#define XK_Hangul_Romaja                 0xff36  /* Hangul Romaja mode */
1637+#define XK_Hangul_Codeinput              0xff37  /* Hangul code input mode */
1638+#define XK_Hangul_Jeonja                 0xff38  /* Jeonja mode */
1639+#define XK_Hangul_Banja                  0xff39  /* Banja mode */
1640+#define XK_Hangul_PreHanja               0xff3a  /* Pre Hanja conversion */
1641+#define XK_Hangul_PostHanja              0xff3b  /* Post Hanja conversion */
1642+#define XK_Hangul_SingleCandidate        0xff3c  /* Single candidate */
1643+#define XK_Hangul_MultipleCandidate      0xff3d  /* Multiple candidate */
1644+#define XK_Hangul_PreviousCandidate      0xff3e  /* Previous candidate */
1645+#define XK_Hangul_Special                0xff3f  /* Special symbols */
1646+#define XK_Hangul_switch                 0xff7e  /* Alias for mode_switch */
1647+
1648+/* Hangul Consonant Characters */
1649+#define XK_Hangul_Kiyeog                 0x0ea1
1650+#define XK_Hangul_SsangKiyeog            0x0ea2
1651+#define XK_Hangul_KiyeogSios             0x0ea3
1652+#define XK_Hangul_Nieun                  0x0ea4
1653+#define XK_Hangul_NieunJieuj             0x0ea5
1654+#define XK_Hangul_NieunHieuh             0x0ea6
1655+#define XK_Hangul_Dikeud                 0x0ea7
1656+#define XK_Hangul_SsangDikeud            0x0ea8
1657+#define XK_Hangul_Rieul                  0x0ea9
1658+#define XK_Hangul_RieulKiyeog            0x0eaa
1659+#define XK_Hangul_RieulMieum             0x0eab
1660+#define XK_Hangul_RieulPieub             0x0eac
1661+#define XK_Hangul_RieulSios              0x0ead
1662+#define XK_Hangul_RieulTieut             0x0eae
1663+#define XK_Hangul_RieulPhieuf            0x0eaf
1664+#define XK_Hangul_RieulHieuh             0x0eb0
1665+#define XK_Hangul_Mieum                  0x0eb1
1666+#define XK_Hangul_Pieub                  0x0eb2
1667+#define XK_Hangul_SsangPieub             0x0eb3
1668+#define XK_Hangul_PieubSios              0x0eb4
1669+#define XK_Hangul_Sios                   0x0eb5
1670+#define XK_Hangul_SsangSios              0x0eb6
1671+#define XK_Hangul_Ieung                  0x0eb7
1672+#define XK_Hangul_Jieuj                  0x0eb8
1673+#define XK_Hangul_SsangJieuj             0x0eb9
1674+#define XK_Hangul_Cieuc                  0x0eba
1675+#define XK_Hangul_Khieuq                 0x0ebb
1676+#define XK_Hangul_Tieut                  0x0ebc
1677+#define XK_Hangul_Phieuf                 0x0ebd
1678+#define XK_Hangul_Hieuh                  0x0ebe
1679+
1680+/* Hangul Vowel Characters */
1681+#define XK_Hangul_A                      0x0ebf
1682+#define XK_Hangul_AE                     0x0ec0
1683+#define XK_Hangul_YA                     0x0ec1
1684+#define XK_Hangul_YAE                    0x0ec2
1685+#define XK_Hangul_EO                     0x0ec3
1686+#define XK_Hangul_E                      0x0ec4
1687+#define XK_Hangul_YEO                    0x0ec5
1688+#define XK_Hangul_YE                     0x0ec6
1689+#define XK_Hangul_O                      0x0ec7
1690+#define XK_Hangul_WA                     0x0ec8
1691+#define XK_Hangul_WAE                    0x0ec9
1692+#define XK_Hangul_OE                     0x0eca
1693+#define XK_Hangul_YO                     0x0ecb
1694+#define XK_Hangul_U                      0x0ecc
1695+#define XK_Hangul_WEO                    0x0ecd
1696+#define XK_Hangul_WE                     0x0ece
1697+#define XK_Hangul_WI                     0x0ecf
1698+#define XK_Hangul_YU                     0x0ed0
1699+#define XK_Hangul_EU                     0x0ed1
1700+#define XK_Hangul_YI                     0x0ed2
1701+#define XK_Hangul_I                      0x0ed3
1702+
1703+/* Hangul syllable-final (JongSeong) Characters */
1704+#define XK_Hangul_J_Kiyeog               0x0ed4
1705+#define XK_Hangul_J_SsangKiyeog          0x0ed5
1706+#define XK_Hangul_J_KiyeogSios           0x0ed6
1707+#define XK_Hangul_J_Nieun                0x0ed7
1708+#define XK_Hangul_J_NieunJieuj           0x0ed8
1709+#define XK_Hangul_J_NieunHieuh           0x0ed9
1710+#define XK_Hangul_J_Dikeud               0x0eda
1711+#define XK_Hangul_J_Rieul                0x0edb
1712+#define XK_Hangul_J_RieulKiyeog          0x0edc
1713+#define XK_Hangul_J_RieulMieum           0x0edd
1714+#define XK_Hangul_J_RieulPieub           0x0ede
1715+#define XK_Hangul_J_RieulSios            0x0edf
1716+#define XK_Hangul_J_RieulTieut           0x0ee0
1717+#define XK_Hangul_J_RieulPhieuf          0x0ee1
1718+#define XK_Hangul_J_RieulHieuh           0x0ee2
1719+#define XK_Hangul_J_Mieum                0x0ee3
1720+#define XK_Hangul_J_Pieub                0x0ee4
1721+#define XK_Hangul_J_PieubSios            0x0ee5
1722+#define XK_Hangul_J_Sios                 0x0ee6
1723+#define XK_Hangul_J_SsangSios            0x0ee7
1724+#define XK_Hangul_J_Ieung                0x0ee8
1725+#define XK_Hangul_J_Jieuj                0x0ee9
1726+#define XK_Hangul_J_Cieuc                0x0eea
1727+#define XK_Hangul_J_Khieuq               0x0eeb
1728+#define XK_Hangul_J_Tieut                0x0eec
1729+#define XK_Hangul_J_Phieuf               0x0eed
1730+#define XK_Hangul_J_Hieuh                0x0eee
1731+
1732+/* Ancient Hangul Consonant Characters */
1733+#define XK_Hangul_RieulYeorinHieuh       0x0eef
1734+#define XK_Hangul_SunkyeongeumMieum      0x0ef0
1735+#define XK_Hangul_SunkyeongeumPieub      0x0ef1
1736+#define XK_Hangul_PanSios                0x0ef2
1737+#define XK_Hangul_KkogjiDalrinIeung      0x0ef3
1738+#define XK_Hangul_SunkyeongeumPhieuf     0x0ef4
1739+#define XK_Hangul_YeorinHieuh            0x0ef5
1740+
1741+/* Ancient Hangul Vowel Characters */
1742+#define XK_Hangul_AraeA                  0x0ef6
1743+#define XK_Hangul_AraeAE                 0x0ef7
1744+
1745+/* Ancient Hangul syllable-final (JongSeong) Characters */
1746+#define XK_Hangul_J_PanSios              0x0ef8
1747+#define XK_Hangul_J_KkogjiDalrinIeung    0x0ef9
1748+#define XK_Hangul_J_YeorinHieuh          0x0efa
1749+
1750+/* Korean currency symbol */
1751+#define XK_Korean_Won                    0x0eff  /*(U+20A9 WON SIGN)*/
1752+
1753+#endif /* XK_KOREAN */
1754+
1755+/*
1756+ * Armenian
1757+ */
1758+
1759+#ifdef XK_ARMENIAN
1760+#define XK_Armenian_ligature_ew       0x1000587  /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */
1761+#define XK_Armenian_full_stop         0x1000589  /* U+0589 ARMENIAN FULL STOP */
1762+#define XK_Armenian_verjaket          0x1000589  /* U+0589 ARMENIAN FULL STOP */
1763+#define XK_Armenian_separation_mark   0x100055d  /* U+055D ARMENIAN COMMA */
1764+#define XK_Armenian_but               0x100055d  /* U+055D ARMENIAN COMMA */
1765+#define XK_Armenian_hyphen            0x100058a  /* U+058A ARMENIAN HYPHEN */
1766+#define XK_Armenian_yentamna          0x100058a  /* U+058A ARMENIAN HYPHEN */
1767+#define XK_Armenian_exclam            0x100055c  /* U+055C ARMENIAN EXCLAMATION MARK */
1768+#define XK_Armenian_amanak            0x100055c  /* U+055C ARMENIAN EXCLAMATION MARK */
1769+#define XK_Armenian_accent            0x100055b  /* U+055B ARMENIAN EMPHASIS MARK */
1770+#define XK_Armenian_shesht            0x100055b  /* U+055B ARMENIAN EMPHASIS MARK */
1771+#define XK_Armenian_question          0x100055e  /* U+055E ARMENIAN QUESTION MARK */
1772+#define XK_Armenian_paruyk            0x100055e  /* U+055E ARMENIAN QUESTION MARK */
1773+#define XK_Armenian_AYB               0x1000531  /* U+0531 ARMENIAN CAPITAL LETTER AYB */
1774+#define XK_Armenian_ayb               0x1000561  /* U+0561 ARMENIAN SMALL LETTER AYB */
1775+#define XK_Armenian_BEN               0x1000532  /* U+0532 ARMENIAN CAPITAL LETTER BEN */
1776+#define XK_Armenian_ben               0x1000562  /* U+0562 ARMENIAN SMALL LETTER BEN */
1777+#define XK_Armenian_GIM               0x1000533  /* U+0533 ARMENIAN CAPITAL LETTER GIM */
1778+#define XK_Armenian_gim               0x1000563  /* U+0563 ARMENIAN SMALL LETTER GIM */
1779+#define XK_Armenian_DA                0x1000534  /* U+0534 ARMENIAN CAPITAL LETTER DA */
1780+#define XK_Armenian_da                0x1000564  /* U+0564 ARMENIAN SMALL LETTER DA */
1781+#define XK_Armenian_YECH              0x1000535  /* U+0535 ARMENIAN CAPITAL LETTER ECH */
1782+#define XK_Armenian_yech              0x1000565  /* U+0565 ARMENIAN SMALL LETTER ECH */
1783+#define XK_Armenian_ZA                0x1000536  /* U+0536 ARMENIAN CAPITAL LETTER ZA */
1784+#define XK_Armenian_za                0x1000566  /* U+0566 ARMENIAN SMALL LETTER ZA */
1785+#define XK_Armenian_E                 0x1000537  /* U+0537 ARMENIAN CAPITAL LETTER EH */
1786+#define XK_Armenian_e                 0x1000567  /* U+0567 ARMENIAN SMALL LETTER EH */
1787+#define XK_Armenian_AT                0x1000538  /* U+0538 ARMENIAN CAPITAL LETTER ET */
1788+#define XK_Armenian_at                0x1000568  /* U+0568 ARMENIAN SMALL LETTER ET */
1789+#define XK_Armenian_TO                0x1000539  /* U+0539 ARMENIAN CAPITAL LETTER TO */
1790+#define XK_Armenian_to                0x1000569  /* U+0569 ARMENIAN SMALL LETTER TO */
1791+#define XK_Armenian_ZHE               0x100053a  /* U+053A ARMENIAN CAPITAL LETTER ZHE */
1792+#define XK_Armenian_zhe               0x100056a  /* U+056A ARMENIAN SMALL LETTER ZHE */
1793+#define XK_Armenian_INI               0x100053b  /* U+053B ARMENIAN CAPITAL LETTER INI */
1794+#define XK_Armenian_ini               0x100056b  /* U+056B ARMENIAN SMALL LETTER INI */
1795+#define XK_Armenian_LYUN              0x100053c  /* U+053C ARMENIAN CAPITAL LETTER LIWN */
1796+#define XK_Armenian_lyun              0x100056c  /* U+056C ARMENIAN SMALL LETTER LIWN */
1797+#define XK_Armenian_KHE               0x100053d  /* U+053D ARMENIAN CAPITAL LETTER XEH */
1798+#define XK_Armenian_khe               0x100056d  /* U+056D ARMENIAN SMALL LETTER XEH */
1799+#define XK_Armenian_TSA               0x100053e  /* U+053E ARMENIAN CAPITAL LETTER CA */
1800+#define XK_Armenian_tsa               0x100056e  /* U+056E ARMENIAN SMALL LETTER CA */
1801+#define XK_Armenian_KEN               0x100053f  /* U+053F ARMENIAN CAPITAL LETTER KEN */
1802+#define XK_Armenian_ken               0x100056f  /* U+056F ARMENIAN SMALL LETTER KEN */
1803+#define XK_Armenian_HO                0x1000540  /* U+0540 ARMENIAN CAPITAL LETTER HO */
1804+#define XK_Armenian_ho                0x1000570  /* U+0570 ARMENIAN SMALL LETTER HO */
1805+#define XK_Armenian_DZA               0x1000541  /* U+0541 ARMENIAN CAPITAL LETTER JA */
1806+#define XK_Armenian_dza               0x1000571  /* U+0571 ARMENIAN SMALL LETTER JA */
1807+#define XK_Armenian_GHAT              0x1000542  /* U+0542 ARMENIAN CAPITAL LETTER GHAD */
1808+#define XK_Armenian_ghat              0x1000572  /* U+0572 ARMENIAN SMALL LETTER GHAD */
1809+#define XK_Armenian_TCHE              0x1000543  /* U+0543 ARMENIAN CAPITAL LETTER CHEH */
1810+#define XK_Armenian_tche              0x1000573  /* U+0573 ARMENIAN SMALL LETTER CHEH */
1811+#define XK_Armenian_MEN               0x1000544  /* U+0544 ARMENIAN CAPITAL LETTER MEN */
1812+#define XK_Armenian_men               0x1000574  /* U+0574 ARMENIAN SMALL LETTER MEN */
1813+#define XK_Armenian_HI                0x1000545  /* U+0545 ARMENIAN CAPITAL LETTER YI */
1814+#define XK_Armenian_hi                0x1000575  /* U+0575 ARMENIAN SMALL LETTER YI */
1815+#define XK_Armenian_NU                0x1000546  /* U+0546 ARMENIAN CAPITAL LETTER NOW */
1816+#define XK_Armenian_nu                0x1000576  /* U+0576 ARMENIAN SMALL LETTER NOW */
1817+#define XK_Armenian_SHA               0x1000547  /* U+0547 ARMENIAN CAPITAL LETTER SHA */
1818+#define XK_Armenian_sha               0x1000577  /* U+0577 ARMENIAN SMALL LETTER SHA */
1819+#define XK_Armenian_VO                0x1000548  /* U+0548 ARMENIAN CAPITAL LETTER VO */
1820+#define XK_Armenian_vo                0x1000578  /* U+0578 ARMENIAN SMALL LETTER VO */
1821+#define XK_Armenian_CHA               0x1000549  /* U+0549 ARMENIAN CAPITAL LETTER CHA */
1822+#define XK_Armenian_cha               0x1000579  /* U+0579 ARMENIAN SMALL LETTER CHA */
1823+#define XK_Armenian_PE                0x100054a  /* U+054A ARMENIAN CAPITAL LETTER PEH */
1824+#define XK_Armenian_pe                0x100057a  /* U+057A ARMENIAN SMALL LETTER PEH */
1825+#define XK_Armenian_JE                0x100054b  /* U+054B ARMENIAN CAPITAL LETTER JHEH */
1826+#define XK_Armenian_je                0x100057b  /* U+057B ARMENIAN SMALL LETTER JHEH */
1827+#define XK_Armenian_RA                0x100054c  /* U+054C ARMENIAN CAPITAL LETTER RA */
1828+#define XK_Armenian_ra                0x100057c  /* U+057C ARMENIAN SMALL LETTER RA */
1829+#define XK_Armenian_SE                0x100054d  /* U+054D ARMENIAN CAPITAL LETTER SEH */
1830+#define XK_Armenian_se                0x100057d  /* U+057D ARMENIAN SMALL LETTER SEH */
1831+#define XK_Armenian_VEV               0x100054e  /* U+054E ARMENIAN CAPITAL LETTER VEW */
1832+#define XK_Armenian_vev               0x100057e  /* U+057E ARMENIAN SMALL LETTER VEW */
1833+#define XK_Armenian_TYUN              0x100054f  /* U+054F ARMENIAN CAPITAL LETTER TIWN */
1834+#define XK_Armenian_tyun              0x100057f  /* U+057F ARMENIAN SMALL LETTER TIWN */
1835+#define XK_Armenian_RE                0x1000550  /* U+0550 ARMENIAN CAPITAL LETTER REH */
1836+#define XK_Armenian_re                0x1000580  /* U+0580 ARMENIAN SMALL LETTER REH */
1837+#define XK_Armenian_TSO               0x1000551  /* U+0551 ARMENIAN CAPITAL LETTER CO */
1838+#define XK_Armenian_tso               0x1000581  /* U+0581 ARMENIAN SMALL LETTER CO */
1839+#define XK_Armenian_VYUN              0x1000552  /* U+0552 ARMENIAN CAPITAL LETTER YIWN */
1840+#define XK_Armenian_vyun              0x1000582  /* U+0582 ARMENIAN SMALL LETTER YIWN */
1841+#define XK_Armenian_PYUR              0x1000553  /* U+0553 ARMENIAN CAPITAL LETTER PIWR */
1842+#define XK_Armenian_pyur              0x1000583  /* U+0583 ARMENIAN SMALL LETTER PIWR */
1843+#define XK_Armenian_KE                0x1000554  /* U+0554 ARMENIAN CAPITAL LETTER KEH */
1844+#define XK_Armenian_ke                0x1000584  /* U+0584 ARMENIAN SMALL LETTER KEH */
1845+#define XK_Armenian_O                 0x1000555  /* U+0555 ARMENIAN CAPITAL LETTER OH */
1846+#define XK_Armenian_o                 0x1000585  /* U+0585 ARMENIAN SMALL LETTER OH */
1847+#define XK_Armenian_FE                0x1000556  /* U+0556 ARMENIAN CAPITAL LETTER FEH */
1848+#define XK_Armenian_fe                0x1000586  /* U+0586 ARMENIAN SMALL LETTER FEH */
1849+#define XK_Armenian_apostrophe        0x100055a  /* U+055A ARMENIAN APOSTROPHE */
1850+#endif /* XK_ARMENIAN */
1851+
1852+/*
1853+ * Georgian
1854+ */
1855+
1856+#ifdef XK_GEORGIAN
1857+#define XK_Georgian_an                0x10010d0  /* U+10D0 GEORGIAN LETTER AN */
1858+#define XK_Georgian_ban               0x10010d1  /* U+10D1 GEORGIAN LETTER BAN */
1859+#define XK_Georgian_gan               0x10010d2  /* U+10D2 GEORGIAN LETTER GAN */
1860+#define XK_Georgian_don               0x10010d3  /* U+10D3 GEORGIAN LETTER DON */
1861+#define XK_Georgian_en                0x10010d4  /* U+10D4 GEORGIAN LETTER EN */
1862+#define XK_Georgian_vin               0x10010d5  /* U+10D5 GEORGIAN LETTER VIN */
1863+#define XK_Georgian_zen               0x10010d6  /* U+10D6 GEORGIAN LETTER ZEN */
1864+#define XK_Georgian_tan               0x10010d7  /* U+10D7 GEORGIAN LETTER TAN */
1865+#define XK_Georgian_in                0x10010d8  /* U+10D8 GEORGIAN LETTER IN */
1866+#define XK_Georgian_kan               0x10010d9  /* U+10D9 GEORGIAN LETTER KAN */
1867+#define XK_Georgian_las               0x10010da  /* U+10DA GEORGIAN LETTER LAS */
1868+#define XK_Georgian_man               0x10010db  /* U+10DB GEORGIAN LETTER MAN */
1869+#define XK_Georgian_nar               0x10010dc  /* U+10DC GEORGIAN LETTER NAR */
1870+#define XK_Georgian_on                0x10010dd  /* U+10DD GEORGIAN LETTER ON */
1871+#define XK_Georgian_par               0x10010de  /* U+10DE GEORGIAN LETTER PAR */
1872+#define XK_Georgian_zhar              0x10010df  /* U+10DF GEORGIAN LETTER ZHAR */
1873+#define XK_Georgian_rae               0x10010e0  /* U+10E0 GEORGIAN LETTER RAE */
1874+#define XK_Georgian_san               0x10010e1  /* U+10E1 GEORGIAN LETTER SAN */
1875+#define XK_Georgian_tar               0x10010e2  /* U+10E2 GEORGIAN LETTER TAR */
1876+#define XK_Georgian_un                0x10010e3  /* U+10E3 GEORGIAN LETTER UN */
1877+#define XK_Georgian_phar              0x10010e4  /* U+10E4 GEORGIAN LETTER PHAR */
1878+#define XK_Georgian_khar              0x10010e5  /* U+10E5 GEORGIAN LETTER KHAR */
1879+#define XK_Georgian_ghan              0x10010e6  /* U+10E6 GEORGIAN LETTER GHAN */
1880+#define XK_Georgian_qar               0x10010e7  /* U+10E7 GEORGIAN LETTER QAR */
1881+#define XK_Georgian_shin              0x10010e8  /* U+10E8 GEORGIAN LETTER SHIN */
1882+#define XK_Georgian_chin              0x10010e9  /* U+10E9 GEORGIAN LETTER CHIN */
1883+#define XK_Georgian_can               0x10010ea  /* U+10EA GEORGIAN LETTER CAN */
1884+#define XK_Georgian_jil               0x10010eb  /* U+10EB GEORGIAN LETTER JIL */
1885+#define XK_Georgian_cil               0x10010ec  /* U+10EC GEORGIAN LETTER CIL */
1886+#define XK_Georgian_char              0x10010ed  /* U+10ED GEORGIAN LETTER CHAR */
1887+#define XK_Georgian_xan               0x10010ee  /* U+10EE GEORGIAN LETTER XAN */
1888+#define XK_Georgian_jhan              0x10010ef  /* U+10EF GEORGIAN LETTER JHAN */
1889+#define XK_Georgian_hae               0x10010f0  /* U+10F0 GEORGIAN LETTER HAE */
1890+#define XK_Georgian_he                0x10010f1  /* U+10F1 GEORGIAN LETTER HE */
1891+#define XK_Georgian_hie               0x10010f2  /* U+10F2 GEORGIAN LETTER HIE */
1892+#define XK_Georgian_we                0x10010f3  /* U+10F3 GEORGIAN LETTER WE */
1893+#define XK_Georgian_har               0x10010f4  /* U+10F4 GEORGIAN LETTER HAR */
1894+#define XK_Georgian_hoe               0x10010f5  /* U+10F5 GEORGIAN LETTER HOE */
1895+#define XK_Georgian_fi                0x10010f6  /* U+10F6 GEORGIAN LETTER FI */
1896+#endif /* XK_GEORGIAN */
1897+
1898+/*
1899+ * Azeri (and other Turkic or Caucasian languages)
1900+ */
1901+
1902+#ifdef XK_CAUCASUS
1903+/* latin */
1904+#define XK_Xabovedot                  0x1001e8a  /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */
1905+#define XK_Ibreve                     0x100012c  /* U+012C LATIN CAPITAL LETTER I WITH BREVE */
1906+#define XK_Zstroke                    0x10001b5  /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */
1907+#define XK_Gcaron                     0x10001e6  /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */
1908+#define XK_Ocaron                     0x10001d1  /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */
1909+#define XK_Obarred                    0x100019f  /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
1910+#define XK_xabovedot                  0x1001e8b  /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */
1911+#define XK_ibreve                     0x100012d  /* U+012D LATIN SMALL LETTER I WITH BREVE */
1912+#define XK_zstroke                    0x10001b6  /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */
1913+#define XK_gcaron                     0x10001e7  /* U+01E7 LATIN SMALL LETTER G WITH CARON */
1914+#define XK_ocaron                     0x10001d2  /* U+01D2 LATIN SMALL LETTER O WITH CARON */
1915+#define XK_obarred                    0x1000275  /* U+0275 LATIN SMALL LETTER BARRED O */
1916+#define XK_SCHWA                      0x100018f  /* U+018F LATIN CAPITAL LETTER SCHWA */
1917+#define XK_schwa                      0x1000259  /* U+0259 LATIN SMALL LETTER SCHWA */
1918+/* those are not really Caucasus */
1919+/* For Inupiak */
1920+#define XK_Lbelowdot                  0x1001e36  /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */
1921+#define XK_lbelowdot                  0x1001e37  /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */
1922+#endif /* XK_CAUCASUS */
1923+
1924+/*
1925+ * Vietnamese
1926+ */
1927+ 
1928+#ifdef XK_VIETNAMESE
1929+#define XK_Abelowdot                  0x1001ea0  /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */
1930+#define XK_abelowdot                  0x1001ea1  /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */
1931+#define XK_Ahook                      0x1001ea2  /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */
1932+#define XK_ahook                      0x1001ea3  /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */
1933+#define XK_Acircumflexacute           0x1001ea4  /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
1934+#define XK_acircumflexacute           0x1001ea5  /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
1935+#define XK_Acircumflexgrave           0x1001ea6  /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
1936+#define XK_acircumflexgrave           0x1001ea7  /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
1937+#define XK_Acircumflexhook            0x1001ea8  /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
1938+#define XK_acircumflexhook            0x1001ea9  /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
1939+#define XK_Acircumflextilde           0x1001eaa  /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
1940+#define XK_acircumflextilde           0x1001eab  /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
1941+#define XK_Acircumflexbelowdot        0x1001eac  /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
1942+#define XK_acircumflexbelowdot        0x1001ead  /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
1943+#define XK_Abreveacute                0x1001eae  /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
1944+#define XK_abreveacute                0x1001eaf  /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */
1945+#define XK_Abrevegrave                0x1001eb0  /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
1946+#define XK_abrevegrave                0x1001eb1  /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */
1947+#define XK_Abrevehook                 0x1001eb2  /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
1948+#define XK_abrevehook                 0x1001eb3  /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
1949+#define XK_Abrevetilde                0x1001eb4  /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
1950+#define XK_abrevetilde                0x1001eb5  /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */
1951+#define XK_Abrevebelowdot             0x1001eb6  /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
1952+#define XK_abrevebelowdot             0x1001eb7  /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
1953+#define XK_Ebelowdot                  0x1001eb8  /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */
1954+#define XK_ebelowdot                  0x1001eb9  /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */
1955+#define XK_Ehook                      0x1001eba  /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */
1956+#define XK_ehook                      0x1001ebb  /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */
1957+#define XK_Etilde                     0x1001ebc  /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */
1958+#define XK_etilde                     0x1001ebd  /* U+1EBD LATIN SMALL LETTER E WITH TILDE */
1959+#define XK_Ecircumflexacute           0x1001ebe  /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
1960+#define XK_ecircumflexacute           0x1001ebf  /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
1961+#define XK_Ecircumflexgrave           0x1001ec0  /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
1962+#define XK_ecircumflexgrave           0x1001ec1  /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
1963+#define XK_Ecircumflexhook            0x1001ec2  /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
1964+#define XK_ecircumflexhook            0x1001ec3  /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
1965+#define XK_Ecircumflextilde           0x1001ec4  /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
1966+#define XK_ecircumflextilde           0x1001ec5  /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
1967+#define XK_Ecircumflexbelowdot        0x1001ec6  /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
1968+#define XK_ecircumflexbelowdot        0x1001ec7  /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
1969+#define XK_Ihook                      0x1001ec8  /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */
1970+#define XK_ihook                      0x1001ec9  /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */
1971+#define XK_Ibelowdot                  0x1001eca  /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */
1972+#define XK_ibelowdot                  0x1001ecb  /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */
1973+#define XK_Obelowdot                  0x1001ecc  /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */
1974+#define XK_obelowdot                  0x1001ecd  /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */
1975+#define XK_Ohook                      0x1001ece  /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */
1976+#define XK_ohook                      0x1001ecf  /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */
1977+#define XK_Ocircumflexacute           0x1001ed0  /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
1978+#define XK_ocircumflexacute           0x1001ed1  /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
1979+#define XK_Ocircumflexgrave           0x1001ed2  /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
1980+#define XK_ocircumflexgrave           0x1001ed3  /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
1981+#define XK_Ocircumflexhook            0x1001ed4  /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
1982+#define XK_ocircumflexhook            0x1001ed5  /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
1983+#define XK_Ocircumflextilde           0x1001ed6  /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
1984+#define XK_ocircumflextilde           0x1001ed7  /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
1985+#define XK_Ocircumflexbelowdot        0x1001ed8  /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
1986+#define XK_ocircumflexbelowdot        0x1001ed9  /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
1987+#define XK_Ohornacute                 0x1001eda  /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
1988+#define XK_ohornacute                 0x1001edb  /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */
1989+#define XK_Ohorngrave                 0x1001edc  /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
1990+#define XK_ohorngrave                 0x1001edd  /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */
1991+#define XK_Ohornhook                  0x1001ede  /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
1992+#define XK_ohornhook                  0x1001edf  /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
1993+#define XK_Ohorntilde                 0x1001ee0  /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */
1994+#define XK_ohorntilde                 0x1001ee1  /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */
1995+#define XK_Ohornbelowdot              0x1001ee2  /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
1996+#define XK_ohornbelowdot              0x1001ee3  /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
1997+#define XK_Ubelowdot                  0x1001ee4  /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */
1998+#define XK_ubelowdot                  0x1001ee5  /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */
1999+#define XK_Uhook                      0x1001ee6  /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */
2000+#define XK_uhook                      0x1001ee7  /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */
2001+#define XK_Uhornacute                 0x1001ee8  /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
2002+#define XK_uhornacute                 0x1001ee9  /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */
2003+#define XK_Uhorngrave                 0x1001eea  /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
2004+#define XK_uhorngrave                 0x1001eeb  /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */
2005+#define XK_Uhornhook                  0x1001eec  /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
2006+#define XK_uhornhook                  0x1001eed  /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
2007+#define XK_Uhorntilde                 0x1001eee  /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */
2008+#define XK_uhorntilde                 0x1001eef  /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */
2009+#define XK_Uhornbelowdot              0x1001ef0  /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
2010+#define XK_uhornbelowdot              0x1001ef1  /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
2011+#define XK_Ybelowdot                  0x1001ef4  /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */
2012+#define XK_ybelowdot                  0x1001ef5  /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */
2013+#define XK_Yhook                      0x1001ef6  /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
2014+#define XK_yhook                      0x1001ef7  /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */
2015+#define XK_Ytilde                     0x1001ef8  /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */
2016+#define XK_ytilde                     0x1001ef9  /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */
2017+#define XK_Ohorn                      0x10001a0  /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */
2018+#define XK_ohorn                      0x10001a1  /* U+01A1 LATIN SMALL LETTER O WITH HORN */
2019+#define XK_Uhorn                      0x10001af  /* U+01AF LATIN CAPITAL LETTER U WITH HORN */
2020+#define XK_uhorn                      0x10001b0  /* U+01B0 LATIN SMALL LETTER U WITH HORN */
2021+
2022+#endif /* XK_VIETNAMESE */
2023+
2024+#ifdef XK_CURRENCY
2025+#define XK_EcuSign                    0x10020a0  /* U+20A0 EURO-CURRENCY SIGN */
2026+#define XK_ColonSign                  0x10020a1  /* U+20A1 COLON SIGN */
2027+#define XK_CruzeiroSign               0x10020a2  /* U+20A2 CRUZEIRO SIGN */
2028+#define XK_FFrancSign                 0x10020a3  /* U+20A3 FRENCH FRANC SIGN */
2029+#define XK_LiraSign                   0x10020a4  /* U+20A4 LIRA SIGN */
2030+#define XK_MillSign                   0x10020a5  /* U+20A5 MILL SIGN */
2031+#define XK_NairaSign                  0x10020a6  /* U+20A6 NAIRA SIGN */
2032+#define XK_PesetaSign                 0x10020a7  /* U+20A7 PESETA SIGN */
2033+#define XK_RupeeSign                  0x10020a8  /* U+20A8 RUPEE SIGN */
2034+#define XK_WonSign                    0x10020a9  /* U+20A9 WON SIGN */
2035+#define XK_NewSheqelSign              0x10020aa  /* U+20AA NEW SHEQEL SIGN */
2036+#define XK_DongSign                   0x10020ab  /* U+20AB DONG SIGN */
2037+#define XK_EuroSign                      0x20ac  /* U+20AC EURO SIGN */
2038+#endif /* XK_CURRENCY */
+1, -1
1@@ -12,7 +12,7 @@ all: dest bin/uxnasm bin/uxncli bin/uxn11
2 dest:
3 	@ mkdir -p bin
4 rom:
5-	@ ./bin/uxnasm etc/controller.tal bin/res.rom
6+	@ ./bin/uxnasm etc/screen.bounds.tal bin/res.rom
7 run: all bin/uxnasm bin/uxncli bin/uxn11 rom
8 	@ ./bin/uxn11 bin/res.rom
9 test: bin/uxnasm bin/uxncli bin/uxn11