exp/shiny: support unicode-but-not-ASCII keysyms

Change-Id: I48a6e35693152848ad9cf01b1ef57de09328117c
Reviewed-on: https://go-review.googlesource.com/c/exp/+/171940
Run-TryBot: Benny Siegert <bsiegert@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/shiny/driver/internal/x11key/gen.go b/shiny/driver/internal/x11key/gen.go
new file mode 100644
index 0000000..218586b
--- /dev/null
+++ b/shiny/driver/internal/x11key/gen.go
@@ -0,0 +1,74 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// This program generates the table keysymCodePoints from /usr/include/X11/keysymdef.h
+package main
+
+import (
+	"bufio"
+	"bytes"
+	"fmt"
+	"go/format"
+	"io/ioutil"
+	"log"
+	"os"
+	"regexp"
+	"strings"
+)
+
+func main() {
+	fh, err := os.Open("/usr/include/X11/keysymdef.h")
+	if err != nil {
+		log.Fatalf("opening keysymdef.h: %v", err)
+	}
+
+	defer fh.Close()
+
+	seen := make(map[string]struct{})
+
+	buf := &bytes.Buffer{}
+
+	fmt.Fprintf(buf, `// generated by go generate; DO NOT EDIT.
+
+package x11key
+
+// keysymCodePoints maps xproto.Keysym values to their corresponding unicode code point.
+var keysymCodePoints = map[rune]rune{
+`)
+
+	re := regexp.MustCompile(`^#define (XK_[^ ]*) *0x([[:xdigit:]]+) .*U\+([[:xdigit:]]+) (.+)(?: |\))\*/$`)
+
+	s := bufio.NewScanner(fh)
+	for s.Scan() {
+		m := re.FindStringSubmatch(strings.TrimSpace(s.Text()))
+		if m == nil {
+			continue
+		}
+
+		if _, isSeen := seen[m[2]]; isSeen {
+			continue
+		}
+		seen[m[2]] = struct{}{}
+
+		fmt.Fprintf(buf, "0x%s: 0x%s, // %s:\t%s\n", m[2], m[3], m[1], m[4])
+
+	}
+	if err := s.Err(); err != nil {
+		log.Fatalf("reading keysymdef.h: %v", err)
+	}
+
+	fmt.Fprintf(buf, "}\n")
+
+	fmted, err := format.Source(buf.Bytes())
+	if err != nil {
+		log.Fatalf("formatting output: %v", err)
+	}
+
+	err = ioutil.WriteFile("table.go", fmted, 0644)
+	if err != nil {
+		log.Fatalf("writing table.go: %v", err)
+	}
+}
diff --git a/shiny/driver/internal/x11key/table.go b/shiny/driver/internal/x11key/table.go
new file mode 100644
index 0000000..63e8344
--- /dev/null
+++ b/shiny/driver/internal/x11key/table.go
@@ -0,0 +1,1577 @@
+// generated by go generate; DO NOT EDIT.
+
+package x11key
+
+// keysymCodePoints maps xproto.Keysym values to their corresponding unicode code point.
+var keysymCodePoints = map[rune]rune{
+	0x0020:    0x0020, // XK_space:	SPACE
+	0x0021:    0x0021, // XK_exclam:	EXCLAMATION MARK
+	0x0022:    0x0022, // XK_quotedbl:	QUOTATION MARK
+	0x0023:    0x0023, // XK_numbersign:	NUMBER SIGN
+	0x0024:    0x0024, // XK_dollar:	DOLLAR SIGN
+	0x0025:    0x0025, // XK_percent:	PERCENT SIGN
+	0x0026:    0x0026, // XK_ampersand:	AMPERSAND
+	0x0027:    0x0027, // XK_apostrophe:	APOSTROPHE
+	0x0028:    0x0028, // XK_parenleft:	LEFT PARENTHESIS
+	0x0029:    0x0029, // XK_parenright:	RIGHT PARENTHESIS
+	0x002a:    0x002A, // XK_asterisk:	ASTERISK
+	0x002b:    0x002B, // XK_plus:	PLUS SIGN
+	0x002c:    0x002C, // XK_comma:	COMMA
+	0x002d:    0x002D, // XK_minus:	HYPHEN-MINUS
+	0x002e:    0x002E, // XK_period:	FULL STOP
+	0x002f:    0x002F, // XK_slash:	SOLIDUS
+	0x0030:    0x0030, // XK_0:	DIGIT ZERO
+	0x0031:    0x0031, // XK_1:	DIGIT ONE
+	0x0032:    0x0032, // XK_2:	DIGIT TWO
+	0x0033:    0x0033, // XK_3:	DIGIT THREE
+	0x0034:    0x0034, // XK_4:	DIGIT FOUR
+	0x0035:    0x0035, // XK_5:	DIGIT FIVE
+	0x0036:    0x0036, // XK_6:	DIGIT SIX
+	0x0037:    0x0037, // XK_7:	DIGIT SEVEN
+	0x0038:    0x0038, // XK_8:	DIGIT EIGHT
+	0x0039:    0x0039, // XK_9:	DIGIT NINE
+	0x003a:    0x003A, // XK_colon:	COLON
+	0x003b:    0x003B, // XK_semicolon:	SEMICOLON
+	0x003c:    0x003C, // XK_less:	LESS-THAN SIGN
+	0x003d:    0x003D, // XK_equal:	EQUALS SIGN
+	0x003e:    0x003E, // XK_greater:	GREATER-THAN SIGN
+	0x003f:    0x003F, // XK_question:	QUESTION MARK
+	0x0040:    0x0040, // XK_at:	COMMERCIAL AT
+	0x0041:    0x0041, // XK_A:	LATIN CAPITAL LETTER A
+	0x0042:    0x0042, // XK_B:	LATIN CAPITAL LETTER B
+	0x0043:    0x0043, // XK_C:	LATIN CAPITAL LETTER C
+	0x0044:    0x0044, // XK_D:	LATIN CAPITAL LETTER D
+	0x0045:    0x0045, // XK_E:	LATIN CAPITAL LETTER E
+	0x0046:    0x0046, // XK_F:	LATIN CAPITAL LETTER F
+	0x0047:    0x0047, // XK_G:	LATIN CAPITAL LETTER G
+	0x0048:    0x0048, // XK_H:	LATIN CAPITAL LETTER H
+	0x0049:    0x0049, // XK_I:	LATIN CAPITAL LETTER I
+	0x004a:    0x004A, // XK_J:	LATIN CAPITAL LETTER J
+	0x004b:    0x004B, // XK_K:	LATIN CAPITAL LETTER K
+	0x004c:    0x004C, // XK_L:	LATIN CAPITAL LETTER L
+	0x004d:    0x004D, // XK_M:	LATIN CAPITAL LETTER M
+	0x004e:    0x004E, // XK_N:	LATIN CAPITAL LETTER N
+	0x004f:    0x004F, // XK_O:	LATIN CAPITAL LETTER O
+	0x0050:    0x0050, // XK_P:	LATIN CAPITAL LETTER P
+	0x0051:    0x0051, // XK_Q:	LATIN CAPITAL LETTER Q
+	0x0052:    0x0052, // XK_R:	LATIN CAPITAL LETTER R
+	0x0053:    0x0053, // XK_S:	LATIN CAPITAL LETTER S
+	0x0054:    0x0054, // XK_T:	LATIN CAPITAL LETTER T
+	0x0055:    0x0055, // XK_U:	LATIN CAPITAL LETTER U
+	0x0056:    0x0056, // XK_V:	LATIN CAPITAL LETTER V
+	0x0057:    0x0057, // XK_W:	LATIN CAPITAL LETTER W
+	0x0058:    0x0058, // XK_X:	LATIN CAPITAL LETTER X
+	0x0059:    0x0059, // XK_Y:	LATIN CAPITAL LETTER Y
+	0x005a:    0x005A, // XK_Z:	LATIN CAPITAL LETTER Z
+	0x005b:    0x005B, // XK_bracketleft:	LEFT SQUARE BRACKET
+	0x005c:    0x005C, // XK_backslash:	REVERSE SOLIDUS
+	0x005d:    0x005D, // XK_bracketright:	RIGHT SQUARE BRACKET
+	0x005e:    0x005E, // XK_asciicircum:	CIRCUMFLEX ACCENT
+	0x005f:    0x005F, // XK_underscore:	LOW LINE
+	0x0060:    0x0060, // XK_grave:	GRAVE ACCENT
+	0x0061:    0x0061, // XK_a:	LATIN SMALL LETTER A
+	0x0062:    0x0062, // XK_b:	LATIN SMALL LETTER B
+	0x0063:    0x0063, // XK_c:	LATIN SMALL LETTER C
+	0x0064:    0x0064, // XK_d:	LATIN SMALL LETTER D
+	0x0065:    0x0065, // XK_e:	LATIN SMALL LETTER E
+	0x0066:    0x0066, // XK_f:	LATIN SMALL LETTER F
+	0x0067:    0x0067, // XK_g:	LATIN SMALL LETTER G
+	0x0068:    0x0068, // XK_h:	LATIN SMALL LETTER H
+	0x0069:    0x0069, // XK_i:	LATIN SMALL LETTER I
+	0x006a:    0x006A, // XK_j:	LATIN SMALL LETTER J
+	0x006b:    0x006B, // XK_k:	LATIN SMALL LETTER K
+	0x006c:    0x006C, // XK_l:	LATIN SMALL LETTER L
+	0x006d:    0x006D, // XK_m:	LATIN SMALL LETTER M
+	0x006e:    0x006E, // XK_n:	LATIN SMALL LETTER N
+	0x006f:    0x006F, // XK_o:	LATIN SMALL LETTER O
+	0x0070:    0x0070, // XK_p:	LATIN SMALL LETTER P
+	0x0071:    0x0071, // XK_q:	LATIN SMALL LETTER Q
+	0x0072:    0x0072, // XK_r:	LATIN SMALL LETTER R
+	0x0073:    0x0073, // XK_s:	LATIN SMALL LETTER S
+	0x0074:    0x0074, // XK_t:	LATIN SMALL LETTER T
+	0x0075:    0x0075, // XK_u:	LATIN SMALL LETTER U
+	0x0076:    0x0076, // XK_v:	LATIN SMALL LETTER V
+	0x0077:    0x0077, // XK_w:	LATIN SMALL LETTER W
+	0x0078:    0x0078, // XK_x:	LATIN SMALL LETTER X
+	0x0079:    0x0079, // XK_y:	LATIN SMALL LETTER Y
+	0x007a:    0x007A, // XK_z:	LATIN SMALL LETTER Z
+	0x007b:    0x007B, // XK_braceleft:	LEFT CURLY BRACKET
+	0x007c:    0x007C, // XK_bar:	VERTICAL LINE
+	0x007d:    0x007D, // XK_braceright:	RIGHT CURLY BRACKET
+	0x007e:    0x007E, // XK_asciitilde:	TILDE
+	0x00a0:    0x00A0, // XK_nobreakspace:	NO-BREAK SPACE
+	0x00a1:    0x00A1, // XK_exclamdown:	INVERTED EXCLAMATION MARK
+	0x00a2:    0x00A2, // XK_cent:	CENT SIGN
+	0x00a3:    0x00A3, // XK_sterling:	POUND SIGN
+	0x00a4:    0x00A4, // XK_currency:	CURRENCY SIGN
+	0x00a5:    0x00A5, // XK_yen:	YEN SIGN
+	0x00a6:    0x00A6, // XK_brokenbar:	BROKEN BAR
+	0x00a7:    0x00A7, // XK_section:	SECTION SIGN
+	0x00a8:    0x00A8, // XK_diaeresis:	DIAERESIS
+	0x00a9:    0x00A9, // XK_copyright:	COPYRIGHT SIGN
+	0x00aa:    0x00AA, // XK_ordfeminine:	FEMININE ORDINAL INDICATOR
+	0x00ab:    0x00AB, // XK_guillemotleft:	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00ac:    0x00AC, // XK_notsign:	NOT SIGN
+	0x00ad:    0x00AD, // XK_hyphen:	SOFT HYPHEN
+	0x00ae:    0x00AE, // XK_registered:	REGISTERED SIGN
+	0x00af:    0x00AF, // XK_macron:	MACRON
+	0x00b0:    0x00B0, // XK_degree:	DEGREE SIGN
+	0x00b1:    0x00B1, // XK_plusminus:	PLUS-MINUS SIGN
+	0x00b2:    0x00B2, // XK_twosuperior:	SUPERSCRIPT TWO
+	0x00b3:    0x00B3, // XK_threesuperior:	SUPERSCRIPT THREE
+	0x00b4:    0x00B4, // XK_acute:	ACUTE ACCENT
+	0x00b5:    0x00B5, // XK_mu:	MICRO SIGN
+	0x00b6:    0x00B6, // XK_paragraph:	PILCROW SIGN
+	0x00b7:    0x00B7, // XK_periodcentered:	MIDDLE DOT
+	0x00b8:    0x00B8, // XK_cedilla:	CEDILLA
+	0x00b9:    0x00B9, // XK_onesuperior:	SUPERSCRIPT ONE
+	0x00ba:    0x00BA, // XK_masculine:	MASCULINE ORDINAL INDICATOR
+	0x00bb:    0x00BB, // XK_guillemotright:	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00bc:    0x00BC, // XK_onequarter:	VULGAR FRACTION ONE QUARTER
+	0x00bd:    0x00BD, // XK_onehalf:	VULGAR FRACTION ONE HALF
+	0x00be:    0x00BE, // XK_threequarters:	VULGAR FRACTION THREE QUARTERS
+	0x00bf:    0x00BF, // XK_questiondown:	INVERTED QUESTION MARK
+	0x00c0:    0x00C0, // XK_Agrave:	LATIN CAPITAL LETTER A WITH GRAVE
+	0x00c1:    0x00C1, // XK_Aacute:	LATIN CAPITAL LETTER A WITH ACUTE
+	0x00c2:    0x00C2, // XK_Acircumflex:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00c3:    0x00C3, // XK_Atilde:	LATIN CAPITAL LETTER A WITH TILDE
+	0x00c4:    0x00C4, // XK_Adiaeresis:	LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x00c5:    0x00C5, // XK_Aring:	LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x00c6:    0x00C6, // XK_AE:	LATIN CAPITAL LETTER AE
+	0x00c7:    0x00C7, // XK_Ccedilla:	LATIN CAPITAL LETTER C WITH CEDILLA
+	0x00c8:    0x00C8, // XK_Egrave:	LATIN CAPITAL LETTER E WITH GRAVE
+	0x00c9:    0x00C9, // XK_Eacute:	LATIN CAPITAL LETTER E WITH ACUTE
+	0x00ca:    0x00CA, // XK_Ecircumflex:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00cb:    0x00CB, // XK_Ediaeresis:	LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00cc:    0x00CC, // XK_Igrave:	LATIN CAPITAL LETTER I WITH GRAVE
+	0x00cd:    0x00CD, // XK_Iacute:	LATIN CAPITAL LETTER I WITH ACUTE
+	0x00ce:    0x00CE, // XK_Icircumflex:	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00cf:    0x00CF, // XK_Idiaeresis:	LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00d0:    0x00D0, // XK_ETH:	LATIN CAPITAL LETTER ETH
+	0x00d1:    0x00D1, // XK_Ntilde:	LATIN CAPITAL LETTER N WITH TILDE
+	0x00d2:    0x00D2, // XK_Ograve:	LATIN CAPITAL LETTER O WITH GRAVE
+	0x00d3:    0x00D3, // XK_Oacute:	LATIN CAPITAL LETTER O WITH ACUTE
+	0x00d4:    0x00D4, // XK_Ocircumflex:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00d5:    0x00D5, // XK_Otilde:	LATIN CAPITAL LETTER O WITH TILDE
+	0x00d6:    0x00D6, // XK_Odiaeresis:	LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x00d7:    0x00D7, // XK_multiply:	MULTIPLICATION SIGN
+	0x00d8:    0x00D8, // XK_Oslash:	LATIN CAPITAL LETTER O WITH STROKE
+	0x00d9:    0x00D9, // XK_Ugrave:	LATIN CAPITAL LETTER U WITH GRAVE
+	0x00da:    0x00DA, // XK_Uacute:	LATIN CAPITAL LETTER U WITH ACUTE
+	0x00db:    0x00DB, // XK_Ucircumflex:	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00dc:    0x00DC, // XK_Udiaeresis:	LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x00dd:    0x00DD, // XK_Yacute:	LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00de:    0x00DE, // XK_THORN:	LATIN CAPITAL LETTER THORN
+	0x00df:    0x00DF, // XK_ssharp:	LATIN SMALL LETTER SHARP S
+	0x00e0:    0x00E0, // XK_agrave:	LATIN SMALL LETTER A WITH GRAVE
+	0x00e1:    0x00E1, // XK_aacute:	LATIN SMALL LETTER A WITH ACUTE
+	0x00e2:    0x00E2, // XK_acircumflex:	LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x00e3:    0x00E3, // XK_atilde:	LATIN SMALL LETTER A WITH TILDE
+	0x00e4:    0x00E4, // XK_adiaeresis:	LATIN SMALL LETTER A WITH DIAERESIS
+	0x00e5:    0x00E5, // XK_aring:	LATIN SMALL LETTER A WITH RING ABOVE
+	0x00e6:    0x00E6, // XK_ae:	LATIN SMALL LETTER AE
+	0x00e7:    0x00E7, // XK_ccedilla:	LATIN SMALL LETTER C WITH CEDILLA
+	0x00e8:    0x00E8, // XK_egrave:	LATIN SMALL LETTER E WITH GRAVE
+	0x00e9:    0x00E9, // XK_eacute:	LATIN SMALL LETTER E WITH ACUTE
+	0x00ea:    0x00EA, // XK_ecircumflex:	LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x00eb:    0x00EB, // XK_ediaeresis:	LATIN SMALL LETTER E WITH DIAERESIS
+	0x00ec:    0x00EC, // XK_igrave:	LATIN SMALL LETTER I WITH GRAVE
+	0x00ed:    0x00ED, // XK_iacute:	LATIN SMALL LETTER I WITH ACUTE
+	0x00ee:    0x00EE, // XK_icircumflex:	LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x00ef:    0x00EF, // XK_idiaeresis:	LATIN SMALL LETTER I WITH DIAERESIS
+	0x00f0:    0x00F0, // XK_eth:	LATIN SMALL LETTER ETH
+	0x00f1:    0x00F1, // XK_ntilde:	LATIN SMALL LETTER N WITH TILDE
+	0x00f2:    0x00F2, // XK_ograve:	LATIN SMALL LETTER O WITH GRAVE
+	0x00f3:    0x00F3, // XK_oacute:	LATIN SMALL LETTER O WITH ACUTE
+	0x00f4:    0x00F4, // XK_ocircumflex:	LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x00f5:    0x00F5, // XK_otilde:	LATIN SMALL LETTER O WITH TILDE
+	0x00f6:    0x00F6, // XK_odiaeresis:	LATIN SMALL LETTER O WITH DIAERESIS
+	0x00f7:    0x00F7, // XK_division:	DIVISION SIGN
+	0x00f8:    0x00F8, // XK_oslash:	LATIN SMALL LETTER O WITH STROKE
+	0x00f9:    0x00F9, // XK_ugrave:	LATIN SMALL LETTER U WITH GRAVE
+	0x00fa:    0x00FA, // XK_uacute:	LATIN SMALL LETTER U WITH ACUTE
+	0x00fb:    0x00FB, // XK_ucircumflex:	LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x00fc:    0x00FC, // XK_udiaeresis:	LATIN SMALL LETTER U WITH DIAERESIS
+	0x00fd:    0x00FD, // XK_yacute:	LATIN SMALL LETTER Y WITH ACUTE
+	0x00fe:    0x00FE, // XK_thorn:	LATIN SMALL LETTER THORN
+	0x00ff:    0x00FF, // XK_ydiaeresis:	LATIN SMALL LETTER Y WITH DIAERESIS
+	0x01a1:    0x0104, // XK_Aogonek:	LATIN CAPITAL LETTER A WITH OGONEK
+	0x01a2:    0x02D8, // XK_breve:	BREVE
+	0x01a3:    0x0141, // XK_Lstroke:	LATIN CAPITAL LETTER L WITH STROKE
+	0x01a5:    0x013D, // XK_Lcaron:	LATIN CAPITAL LETTER L WITH CARON
+	0x01a6:    0x015A, // XK_Sacute:	LATIN CAPITAL LETTER S WITH ACUTE
+	0x01a9:    0x0160, // XK_Scaron:	LATIN CAPITAL LETTER S WITH CARON
+	0x01aa:    0x015E, // XK_Scedilla:	LATIN CAPITAL LETTER S WITH CEDILLA
+	0x01ab:    0x0164, // XK_Tcaron:	LATIN CAPITAL LETTER T WITH CARON
+	0x01ac:    0x0179, // XK_Zacute:	LATIN CAPITAL LETTER Z WITH ACUTE
+	0x01ae:    0x017D, // XK_Zcaron:	LATIN CAPITAL LETTER Z WITH CARON
+	0x01af:    0x017B, // XK_Zabovedot:	LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x01b1:    0x0105, // XK_aogonek:	LATIN SMALL LETTER A WITH OGONEK
+	0x01b2:    0x02DB, // XK_ogonek:	OGONEK
+	0x01b3:    0x0142, // XK_lstroke:	LATIN SMALL LETTER L WITH STROKE
+	0x01b5:    0x013E, // XK_lcaron:	LATIN SMALL LETTER L WITH CARON
+	0x01b6:    0x015B, // XK_sacute:	LATIN SMALL LETTER S WITH ACUTE
+	0x01b7:    0x02C7, // XK_caron:	CARON
+	0x01b9:    0x0161, // XK_scaron:	LATIN SMALL LETTER S WITH CARON
+	0x01ba:    0x015F, // XK_scedilla:	LATIN SMALL LETTER S WITH CEDILLA
+	0x01bb:    0x0165, // XK_tcaron:	LATIN SMALL LETTER T WITH CARON
+	0x01bc:    0x017A, // XK_zacute:	LATIN SMALL LETTER Z WITH ACUTE
+	0x01bd:    0x02DD, // XK_doubleacute:	DOUBLE ACUTE ACCENT
+	0x01be:    0x017E, // XK_zcaron:	LATIN SMALL LETTER Z WITH CARON
+	0x01bf:    0x017C, // XK_zabovedot:	LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x01c0:    0x0154, // XK_Racute:	LATIN CAPITAL LETTER R WITH ACUTE
+	0x01c3:    0x0102, // XK_Abreve:	LATIN CAPITAL LETTER A WITH BREVE
+	0x01c5:    0x0139, // XK_Lacute:	LATIN CAPITAL LETTER L WITH ACUTE
+	0x01c6:    0x0106, // XK_Cacute:	LATIN CAPITAL LETTER C WITH ACUTE
+	0x01c8:    0x010C, // XK_Ccaron:	LATIN CAPITAL LETTER C WITH CARON
+	0x01ca:    0x0118, // XK_Eogonek:	LATIN CAPITAL LETTER E WITH OGONEK
+	0x01cc:    0x011A, // XK_Ecaron:	LATIN CAPITAL LETTER E WITH CARON
+	0x01cf:    0x010E, // XK_Dcaron:	LATIN CAPITAL LETTER D WITH CARON
+	0x01d0:    0x0110, // XK_Dstroke:	LATIN CAPITAL LETTER D WITH STROKE
+	0x01d1:    0x0143, // XK_Nacute:	LATIN CAPITAL LETTER N WITH ACUTE
+	0x01d2:    0x0147, // XK_Ncaron:	LATIN CAPITAL LETTER N WITH CARON
+	0x01d5:    0x0150, // XK_Odoubleacute:	LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+	0x01d8:    0x0158, // XK_Rcaron:	LATIN CAPITAL LETTER R WITH CARON
+	0x01d9:    0x016E, // XK_Uring:	LATIN CAPITAL LETTER U WITH RING ABOVE
+	0x01db:    0x0170, // XK_Udoubleacute:	LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+	0x01de:    0x0162, // XK_Tcedilla:	LATIN CAPITAL LETTER T WITH CEDILLA
+	0x01e0:    0x0155, // XK_racute:	LATIN SMALL LETTER R WITH ACUTE
+	0x01e3:    0x0103, // XK_abreve:	LATIN SMALL LETTER A WITH BREVE
+	0x01e5:    0x013A, // XK_lacute:	LATIN SMALL LETTER L WITH ACUTE
+	0x01e6:    0x0107, // XK_cacute:	LATIN SMALL LETTER C WITH ACUTE
+	0x01e8:    0x010D, // XK_ccaron:	LATIN SMALL LETTER C WITH CARON
+	0x01ea:    0x0119, // XK_eogonek:	LATIN SMALL LETTER E WITH OGONEK
+	0x01ec:    0x011B, // XK_ecaron:	LATIN SMALL LETTER E WITH CARON
+	0x01ef:    0x010F, // XK_dcaron:	LATIN SMALL LETTER D WITH CARON
+	0x01f0:    0x0111, // XK_dstroke:	LATIN SMALL LETTER D WITH STROKE
+	0x01f1:    0x0144, // XK_nacute:	LATIN SMALL LETTER N WITH ACUTE
+	0x01f2:    0x0148, // XK_ncaron:	LATIN SMALL LETTER N WITH CARON
+	0x01f5:    0x0151, // XK_odoubleacute:	LATIN SMALL LETTER O WITH DOUBLE ACUTE
+	0x01f8:    0x0159, // XK_rcaron:	LATIN SMALL LETTER R WITH CARON
+	0x01f9:    0x016F, // XK_uring:	LATIN SMALL LETTER U WITH RING ABOVE
+	0x01fb:    0x0171, // XK_udoubleacute:	LATIN SMALL LETTER U WITH DOUBLE ACUTE
+	0x01fe:    0x0163, // XK_tcedilla:	LATIN SMALL LETTER T WITH CEDILLA
+	0x01ff:    0x02D9, // XK_abovedot:	DOT ABOVE
+	0x02a1:    0x0126, // XK_Hstroke:	LATIN CAPITAL LETTER H WITH STROKE
+	0x02a6:    0x0124, // XK_Hcircumflex:	LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+	0x02a9:    0x0130, // XK_Iabovedot:	LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x02ab:    0x011E, // XK_Gbreve:	LATIN CAPITAL LETTER G WITH BREVE
+	0x02ac:    0x0134, // XK_Jcircumflex:	LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+	0x02b1:    0x0127, // XK_hstroke:	LATIN SMALL LETTER H WITH STROKE
+	0x02b6:    0x0125, // XK_hcircumflex:	LATIN SMALL LETTER H WITH CIRCUMFLEX
+	0x02b9:    0x0131, // XK_idotless:	LATIN SMALL LETTER DOTLESS I
+	0x02bb:    0x011F, // XK_gbreve:	LATIN SMALL LETTER G WITH BREVE
+	0x02bc:    0x0135, // XK_jcircumflex:	LATIN SMALL LETTER J WITH CIRCUMFLEX
+	0x02c5:    0x010A, // XK_Cabovedot:	LATIN CAPITAL LETTER C WITH DOT ABOVE
+	0x02c6:    0x0108, // XK_Ccircumflex:	LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+	0x02d5:    0x0120, // XK_Gabovedot:	LATIN CAPITAL LETTER G WITH DOT ABOVE
+	0x02d8:    0x011C, // XK_Gcircumflex:	LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+	0x02dd:    0x016C, // XK_Ubreve:	LATIN CAPITAL LETTER U WITH BREVE
+	0x02de:    0x015C, // XK_Scircumflex:	LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+	0x02e5:    0x010B, // XK_cabovedot:	LATIN SMALL LETTER C WITH DOT ABOVE
+	0x02e6:    0x0109, // XK_ccircumflex:	LATIN SMALL LETTER C WITH CIRCUMFLEX
+	0x02f5:    0x0121, // XK_gabovedot:	LATIN SMALL LETTER G WITH DOT ABOVE
+	0x02f8:    0x011D, // XK_gcircumflex:	LATIN SMALL LETTER G WITH CIRCUMFLEX
+	0x02fd:    0x016D, // XK_ubreve:	LATIN SMALL LETTER U WITH BREVE
+	0x02fe:    0x015D, // XK_scircumflex:	LATIN SMALL LETTER S WITH CIRCUMFLEX
+	0x03a2:    0x0138, // XK_kra:	LATIN SMALL LETTER KRA
+	0x03a3:    0x0156, // XK_Rcedilla:	LATIN CAPITAL LETTER R WITH CEDILLA
+	0x03a5:    0x0128, // XK_Itilde:	LATIN CAPITAL LETTER I WITH TILDE
+	0x03a6:    0x013B, // XK_Lcedilla:	LATIN CAPITAL LETTER L WITH CEDILLA
+	0x03aa:    0x0112, // XK_Emacron:	LATIN CAPITAL LETTER E WITH MACRON
+	0x03ab:    0x0122, // XK_Gcedilla:	LATIN CAPITAL LETTER G WITH CEDILLA
+	0x03ac:    0x0166, // XK_Tslash:	LATIN CAPITAL LETTER T WITH STROKE
+	0x03b3:    0x0157, // XK_rcedilla:	LATIN SMALL LETTER R WITH CEDILLA
+	0x03b5:    0x0129, // XK_itilde:	LATIN SMALL LETTER I WITH TILDE
+	0x03b6:    0x013C, // XK_lcedilla:	LATIN SMALL LETTER L WITH CEDILLA
+	0x03ba:    0x0113, // XK_emacron:	LATIN SMALL LETTER E WITH MACRON
+	0x03bb:    0x0123, // XK_gcedilla:	LATIN SMALL LETTER G WITH CEDILLA
+	0x03bc:    0x0167, // XK_tslash:	LATIN SMALL LETTER T WITH STROKE
+	0x03bd:    0x014A, // XK_ENG:	LATIN CAPITAL LETTER ENG
+	0x03bf:    0x014B, // XK_eng:	LATIN SMALL LETTER ENG
+	0x03c0:    0x0100, // XK_Amacron:	LATIN CAPITAL LETTER A WITH MACRON
+	0x03c7:    0x012E, // XK_Iogonek:	LATIN CAPITAL LETTER I WITH OGONEK
+	0x03cc:    0x0116, // XK_Eabovedot:	LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x03cf:    0x012A, // XK_Imacron:	LATIN CAPITAL LETTER I WITH MACRON
+	0x03d1:    0x0145, // XK_Ncedilla:	LATIN CAPITAL LETTER N WITH CEDILLA
+	0x03d2:    0x014C, // XK_Omacron:	LATIN CAPITAL LETTER O WITH MACRON
+	0x03d3:    0x0136, // XK_Kcedilla:	LATIN CAPITAL LETTER K WITH CEDILLA
+	0x03d9:    0x0172, // XK_Uogonek:	LATIN CAPITAL LETTER U WITH OGONEK
+	0x03dd:    0x0168, // XK_Utilde:	LATIN CAPITAL LETTER U WITH TILDE
+	0x03de:    0x016A, // XK_Umacron:	LATIN CAPITAL LETTER U WITH MACRON
+	0x03e0:    0x0101, // XK_amacron:	LATIN SMALL LETTER A WITH MACRON
+	0x03e7:    0x012F, // XK_iogonek:	LATIN SMALL LETTER I WITH OGONEK
+	0x03ec:    0x0117, // XK_eabovedot:	LATIN SMALL LETTER E WITH DOT ABOVE
+	0x03ef:    0x012B, // XK_imacron:	LATIN SMALL LETTER I WITH MACRON
+	0x03f1:    0x0146, // XK_ncedilla:	LATIN SMALL LETTER N WITH CEDILLA
+	0x03f2:    0x014D, // XK_omacron:	LATIN SMALL LETTER O WITH MACRON
+	0x03f3:    0x0137, // XK_kcedilla:	LATIN SMALL LETTER K WITH CEDILLA
+	0x03f9:    0x0173, // XK_uogonek:	LATIN SMALL LETTER U WITH OGONEK
+	0x03fd:    0x0169, // XK_utilde:	LATIN SMALL LETTER U WITH TILDE
+	0x03fe:    0x016B, // XK_umacron:	LATIN SMALL LETTER U WITH MACRON
+	0x1000174: 0x0174, // XK_Wcircumflex:	LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+	0x1000175: 0x0175, // XK_wcircumflex:	LATIN SMALL LETTER W WITH CIRCUMFLEX
+	0x1000176: 0x0176, // XK_Ycircumflex:	LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+	0x1000177: 0x0177, // XK_ycircumflex:	LATIN SMALL LETTER Y WITH CIRCUMFLEX
+	0x1001e02: 0x1E02, // XK_Babovedot:	LATIN CAPITAL LETTER B WITH DOT ABOVE
+	0x1001e03: 0x1E03, // XK_babovedot:	LATIN SMALL LETTER B WITH DOT ABOVE
+	0x1001e0a: 0x1E0A, // XK_Dabovedot:	LATIN CAPITAL LETTER D WITH DOT ABOVE
+	0x1001e0b: 0x1E0B, // XK_dabovedot:	LATIN SMALL LETTER D WITH DOT ABOVE
+	0x1001e1e: 0x1E1E, // XK_Fabovedot:	LATIN CAPITAL LETTER F WITH DOT ABOVE
+	0x1001e1f: 0x1E1F, // XK_fabovedot:	LATIN SMALL LETTER F WITH DOT ABOVE
+	0x1001e40: 0x1E40, // XK_Mabovedot:	LATIN CAPITAL LETTER M WITH DOT ABOVE
+	0x1001e41: 0x1E41, // XK_mabovedot:	LATIN SMALL LETTER M WITH DOT ABOVE
+	0x1001e56: 0x1E56, // XK_Pabovedot:	LATIN CAPITAL LETTER P WITH DOT ABOVE
+	0x1001e57: 0x1E57, // XK_pabovedot:	LATIN SMALL LETTER P WITH DOT ABOVE
+	0x1001e60: 0x1E60, // XK_Sabovedot:	LATIN CAPITAL LETTER S WITH DOT ABOVE
+	0x1001e61: 0x1E61, // XK_sabovedot:	LATIN SMALL LETTER S WITH DOT ABOVE
+	0x1001e6a: 0x1E6A, // XK_Tabovedot:	LATIN CAPITAL LETTER T WITH DOT ABOVE
+	0x1001e6b: 0x1E6B, // XK_tabovedot:	LATIN SMALL LETTER T WITH DOT ABOVE
+	0x1001e80: 0x1E80, // XK_Wgrave:	LATIN CAPITAL LETTER W WITH GRAVE
+	0x1001e81: 0x1E81, // XK_wgrave:	LATIN SMALL LETTER W WITH GRAVE
+	0x1001e82: 0x1E82, // XK_Wacute:	LATIN CAPITAL LETTER W WITH ACUTE
+	0x1001e83: 0x1E83, // XK_wacute:	LATIN SMALL LETTER W WITH ACUTE
+	0x1001e84: 0x1E84, // XK_Wdiaeresis:	LATIN CAPITAL LETTER W WITH DIAERESIS
+	0x1001e85: 0x1E85, // XK_wdiaeresis:	LATIN SMALL LETTER W WITH DIAERESIS
+	0x1001ef2: 0x1EF2, // XK_Ygrave:	LATIN CAPITAL LETTER Y WITH GRAVE
+	0x1001ef3: 0x1EF3, // XK_ygrave:	LATIN SMALL LETTER Y WITH GRAVE
+	0x13bc:    0x0152, // XK_OE:	LATIN CAPITAL LIGATURE OE
+	0x13bd:    0x0153, // XK_oe:	LATIN SMALL LIGATURE OE
+	0x13be:    0x0178, // XK_Ydiaeresis:	LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x047e:    0x203E, // XK_overline:	OVERLINE
+	0x04a1:    0x3002, // XK_kana_fullstop:	IDEOGRAPHIC FULL STOP
+	0x04a2:    0x300C, // XK_kana_openingbracket:	LEFT CORNER BRACKET
+	0x04a3:    0x300D, // XK_kana_closingbracket:	RIGHT CORNER BRACKET
+	0x04a4:    0x3001, // XK_kana_comma:	IDEOGRAPHIC COMMA
+	0x04a5:    0x30FB, // XK_kana_conjunctive:	KATAKANA MIDDLE DOT
+	0x04a6:    0x30F2, // XK_kana_WO:	KATAKANA LETTER WO
+	0x04a7:    0x30A1, // XK_kana_a:	KATAKANA LETTER SMALL A
+	0x04a8:    0x30A3, // XK_kana_i:	KATAKANA LETTER SMALL I
+	0x04a9:    0x30A5, // XK_kana_u:	KATAKANA LETTER SMALL U
+	0x04aa:    0x30A7, // XK_kana_e:	KATAKANA LETTER SMALL E
+	0x04ab:    0x30A9, // XK_kana_o:	KATAKANA LETTER SMALL O
+	0x04ac:    0x30E3, // XK_kana_ya:	KATAKANA LETTER SMALL YA
+	0x04ad:    0x30E5, // XK_kana_yu:	KATAKANA LETTER SMALL YU
+	0x04ae:    0x30E7, // XK_kana_yo:	KATAKANA LETTER SMALL YO
+	0x04af:    0x30C3, // XK_kana_tsu:	KATAKANA LETTER SMALL TU
+	0x04b0:    0x30FC, // XK_prolongedsound:	KATAKANA-HIRAGANA PROLONGED SOUND MARK
+	0x04b1:    0x30A2, // XK_kana_A:	KATAKANA LETTER A
+	0x04b2:    0x30A4, // XK_kana_I:	KATAKANA LETTER I
+	0x04b3:    0x30A6, // XK_kana_U:	KATAKANA LETTER U
+	0x04b4:    0x30A8, // XK_kana_E:	KATAKANA LETTER E
+	0x04b5:    0x30AA, // XK_kana_O:	KATAKANA LETTER O
+	0x04b6:    0x30AB, // XK_kana_KA:	KATAKANA LETTER KA
+	0x04b7:    0x30AD, // XK_kana_KI:	KATAKANA LETTER KI
+	0x04b8:    0x30AF, // XK_kana_KU:	KATAKANA LETTER KU
+	0x04b9:    0x30B1, // XK_kana_KE:	KATAKANA LETTER KE
+	0x04ba:    0x30B3, // XK_kana_KO:	KATAKANA LETTER KO
+	0x04bb:    0x30B5, // XK_kana_SA:	KATAKANA LETTER SA
+	0x04bc:    0x30B7, // XK_kana_SHI:	KATAKANA LETTER SI
+	0x04bd:    0x30B9, // XK_kana_SU:	KATAKANA LETTER SU
+	0x04be:    0x30BB, // XK_kana_SE:	KATAKANA LETTER SE
+	0x04bf:    0x30BD, // XK_kana_SO:	KATAKANA LETTER SO
+	0x04c0:    0x30BF, // XK_kana_TA:	KATAKANA LETTER TA
+	0x04c1:    0x30C1, // XK_kana_CHI:	KATAKANA LETTER TI
+	0x04c2:    0x30C4, // XK_kana_TSU:	KATAKANA LETTER TU
+	0x04c3:    0x30C6, // XK_kana_TE:	KATAKANA LETTER TE
+	0x04c4:    0x30C8, // XK_kana_TO:	KATAKANA LETTER TO
+	0x04c5:    0x30CA, // XK_kana_NA:	KATAKANA LETTER NA
+	0x04c6:    0x30CB, // XK_kana_NI:	KATAKANA LETTER NI
+	0x04c7:    0x30CC, // XK_kana_NU:	KATAKANA LETTER NU
+	0x04c8:    0x30CD, // XK_kana_NE:	KATAKANA LETTER NE
+	0x04c9:    0x30CE, // XK_kana_NO:	KATAKANA LETTER NO
+	0x04ca:    0x30CF, // XK_kana_HA:	KATAKANA LETTER HA
+	0x04cb:    0x30D2, // XK_kana_HI:	KATAKANA LETTER HI
+	0x04cc:    0x30D5, // XK_kana_FU:	KATAKANA LETTER HU
+	0x04cd:    0x30D8, // XK_kana_HE:	KATAKANA LETTER HE
+	0x04ce:    0x30DB, // XK_kana_HO:	KATAKANA LETTER HO
+	0x04cf:    0x30DE, // XK_kana_MA:	KATAKANA LETTER MA
+	0x04d0:    0x30DF, // XK_kana_MI:	KATAKANA LETTER MI
+	0x04d1:    0x30E0, // XK_kana_MU:	KATAKANA LETTER MU
+	0x04d2:    0x30E1, // XK_kana_ME:	KATAKANA LETTER ME
+	0x04d3:    0x30E2, // XK_kana_MO:	KATAKANA LETTER MO
+	0x04d4:    0x30E4, // XK_kana_YA:	KATAKANA LETTER YA
+	0x04d5:    0x30E6, // XK_kana_YU:	KATAKANA LETTER YU
+	0x04d6:    0x30E8, // XK_kana_YO:	KATAKANA LETTER YO
+	0x04d7:    0x30E9, // XK_kana_RA:	KATAKANA LETTER RA
+	0x04d8:    0x30EA, // XK_kana_RI:	KATAKANA LETTER RI
+	0x04d9:    0x30EB, // XK_kana_RU:	KATAKANA LETTER RU
+	0x04da:    0x30EC, // XK_kana_RE:	KATAKANA LETTER RE
+	0x04db:    0x30ED, // XK_kana_RO:	KATAKANA LETTER RO
+	0x04dc:    0x30EF, // XK_kana_WA:	KATAKANA LETTER WA
+	0x04dd:    0x30F3, // XK_kana_N:	KATAKANA LETTER N
+	0x04de:    0x309B, // XK_voicedsound:	KATAKANA-HIRAGANA VOICED SOUND MARK
+	0x04df:    0x309C, // XK_semivoicedsound:	KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+	0x10006f0: 0x06F0, // XK_Farsi_0:	EXTENDED ARABIC-INDIC DIGIT ZERO
+	0x10006f1: 0x06F1, // XK_Farsi_1:	EXTENDED ARABIC-INDIC DIGIT ONE
+	0x10006f2: 0x06F2, // XK_Farsi_2:	EXTENDED ARABIC-INDIC DIGIT TWO
+	0x10006f3: 0x06F3, // XK_Farsi_3:	EXTENDED ARABIC-INDIC DIGIT THREE
+	0x10006f4: 0x06F4, // XK_Farsi_4:	EXTENDED ARABIC-INDIC DIGIT FOUR
+	0x10006f5: 0x06F5, // XK_Farsi_5:	EXTENDED ARABIC-INDIC DIGIT FIVE
+	0x10006f6: 0x06F6, // XK_Farsi_6:	EXTENDED ARABIC-INDIC DIGIT SIX
+	0x10006f7: 0x06F7, // XK_Farsi_7:	EXTENDED ARABIC-INDIC DIGIT SEVEN
+	0x10006f8: 0x06F8, // XK_Farsi_8:	EXTENDED ARABIC-INDIC DIGIT EIGHT
+	0x10006f9: 0x06F9, // XK_Farsi_9:	EXTENDED ARABIC-INDIC DIGIT NINE
+	0x100066a: 0x066A, // XK_Arabic_percent:	ARABIC PERCENT SIGN
+	0x1000670: 0x0670, // XK_Arabic_superscript_alef:	ARABIC LETTER SUPERSCRIPT ALEF
+	0x1000679: 0x0679, // XK_Arabic_tteh:	ARABIC LETTER TTEH
+	0x100067e: 0x067E, // XK_Arabic_peh:	ARABIC LETTER PEH
+	0x1000686: 0x0686, // XK_Arabic_tcheh:	ARABIC LETTER TCHEH
+	0x1000688: 0x0688, // XK_Arabic_ddal:	ARABIC LETTER DDAL
+	0x1000691: 0x0691, // XK_Arabic_rreh:	ARABIC LETTER RREH
+	0x05ac:    0x060C, // XK_Arabic_comma:	ARABIC COMMA
+	0x10006d4: 0x06D4, // XK_Arabic_fullstop:	ARABIC FULL STOP
+	0x1000660: 0x0660, // XK_Arabic_0:	ARABIC-INDIC DIGIT ZERO
+	0x1000661: 0x0661, // XK_Arabic_1:	ARABIC-INDIC DIGIT ONE
+	0x1000662: 0x0662, // XK_Arabic_2:	ARABIC-INDIC DIGIT TWO
+	0x1000663: 0x0663, // XK_Arabic_3:	ARABIC-INDIC DIGIT THREE
+	0x1000664: 0x0664, // XK_Arabic_4:	ARABIC-INDIC DIGIT FOUR
+	0x1000665: 0x0665, // XK_Arabic_5:	ARABIC-INDIC DIGIT FIVE
+	0x1000666: 0x0666, // XK_Arabic_6:	ARABIC-INDIC DIGIT SIX
+	0x1000667: 0x0667, // XK_Arabic_7:	ARABIC-INDIC DIGIT SEVEN
+	0x1000668: 0x0668, // XK_Arabic_8:	ARABIC-INDIC DIGIT EIGHT
+	0x1000669: 0x0669, // XK_Arabic_9:	ARABIC-INDIC DIGIT NINE
+	0x05bb:    0x061B, // XK_Arabic_semicolon:	ARABIC SEMICOLON
+	0x05bf:    0x061F, // XK_Arabic_question_mark:	ARABIC QUESTION MARK
+	0x05c1:    0x0621, // XK_Arabic_hamza:	ARABIC LETTER HAMZA
+	0x05c2:    0x0622, // XK_Arabic_maddaonalef:	ARABIC LETTER ALEF WITH MADDA ABOVE
+	0x05c3:    0x0623, // XK_Arabic_hamzaonalef:	ARABIC LETTER ALEF WITH HAMZA ABOVE
+	0x05c4:    0x0624, // XK_Arabic_hamzaonwaw:	ARABIC LETTER WAW WITH HAMZA ABOVE
+	0x05c5:    0x0625, // XK_Arabic_hamzaunderalef:	ARABIC LETTER ALEF WITH HAMZA BELOW
+	0x05c6:    0x0626, // XK_Arabic_hamzaonyeh:	ARABIC LETTER YEH WITH HAMZA ABOVE
+	0x05c7:    0x0627, // XK_Arabic_alef:	ARABIC LETTER ALEF
+	0x05c8:    0x0628, // XK_Arabic_beh:	ARABIC LETTER BEH
+	0x05c9:    0x0629, // XK_Arabic_tehmarbuta:	ARABIC LETTER TEH MARBUTA
+	0x05ca:    0x062A, // XK_Arabic_teh:	ARABIC LETTER TEH
+	0x05cb:    0x062B, // XK_Arabic_theh:	ARABIC LETTER THEH
+	0x05cc:    0x062C, // XK_Arabic_jeem:	ARABIC LETTER JEEM
+	0x05cd:    0x062D, // XK_Arabic_hah:	ARABIC LETTER HAH
+	0x05ce:    0x062E, // XK_Arabic_khah:	ARABIC LETTER KHAH
+	0x05cf:    0x062F, // XK_Arabic_dal:	ARABIC LETTER DAL
+	0x05d0:    0x0630, // XK_Arabic_thal:	ARABIC LETTER THAL
+	0x05d1:    0x0631, // XK_Arabic_ra:	ARABIC LETTER REH
+	0x05d2:    0x0632, // XK_Arabic_zain:	ARABIC LETTER ZAIN
+	0x05d3:    0x0633, // XK_Arabic_seen:	ARABIC LETTER SEEN
+	0x05d4:    0x0634, // XK_Arabic_sheen:	ARABIC LETTER SHEEN
+	0x05d5:    0x0635, // XK_Arabic_sad:	ARABIC LETTER SAD
+	0x05d6:    0x0636, // XK_Arabic_dad:	ARABIC LETTER DAD
+	0x05d7:    0x0637, // XK_Arabic_tah:	ARABIC LETTER TAH
+	0x05d8:    0x0638, // XK_Arabic_zah:	ARABIC LETTER ZAH
+	0x05d9:    0x0639, // XK_Arabic_ain:	ARABIC LETTER AIN
+	0x05da:    0x063A, // XK_Arabic_ghain:	ARABIC LETTER GHAIN
+	0x05e0:    0x0640, // XK_Arabic_tatweel:	ARABIC TATWEEL
+	0x05e1:    0x0641, // XK_Arabic_feh:	ARABIC LETTER FEH
+	0x05e2:    0x0642, // XK_Arabic_qaf:	ARABIC LETTER QAF
+	0x05e3:    0x0643, // XK_Arabic_kaf:	ARABIC LETTER KAF
+	0x05e4:    0x0644, // XK_Arabic_lam:	ARABIC LETTER LAM
+	0x05e5:    0x0645, // XK_Arabic_meem:	ARABIC LETTER MEEM
+	0x05e6:    0x0646, // XK_Arabic_noon:	ARABIC LETTER NOON
+	0x05e7:    0x0647, // XK_Arabic_ha:	ARABIC LETTER HEH
+	0x05e8:    0x0648, // XK_Arabic_waw:	ARABIC LETTER WAW
+	0x05e9:    0x0649, // XK_Arabic_alefmaksura:	ARABIC LETTER ALEF MAKSURA
+	0x05ea:    0x064A, // XK_Arabic_yeh:	ARABIC LETTER YEH
+	0x05eb:    0x064B, // XK_Arabic_fathatan:	ARABIC FATHATAN
+	0x05ec:    0x064C, // XK_Arabic_dammatan:	ARABIC DAMMATAN
+	0x05ed:    0x064D, // XK_Arabic_kasratan:	ARABIC KASRATAN
+	0x05ee:    0x064E, // XK_Arabic_fatha:	ARABIC FATHA
+	0x05ef:    0x064F, // XK_Arabic_damma:	ARABIC DAMMA
+	0x05f0:    0x0650, // XK_Arabic_kasra:	ARABIC KASRA
+	0x05f1:    0x0651, // XK_Arabic_shadda:	ARABIC SHADDA
+	0x05f2:    0x0652, // XK_Arabic_sukun:	ARABIC SUKUN
+	0x1000653: 0x0653, // XK_Arabic_madda_above:	ARABIC MADDAH ABOVE
+	0x1000654: 0x0654, // XK_Arabic_hamza_above:	ARABIC HAMZA ABOVE
+	0x1000655: 0x0655, // XK_Arabic_hamza_below:	ARABIC HAMZA BELOW
+	0x1000698: 0x0698, // XK_Arabic_jeh:	ARABIC LETTER JEH
+	0x10006a4: 0x06A4, // XK_Arabic_veh:	ARABIC LETTER VEH
+	0x10006a9: 0x06A9, // XK_Arabic_keheh:	ARABIC LETTER KEHEH
+	0x10006af: 0x06AF, // XK_Arabic_gaf:	ARABIC LETTER GAF
+	0x10006ba: 0x06BA, // XK_Arabic_noon_ghunna:	ARABIC LETTER NOON GHUNNA
+	0x10006be: 0x06BE, // XK_Arabic_heh_doachashmee:	ARABIC LETTER HEH DOACHASHMEE
+	0x10006cc: 0x06CC, // XK_Farsi_yeh:	ARABIC LETTER FARSI YEH
+	0x10006d2: 0x06D2, // XK_Arabic_yeh_baree:	ARABIC LETTER YEH BARREE
+	0x10006c1: 0x06C1, // XK_Arabic_heh_goal:	ARABIC LETTER HEH GOAL
+	0x1000492: 0x0492, // XK_Cyrillic_GHE_bar:	CYRILLIC CAPITAL LETTER GHE WITH STROKE
+	0x1000493: 0x0493, // XK_Cyrillic_ghe_bar:	CYRILLIC SMALL LETTER GHE WITH STROKE
+	0x1000496: 0x0496, // XK_Cyrillic_ZHE_descender:	CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+	0x1000497: 0x0497, // XK_Cyrillic_zhe_descender:	CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+	0x100049a: 0x049A, // XK_Cyrillic_KA_descender:	CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+	0x100049b: 0x049B, // XK_Cyrillic_ka_descender:	CYRILLIC SMALL LETTER KA WITH DESCENDER
+	0x100049c: 0x049C, // XK_Cyrillic_KA_vertstroke:	CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+	0x100049d: 0x049D, // XK_Cyrillic_ka_vertstroke:	CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+	0x10004a2: 0x04A2, // XK_Cyrillic_EN_descender:	CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+	0x10004a3: 0x04A3, // XK_Cyrillic_en_descender:	CYRILLIC SMALL LETTER EN WITH DESCENDER
+	0x10004ae: 0x04AE, // XK_Cyrillic_U_straight:	CYRILLIC CAPITAL LETTER STRAIGHT U
+	0x10004af: 0x04AF, // XK_Cyrillic_u_straight:	CYRILLIC SMALL LETTER STRAIGHT U
+	0x10004b0: 0x04B0, // XK_Cyrillic_U_straight_bar:	CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+	0x10004b1: 0x04B1, // XK_Cyrillic_u_straight_bar:	CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+	0x10004b2: 0x04B2, // XK_Cyrillic_HA_descender:	CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+	0x10004b3: 0x04B3, // XK_Cyrillic_ha_descender:	CYRILLIC SMALL LETTER HA WITH DESCENDER
+	0x10004b6: 0x04B6, // XK_Cyrillic_CHE_descender:	CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+	0x10004b7: 0x04B7, // XK_Cyrillic_che_descender:	CYRILLIC SMALL LETTER CHE WITH DESCENDER
+	0x10004b8: 0x04B8, // XK_Cyrillic_CHE_vertstroke:	CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+	0x10004b9: 0x04B9, // XK_Cyrillic_che_vertstroke:	CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+	0x10004ba: 0x04BA, // XK_Cyrillic_SHHA:	CYRILLIC CAPITAL LETTER SHHA
+	0x10004bb: 0x04BB, // XK_Cyrillic_shha:	CYRILLIC SMALL LETTER SHHA
+	0x10004d8: 0x04D8, // XK_Cyrillic_SCHWA:	CYRILLIC CAPITAL LETTER SCHWA
+	0x10004d9: 0x04D9, // XK_Cyrillic_schwa:	CYRILLIC SMALL LETTER SCHWA
+	0x10004e2: 0x04E2, // XK_Cyrillic_I_macron:	CYRILLIC CAPITAL LETTER I WITH MACRON
+	0x10004e3: 0x04E3, // XK_Cyrillic_i_macron:	CYRILLIC SMALL LETTER I WITH MACRON
+	0x10004e8: 0x04E8, // XK_Cyrillic_O_bar:	CYRILLIC CAPITAL LETTER BARRED O
+	0x10004e9: 0x04E9, // XK_Cyrillic_o_bar:	CYRILLIC SMALL LETTER BARRED O
+	0x10004ee: 0x04EE, // XK_Cyrillic_U_macron:	CYRILLIC CAPITAL LETTER U WITH MACRON
+	0x10004ef: 0x04EF, // XK_Cyrillic_u_macron:	CYRILLIC SMALL LETTER U WITH MACRON
+	0x06a1:    0x0452, // XK_Serbian_dje:	CYRILLIC SMALL LETTER DJE
+	0x06a2:    0x0453, // XK_Macedonia_gje:	CYRILLIC SMALL LETTER GJE
+	0x06a3:    0x0451, // XK_Cyrillic_io:	CYRILLIC SMALL LETTER IO
+	0x06a4:    0x0454, // XK_Ukrainian_ie:	CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x06a5:    0x0455, // XK_Macedonia_dse:	CYRILLIC SMALL LETTER DZE
+	0x06a6:    0x0456, // XK_Ukrainian_i:	CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x06a7:    0x0457, // XK_Ukrainian_yi:	CYRILLIC SMALL LETTER YI
+	0x06a8:    0x0458, // XK_Cyrillic_je:	CYRILLIC SMALL LETTER JE
+	0x06a9:    0x0459, // XK_Cyrillic_lje:	CYRILLIC SMALL LETTER LJE
+	0x06aa:    0x045A, // XK_Cyrillic_nje:	CYRILLIC SMALL LETTER NJE
+	0x06ab:    0x045B, // XK_Serbian_tshe:	CYRILLIC SMALL LETTER TSHE
+	0x06ac:    0x045C, // XK_Macedonia_kje:	CYRILLIC SMALL LETTER KJE
+	0x06ad:    0x0491, // XK_Ukrainian_ghe_with_upturn:	CYRILLIC SMALL LETTER GHE WITH UPTURN
+	0x06ae:    0x045E, // XK_Byelorussian_shortu:	CYRILLIC SMALL LETTER SHORT U
+	0x06af:    0x045F, // XK_Cyrillic_dzhe:	CYRILLIC SMALL LETTER DZHE
+	0x06b0:    0x2116, // XK_numerosign:	NUMERO SIGN
+	0x06b1:    0x0402, // XK_Serbian_DJE:	CYRILLIC CAPITAL LETTER DJE
+	0x06b2:    0x0403, // XK_Macedonia_GJE:	CYRILLIC CAPITAL LETTER GJE
+	0x06b3:    0x0401, // XK_Cyrillic_IO:	CYRILLIC CAPITAL LETTER IO
+	0x06b4:    0x0404, // XK_Ukrainian_IE:	CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x06b5:    0x0405, // XK_Macedonia_DSE:	CYRILLIC CAPITAL LETTER DZE
+	0x06b6:    0x0406, // XK_Ukrainian_I:	CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x06b7:    0x0407, // XK_Ukrainian_YI:	CYRILLIC CAPITAL LETTER YI
+	0x06b8:    0x0408, // XK_Cyrillic_JE:	CYRILLIC CAPITAL LETTER JE
+	0x06b9:    0x0409, // XK_Cyrillic_LJE:	CYRILLIC CAPITAL LETTER LJE
+	0x06ba:    0x040A, // XK_Cyrillic_NJE:	CYRILLIC CAPITAL LETTER NJE
+	0x06bb:    0x040B, // XK_Serbian_TSHE:	CYRILLIC CAPITAL LETTER TSHE
+	0x06bc:    0x040C, // XK_Macedonia_KJE:	CYRILLIC CAPITAL LETTER KJE
+	0x06bd:    0x0490, // XK_Ukrainian_GHE_WITH_UPTURN:	CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+	0x06be:    0x040E, // XK_Byelorussian_SHORTU:	CYRILLIC CAPITAL LETTER SHORT U
+	0x06bf:    0x040F, // XK_Cyrillic_DZHE:	CYRILLIC CAPITAL LETTER DZHE
+	0x06c0:    0x044E, // XK_Cyrillic_yu:	CYRILLIC SMALL LETTER YU
+	0x06c1:    0x0430, // XK_Cyrillic_a:	CYRILLIC SMALL LETTER A
+	0x06c2:    0x0431, // XK_Cyrillic_be:	CYRILLIC SMALL LETTER BE
+	0x06c3:    0x0446, // XK_Cyrillic_tse:	CYRILLIC SMALL LETTER TSE
+	0x06c4:    0x0434, // XK_Cyrillic_de:	CYRILLIC SMALL LETTER DE
+	0x06c5:    0x0435, // XK_Cyrillic_ie:	CYRILLIC SMALL LETTER IE
+	0x06c6:    0x0444, // XK_Cyrillic_ef:	CYRILLIC SMALL LETTER EF
+	0x06c7:    0x0433, // XK_Cyrillic_ghe:	CYRILLIC SMALL LETTER GHE
+	0x06c8:    0x0445, // XK_Cyrillic_ha:	CYRILLIC SMALL LETTER HA
+	0x06c9:    0x0438, // XK_Cyrillic_i:	CYRILLIC SMALL LETTER I
+	0x06ca:    0x0439, // XK_Cyrillic_shorti:	CYRILLIC SMALL LETTER SHORT I
+	0x06cb:    0x043A, // XK_Cyrillic_ka:	CYRILLIC SMALL LETTER KA
+	0x06cc:    0x043B, // XK_Cyrillic_el:	CYRILLIC SMALL LETTER EL
+	0x06cd:    0x043C, // XK_Cyrillic_em:	CYRILLIC SMALL LETTER EM
+	0x06ce:    0x043D, // XK_Cyrillic_en:	CYRILLIC SMALL LETTER EN
+	0x06cf:    0x043E, // XK_Cyrillic_o:	CYRILLIC SMALL LETTER O
+	0x06d0:    0x043F, // XK_Cyrillic_pe:	CYRILLIC SMALL LETTER PE
+	0x06d1:    0x044F, // XK_Cyrillic_ya:	CYRILLIC SMALL LETTER YA
+	0x06d2:    0x0440, // XK_Cyrillic_er:	CYRILLIC SMALL LETTER ER
+	0x06d3:    0x0441, // XK_Cyrillic_es:	CYRILLIC SMALL LETTER ES
+	0x06d4:    0x0442, // XK_Cyrillic_te:	CYRILLIC SMALL LETTER TE
+	0x06d5:    0x0443, // XK_Cyrillic_u:	CYRILLIC SMALL LETTER U
+	0x06d6:    0x0436, // XK_Cyrillic_zhe:	CYRILLIC SMALL LETTER ZHE
+	0x06d7:    0x0432, // XK_Cyrillic_ve:	CYRILLIC SMALL LETTER VE
+	0x06d8:    0x044C, // XK_Cyrillic_softsign:	CYRILLIC SMALL LETTER SOFT SIGN
+	0x06d9:    0x044B, // XK_Cyrillic_yeru:	CYRILLIC SMALL LETTER YERU
+	0x06da:    0x0437, // XK_Cyrillic_ze:	CYRILLIC SMALL LETTER ZE
+	0x06db:    0x0448, // XK_Cyrillic_sha:	CYRILLIC SMALL LETTER SHA
+	0x06dc:    0x044D, // XK_Cyrillic_e:	CYRILLIC SMALL LETTER E
+	0x06dd:    0x0449, // XK_Cyrillic_shcha:	CYRILLIC SMALL LETTER SHCHA
+	0x06de:    0x0447, // XK_Cyrillic_che:	CYRILLIC SMALL LETTER CHE
+	0x06df:    0x044A, // XK_Cyrillic_hardsign:	CYRILLIC SMALL LETTER HARD SIGN
+	0x06e0:    0x042E, // XK_Cyrillic_YU:	CYRILLIC CAPITAL LETTER YU
+	0x06e1:    0x0410, // XK_Cyrillic_A:	CYRILLIC CAPITAL LETTER A
+	0x06e2:    0x0411, // XK_Cyrillic_BE:	CYRILLIC CAPITAL LETTER BE
+	0x06e3:    0x0426, // XK_Cyrillic_TSE:	CYRILLIC CAPITAL LETTER TSE
+	0x06e4:    0x0414, // XK_Cyrillic_DE:	CYRILLIC CAPITAL LETTER DE
+	0x06e5:    0x0415, // XK_Cyrillic_IE:	CYRILLIC CAPITAL LETTER IE
+	0x06e6:    0x0424, // XK_Cyrillic_EF:	CYRILLIC CAPITAL LETTER EF
+	0x06e7:    0x0413, // XK_Cyrillic_GHE:	CYRILLIC CAPITAL LETTER GHE
+	0x06e8:    0x0425, // XK_Cyrillic_HA:	CYRILLIC CAPITAL LETTER HA
+	0x06e9:    0x0418, // XK_Cyrillic_I:	CYRILLIC CAPITAL LETTER I
+	0x06ea:    0x0419, // XK_Cyrillic_SHORTI:	CYRILLIC CAPITAL LETTER SHORT I
+	0x06eb:    0x041A, // XK_Cyrillic_KA:	CYRILLIC CAPITAL LETTER KA
+	0x06ec:    0x041B, // XK_Cyrillic_EL:	CYRILLIC CAPITAL LETTER EL
+	0x06ed:    0x041C, // XK_Cyrillic_EM:	CYRILLIC CAPITAL LETTER EM
+	0x06ee:    0x041D, // XK_Cyrillic_EN:	CYRILLIC CAPITAL LETTER EN
+	0x06ef:    0x041E, // XK_Cyrillic_O:	CYRILLIC CAPITAL LETTER O
+	0x06f0:    0x041F, // XK_Cyrillic_PE:	CYRILLIC CAPITAL LETTER PE
+	0x06f1:    0x042F, // XK_Cyrillic_YA:	CYRILLIC CAPITAL LETTER YA
+	0x06f2:    0x0420, // XK_Cyrillic_ER:	CYRILLIC CAPITAL LETTER ER
+	0x06f3:    0x0421, // XK_Cyrillic_ES:	CYRILLIC CAPITAL LETTER ES
+	0x06f4:    0x0422, // XK_Cyrillic_TE:	CYRILLIC CAPITAL LETTER TE
+	0x06f5:    0x0423, // XK_Cyrillic_U:	CYRILLIC CAPITAL LETTER U
+	0x06f6:    0x0416, // XK_Cyrillic_ZHE:	CYRILLIC CAPITAL LETTER ZHE
+	0x06f7:    0x0412, // XK_Cyrillic_VE:	CYRILLIC CAPITAL LETTER VE
+	0x06f8:    0x042C, // XK_Cyrillic_SOFTSIGN:	CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x06f9:    0x042B, // XK_Cyrillic_YERU:	CYRILLIC CAPITAL LETTER YERU
+	0x06fa:    0x0417, // XK_Cyrillic_ZE:	CYRILLIC CAPITAL LETTER ZE
+	0x06fb:    0x0428, // XK_Cyrillic_SHA:	CYRILLIC CAPITAL LETTER SHA
+	0x06fc:    0x042D, // XK_Cyrillic_E:	CYRILLIC CAPITAL LETTER E
+	0x06fd:    0x0429, // XK_Cyrillic_SHCHA:	CYRILLIC CAPITAL LETTER SHCHA
+	0x06fe:    0x0427, // XK_Cyrillic_CHE:	CYRILLIC CAPITAL LETTER CHE
+	0x06ff:    0x042A, // XK_Cyrillic_HARDSIGN:	CYRILLIC CAPITAL LETTER HARD SIGN
+	0x07a1:    0x0386, // XK_Greek_ALPHAaccent:	GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x07a2:    0x0388, // XK_Greek_EPSILONaccent:	GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x07a3:    0x0389, // XK_Greek_ETAaccent:	GREEK CAPITAL LETTER ETA WITH TONOS
+	0x07a4:    0x038A, // XK_Greek_IOTAaccent:	GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x07a5:    0x03AA, // XK_Greek_IOTAdieresis:	GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x07a7:    0x038C, // XK_Greek_OMICRONaccent:	GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x07a8:    0x038E, // XK_Greek_UPSILONaccent:	GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x07a9:    0x03AB, // XK_Greek_UPSILONdieresis:	GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x07ab:    0x038F, // XK_Greek_OMEGAaccent:	GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x07ae:    0x0385, // XK_Greek_accentdieresis:	GREEK DIALYTIKA TONOS
+	0x07af:    0x2015, // XK_Greek_horizbar:	HORIZONTAL BAR
+	0x07b1:    0x03AC, // XK_Greek_alphaaccent:	GREEK SMALL LETTER ALPHA WITH TONOS
+	0x07b2:    0x03AD, // XK_Greek_epsilonaccent:	GREEK SMALL LETTER EPSILON WITH TONOS
+	0x07b3:    0x03AE, // XK_Greek_etaaccent:	GREEK SMALL LETTER ETA WITH TONOS
+	0x07b4:    0x03AF, // XK_Greek_iotaaccent:	GREEK SMALL LETTER IOTA WITH TONOS
+	0x07b5:    0x03CA, // XK_Greek_iotadieresis:	GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x07b6:    0x0390, // XK_Greek_iotaaccentdieresis:	GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x07b7:    0x03CC, // XK_Greek_omicronaccent:	GREEK SMALL LETTER OMICRON WITH TONOS
+	0x07b8:    0x03CD, // XK_Greek_upsilonaccent:	GREEK SMALL LETTER UPSILON WITH TONOS
+	0x07b9:    0x03CB, // XK_Greek_upsilondieresis:	GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x07ba:    0x03B0, // XK_Greek_upsilonaccentdieresis:	GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x07bb:    0x03CE, // XK_Greek_omegaaccent:	GREEK SMALL LETTER OMEGA WITH TONOS
+	0x07c1:    0x0391, // XK_Greek_ALPHA:	GREEK CAPITAL LETTER ALPHA
+	0x07c2:    0x0392, // XK_Greek_BETA:	GREEK CAPITAL LETTER BETA
+	0x07c3:    0x0393, // XK_Greek_GAMMA:	GREEK CAPITAL LETTER GAMMA
+	0x07c4:    0x0394, // XK_Greek_DELTA:	GREEK CAPITAL LETTER DELTA
+	0x07c5:    0x0395, // XK_Greek_EPSILON:	GREEK CAPITAL LETTER EPSILON
+	0x07c6:    0x0396, // XK_Greek_ZETA:	GREEK CAPITAL LETTER ZETA
+	0x07c7:    0x0397, // XK_Greek_ETA:	GREEK CAPITAL LETTER ETA
+	0x07c8:    0x0398, // XK_Greek_THETA:	GREEK CAPITAL LETTER THETA
+	0x07c9:    0x0399, // XK_Greek_IOTA:	GREEK CAPITAL LETTER IOTA
+	0x07ca:    0x039A, // XK_Greek_KAPPA:	GREEK CAPITAL LETTER KAPPA
+	0x07cb:    0x039B, // XK_Greek_LAMDA:	GREEK CAPITAL LETTER LAMDA
+	0x07cc:    0x039C, // XK_Greek_MU:	GREEK CAPITAL LETTER MU
+	0x07cd:    0x039D, // XK_Greek_NU:	GREEK CAPITAL LETTER NU
+	0x07ce:    0x039E, // XK_Greek_XI:	GREEK CAPITAL LETTER XI
+	0x07cf:    0x039F, // XK_Greek_OMICRON:	GREEK CAPITAL LETTER OMICRON
+	0x07d0:    0x03A0, // XK_Greek_PI:	GREEK CAPITAL LETTER PI
+	0x07d1:    0x03A1, // XK_Greek_RHO:	GREEK CAPITAL LETTER RHO
+	0x07d2:    0x03A3, // XK_Greek_SIGMA:	GREEK CAPITAL LETTER SIGMA
+	0x07d4:    0x03A4, // XK_Greek_TAU:	GREEK CAPITAL LETTER TAU
+	0x07d5:    0x03A5, // XK_Greek_UPSILON:	GREEK CAPITAL LETTER UPSILON
+	0x07d6:    0x03A6, // XK_Greek_PHI:	GREEK CAPITAL LETTER PHI
+	0x07d7:    0x03A7, // XK_Greek_CHI:	GREEK CAPITAL LETTER CHI
+	0x07d8:    0x03A8, // XK_Greek_PSI:	GREEK CAPITAL LETTER PSI
+	0x07d9:    0x03A9, // XK_Greek_OMEGA:	GREEK CAPITAL LETTER OMEGA
+	0x07e1:    0x03B1, // XK_Greek_alpha:	GREEK SMALL LETTER ALPHA
+	0x07e2:    0x03B2, // XK_Greek_beta:	GREEK SMALL LETTER BETA
+	0x07e3:    0x03B3, // XK_Greek_gamma:	GREEK SMALL LETTER GAMMA
+	0x07e4:    0x03B4, // XK_Greek_delta:	GREEK SMALL LETTER DELTA
+	0x07e5:    0x03B5, // XK_Greek_epsilon:	GREEK SMALL LETTER EPSILON
+	0x07e6:    0x03B6, // XK_Greek_zeta:	GREEK SMALL LETTER ZETA
+	0x07e7:    0x03B7, // XK_Greek_eta:	GREEK SMALL LETTER ETA
+	0x07e8:    0x03B8, // XK_Greek_theta:	GREEK SMALL LETTER THETA
+	0x07e9:    0x03B9, // XK_Greek_iota:	GREEK SMALL LETTER IOTA
+	0x07ea:    0x03BA, // XK_Greek_kappa:	GREEK SMALL LETTER KAPPA
+	0x07eb:    0x03BB, // XK_Greek_lamda:	GREEK SMALL LETTER LAMDA
+	0x07ec:    0x03BC, // XK_Greek_mu:	GREEK SMALL LETTER MU
+	0x07ed:    0x03BD, // XK_Greek_nu:	GREEK SMALL LETTER NU
+	0x07ee:    0x03BE, // XK_Greek_xi:	GREEK SMALL LETTER XI
+	0x07ef:    0x03BF, // XK_Greek_omicron:	GREEK SMALL LETTER OMICRON
+	0x07f0:    0x03C0, // XK_Greek_pi:	GREEK SMALL LETTER PI
+	0x07f1:    0x03C1, // XK_Greek_rho:	GREEK SMALL LETTER RHO
+	0x07f2:    0x03C3, // XK_Greek_sigma:	GREEK SMALL LETTER SIGMA
+	0x07f3:    0x03C2, // XK_Greek_finalsmallsigma:	GREEK SMALL LETTER FINAL SIGMA
+	0x07f4:    0x03C4, // XK_Greek_tau:	GREEK SMALL LETTER TAU
+	0x07f5:    0x03C5, // XK_Greek_upsilon:	GREEK SMALL LETTER UPSILON
+	0x07f6:    0x03C6, // XK_Greek_phi:	GREEK SMALL LETTER PHI
+	0x07f7:    0x03C7, // XK_Greek_chi:	GREEK SMALL LETTER CHI
+	0x07f8:    0x03C8, // XK_Greek_psi:	GREEK SMALL LETTER PSI
+	0x07f9:    0x03C9, // XK_Greek_omega:	GREEK SMALL LETTER OMEGA
+	0x08a1:    0x23B7, // XK_leftradical:	RADICAL SYMBOL BOTTOM
+	0x08a2:    0x250C, // XK_topleftradical:	BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x08a3:    0x2500, // XK_horizconnector:	BOX DRAWINGS LIGHT HORIZONTAL
+	0x08a4:    0x2320, // XK_topintegral:	TOP HALF INTEGRAL
+	0x08a5:    0x2321, // XK_botintegral:	BOTTOM HALF INTEGRAL
+	0x08a6:    0x2502, // XK_vertconnector:	BOX DRAWINGS LIGHT VERTICAL
+	0x08a7:    0x23A1, // XK_topleftsqbracket:	LEFT SQUARE BRACKET UPPER CORNER
+	0x08a8:    0x23A3, // XK_botleftsqbracket:	LEFT SQUARE BRACKET LOWER CORNER
+	0x08a9:    0x23A4, // XK_toprightsqbracket:	RIGHT SQUARE BRACKET UPPER CORNER
+	0x08aa:    0x23A6, // XK_botrightsqbracket:	RIGHT SQUARE BRACKET LOWER CORNER
+	0x08ab:    0x239B, // XK_topleftparens:	LEFT PARENTHESIS UPPER HOOK
+	0x08ac:    0x239D, // XK_botleftparens:	LEFT PARENTHESIS LOWER HOOK
+	0x08ad:    0x239E, // XK_toprightparens:	RIGHT PARENTHESIS UPPER HOOK
+	0x08ae:    0x23A0, // XK_botrightparens:	RIGHT PARENTHESIS LOWER HOOK
+	0x08af:    0x23A8, // XK_leftmiddlecurlybrace:	LEFT CURLY BRACKET MIDDLE PIECE
+	0x08b0:    0x23AC, // XK_rightmiddlecurlybrace:	RIGHT CURLY BRACKET MIDDLE PIECE
+	0x08bc:    0x2264, // XK_lessthanequal:	LESS-THAN OR EQUAL TO
+	0x08bd:    0x2260, // XK_notequal:	NOT EQUAL TO
+	0x08be:    0x2265, // XK_greaterthanequal:	GREATER-THAN OR EQUAL TO
+	0x08bf:    0x222B, // XK_integral:	INTEGRAL
+	0x08c0:    0x2234, // XK_therefore:	THEREFORE
+	0x08c1:    0x221D, // XK_variation:	PROPORTIONAL TO
+	0x08c2:    0x221E, // XK_infinity:	INFINITY
+	0x08c5:    0x2207, // XK_nabla:	NABLA
+	0x08c8:    0x223C, // XK_approximate:	TILDE OPERATOR
+	0x08c9:    0x2243, // XK_similarequal:	ASYMPTOTICALLY EQUAL TO
+	0x08cd:    0x21D4, // XK_ifonlyif:	LEFT RIGHT DOUBLE ARROW
+	0x08ce:    0x21D2, // XK_implies:	RIGHTWARDS DOUBLE ARROW
+	0x08cf:    0x2261, // XK_identical:	IDENTICAL TO
+	0x08d6:    0x221A, // XK_radical:	SQUARE ROOT
+	0x08da:    0x2282, // XK_includedin:	SUBSET OF
+	0x08db:    0x2283, // XK_includes:	SUPERSET OF
+	0x08dc:    0x2229, // XK_intersection:	INTERSECTION
+	0x08dd:    0x222A, // XK_union:	UNION
+	0x08de:    0x2227, // XK_logicaland:	LOGICAL AND
+	0x08df:    0x2228, // XK_logicalor:	LOGICAL OR
+	0x08ef:    0x2202, // XK_partialderivative:	PARTIAL DIFFERENTIAL
+	0x08f6:    0x0192, // XK_function:	LATIN SMALL LETTER F WITH HOOK
+	0x08fb:    0x2190, // XK_leftarrow:	LEFTWARDS ARROW
+	0x08fc:    0x2191, // XK_uparrow:	UPWARDS ARROW
+	0x08fd:    0x2192, // XK_rightarrow:	RIGHTWARDS ARROW
+	0x08fe:    0x2193, // XK_downarrow:	DOWNWARDS ARROW
+	0x09e0:    0x25C6, // XK_soliddiamond:	BLACK DIAMOND
+	0x09e1:    0x2592, // XK_checkerboard:	MEDIUM SHADE
+	0x09e2:    0x2409, // XK_ht:	SYMBOL FOR HORIZONTAL TABULATION
+	0x09e3:    0x240C, // XK_ff:	SYMBOL FOR FORM FEED
+	0x09e4:    0x240D, // XK_cr:	SYMBOL FOR CARRIAGE RETURN
+	0x09e5:    0x240A, // XK_lf:	SYMBOL FOR LINE FEED
+	0x09e8:    0x2424, // XK_nl:	SYMBOL FOR NEWLINE
+	0x09e9:    0x240B, // XK_vt:	SYMBOL FOR VERTICAL TABULATION
+	0x09ea:    0x2518, // XK_lowrightcorner:	BOX DRAWINGS LIGHT UP AND LEFT
+	0x09eb:    0x2510, // XK_uprightcorner:	BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x09ec:    0x250C, // XK_upleftcorner:	BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x09ed:    0x2514, // XK_lowleftcorner:	BOX DRAWINGS LIGHT UP AND RIGHT
+	0x09ee:    0x253C, // XK_crossinglines:	BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x09ef:    0x23BA, // XK_horizlinescan1:	HORIZONTAL SCAN LINE-1
+	0x09f0:    0x23BB, // XK_horizlinescan3:	HORIZONTAL SCAN LINE-3
+	0x09f1:    0x2500, // XK_horizlinescan5:	BOX DRAWINGS LIGHT HORIZONTAL
+	0x09f2:    0x23BC, // XK_horizlinescan7:	HORIZONTAL SCAN LINE-7
+	0x09f3:    0x23BD, // XK_horizlinescan9:	HORIZONTAL SCAN LINE-9
+	0x09f4:    0x251C, // XK_leftt:	BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x09f5:    0x2524, // XK_rightt:	BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x09f6:    0x2534, // XK_bott:	BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x09f7:    0x252C, // XK_topt:	BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x09f8:    0x2502, // XK_vertbar:	BOX DRAWINGS LIGHT VERTICAL
+	0x0aa1:    0x2003, // XK_emspace:	EM SPACE
+	0x0aa2:    0x2002, // XK_enspace:	EN SPACE
+	0x0aa3:    0x2004, // XK_em3space:	THREE-PER-EM SPACE
+	0x0aa4:    0x2005, // XK_em4space:	FOUR-PER-EM SPACE
+	0x0aa5:    0x2007, // XK_digitspace:	FIGURE SPACE
+	0x0aa6:    0x2008, // XK_punctspace:	PUNCTUATION SPACE
+	0x0aa7:    0x2009, // XK_thinspace:	THIN SPACE
+	0x0aa8:    0x200A, // XK_hairspace:	HAIR SPACE
+	0x0aa9:    0x2014, // XK_emdash:	EM DASH
+	0x0aaa:    0x2013, // XK_endash:	EN DASH
+	0x0aac:    0x2423, // XK_signifblank:	OPEN BOX
+	0x0aae:    0x2026, // XK_ellipsis:	HORIZONTAL ELLIPSIS
+	0x0aaf:    0x2025, // XK_doubbaselinedot:	TWO DOT LEADER
+	0x0ab0:    0x2153, // XK_onethird:	VULGAR FRACTION ONE THIRD
+	0x0ab1:    0x2154, // XK_twothirds:	VULGAR FRACTION TWO THIRDS
+	0x0ab2:    0x2155, // XK_onefifth:	VULGAR FRACTION ONE FIFTH
+	0x0ab3:    0x2156, // XK_twofifths:	VULGAR FRACTION TWO FIFTHS
+	0x0ab4:    0x2157, // XK_threefifths:	VULGAR FRACTION THREE FIFTHS
+	0x0ab5:    0x2158, // XK_fourfifths:	VULGAR FRACTION FOUR FIFTHS
+	0x0ab6:    0x2159, // XK_onesixth:	VULGAR FRACTION ONE SIXTH
+	0x0ab7:    0x215A, // XK_fivesixths:	VULGAR FRACTION FIVE SIXTHS
+	0x0ab8:    0x2105, // XK_careof:	CARE OF
+	0x0abb:    0x2012, // XK_figdash:	FIGURE DASH
+	0x0abc:    0x27E8, // XK_leftanglebracket:	MATHEMATICAL LEFT ANGLE BRACKET
+	0x0abd:    0x002E, // XK_decimalpoint:	FULL STOP
+	0x0abe:    0x27E9, // XK_rightanglebracket:	MATHEMATICAL RIGHT ANGLE BRACKET
+	0x0ac3:    0x215B, // XK_oneeighth:	VULGAR FRACTION ONE EIGHTH
+	0x0ac4:    0x215C, // XK_threeeighths:	VULGAR FRACTION THREE EIGHTHS
+	0x0ac5:    0x215D, // XK_fiveeighths:	VULGAR FRACTION FIVE EIGHTHS
+	0x0ac6:    0x215E, // XK_seveneighths:	VULGAR FRACTION SEVEN EIGHTHS
+	0x0ac9:    0x2122, // XK_trademark:	TRADE MARK SIGN
+	0x0aca:    0x2613, // XK_signaturemark:	SALTIRE
+	0x0acc:    0x25C1, // XK_leftopentriangle:	WHITE LEFT-POINTING TRIANGLE
+	0x0acd:    0x25B7, // XK_rightopentriangle:	WHITE RIGHT-POINTING TRIANGLE
+	0x0ace:    0x25CB, // XK_emopencircle:	WHITE CIRCLE
+	0x0acf:    0x25AF, // XK_emopenrectangle:	WHITE VERTICAL RECTANGLE
+	0x0ad0:    0x2018, // XK_leftsinglequotemark:	LEFT SINGLE QUOTATION MARK
+	0x0ad1:    0x2019, // XK_rightsinglequotemark:	RIGHT SINGLE QUOTATION MARK
+	0x0ad2:    0x201C, // XK_leftdoublequotemark:	LEFT DOUBLE QUOTATION MARK
+	0x0ad3:    0x201D, // XK_rightdoublequotemark:	RIGHT DOUBLE QUOTATION MARK
+	0x0ad4:    0x211E, // XK_prescription:	PRESCRIPTION TAKE
+	0x0ad5:    0x2030, // XK_permille:	PER MILLE SIGN
+	0x0ad6:    0x2032, // XK_minutes:	PRIME
+	0x0ad7:    0x2033, // XK_seconds:	DOUBLE PRIME
+	0x0ad9:    0x271D, // XK_latincross:	LATIN CROSS
+	0x0adb:    0x25AC, // XK_filledrectbullet:	BLACK RECTANGLE
+	0x0adc:    0x25C0, // XK_filledlefttribullet:	BLACK LEFT-POINTING TRIANGLE
+	0x0add:    0x25B6, // XK_filledrighttribullet:	BLACK RIGHT-POINTING TRIANGLE
+	0x0ade:    0x25CF, // XK_emfilledcircle:	BLACK CIRCLE
+	0x0adf:    0x25AE, // XK_emfilledrect:	BLACK VERTICAL RECTANGLE
+	0x0ae0:    0x25E6, // XK_enopencircbullet:	WHITE BULLET
+	0x0ae1:    0x25AB, // XK_enopensquarebullet:	WHITE SMALL SQUARE
+	0x0ae2:    0x25AD, // XK_openrectbullet:	WHITE RECTANGLE
+	0x0ae3:    0x25B3, // XK_opentribulletup:	WHITE UP-POINTING TRIANGLE
+	0x0ae4:    0x25BD, // XK_opentribulletdown:	WHITE DOWN-POINTING TRIANGLE
+	0x0ae5:    0x2606, // XK_openstar:	WHITE STAR
+	0x0ae6:    0x2022, // XK_enfilledcircbullet:	BULLET
+	0x0ae7:    0x25AA, // XK_enfilledsqbullet:	BLACK SMALL SQUARE
+	0x0ae8:    0x25B2, // XK_filledtribulletup:	BLACK UP-POINTING TRIANGLE
+	0x0ae9:    0x25BC, // XK_filledtribulletdown:	BLACK DOWN-POINTING TRIANGLE
+	0x0aea:    0x261C, // XK_leftpointer:	WHITE LEFT POINTING INDEX
+	0x0aeb:    0x261E, // XK_rightpointer:	WHITE RIGHT POINTING INDEX
+	0x0aec:    0x2663, // XK_club:	BLACK CLUB SUIT
+	0x0aed:    0x2666, // XK_diamond:	BLACK DIAMOND SUIT
+	0x0aee:    0x2665, // XK_heart:	BLACK HEART SUIT
+	0x0af0:    0x2720, // XK_maltesecross:	MALTESE CROSS
+	0x0af1:    0x2020, // XK_dagger:	DAGGER
+	0x0af2:    0x2021, // XK_doubledagger:	DOUBLE DAGGER
+	0x0af3:    0x2713, // XK_checkmark:	CHECK MARK
+	0x0af4:    0x2717, // XK_ballotcross:	BALLOT X
+	0x0af5:    0x266F, // XK_musicalsharp:	MUSIC SHARP SIGN
+	0x0af6:    0x266D, // XK_musicalflat:	MUSIC FLAT SIGN
+	0x0af7:    0x2642, // XK_malesymbol:	MALE SIGN
+	0x0af8:    0x2640, // XK_femalesymbol:	FEMALE SIGN
+	0x0af9:    0x260E, // XK_telephone:	BLACK TELEPHONE
+	0x0afa:    0x2315, // XK_telephonerecorder:	TELEPHONE RECORDER
+	0x0afb:    0x2117, // XK_phonographcopyright:	SOUND RECORDING COPYRIGHT
+	0x0afc:    0x2038, // XK_caret:	CARET
+	0x0afd:    0x201A, // XK_singlelowquotemark:	SINGLE LOW-9 QUOTATION MARK
+	0x0afe:    0x201E, // XK_doublelowquotemark:	DOUBLE LOW-9 QUOTATION MARK
+	0x0ba3:    0x003C, // XK_leftcaret:	LESS-THAN SIGN
+	0x0ba6:    0x003E, // XK_rightcaret:	GREATER-THAN SIGN
+	0x0ba8:    0x2228, // XK_downcaret:	LOGICAL OR
+	0x0ba9:    0x2227, // XK_upcaret:	LOGICAL AND
+	0x0bc0:    0x00AF, // XK_overbar:	MACRON
+	0x0bc2:    0x22A4, // XK_downtack:	DOWN TACK
+	0x0bc3:    0x2229, // XK_upshoe:	INTERSECTION
+	0x0bc4:    0x230A, // XK_downstile:	LEFT FLOOR
+	0x0bc6:    0x005F, // XK_underbar:	LOW LINE
+	0x0bca:    0x2218, // XK_jot:	RING OPERATOR
+	0x0bcc:    0x2395, // XK_quad:	APL FUNCTIONAL SYMBOL QUAD
+	0x0bce:    0x22A5, // XK_uptack:	UP TACK
+	0x0bcf:    0x25CB, // XK_circle:	WHITE CIRCLE
+	0x0bd3:    0x2308, // XK_upstile:	LEFT CEILING
+	0x0bd6:    0x222A, // XK_downshoe:	UNION
+	0x0bd8:    0x2283, // XK_rightshoe:	SUPERSET OF
+	0x0bda:    0x2282, // XK_leftshoe:	SUBSET OF
+	0x0bdc:    0x22A3, // XK_lefttack:	LEFT TACK
+	0x0bfc:    0x22A2, // XK_righttack:	RIGHT TACK
+	0x0cdf:    0x2017, // XK_hebrew_doublelowline:	DOUBLE LOW LINE
+	0x0ce0:    0x05D0, // XK_hebrew_aleph:	HEBREW LETTER ALEF
+	0x0ce1:    0x05D1, // XK_hebrew_bet:	HEBREW LETTER BET
+	0x0ce2:    0x05D2, // XK_hebrew_gimel:	HEBREW LETTER GIMEL
+	0x0ce3:    0x05D3, // XK_hebrew_dalet:	HEBREW LETTER DALET
+	0x0ce4:    0x05D4, // XK_hebrew_he:	HEBREW LETTER HE
+	0x0ce5:    0x05D5, // XK_hebrew_waw:	HEBREW LETTER VAV
+	0x0ce6:    0x05D6, // XK_hebrew_zain:	HEBREW LETTER ZAYIN
+	0x0ce7:    0x05D7, // XK_hebrew_chet:	HEBREW LETTER HET
+	0x0ce8:    0x05D8, // XK_hebrew_tet:	HEBREW LETTER TET
+	0x0ce9:    0x05D9, // XK_hebrew_yod:	HEBREW LETTER YOD
+	0x0cea:    0x05DA, // XK_hebrew_finalkaph:	HEBREW LETTER FINAL KAF
+	0x0ceb:    0x05DB, // XK_hebrew_kaph:	HEBREW LETTER KAF
+	0x0cec:    0x05DC, // XK_hebrew_lamed:	HEBREW LETTER LAMED
+	0x0ced:    0x05DD, // XK_hebrew_finalmem:	HEBREW LETTER FINAL MEM
+	0x0cee:    0x05DE, // XK_hebrew_mem:	HEBREW LETTER MEM
+	0x0cef:    0x05DF, // XK_hebrew_finalnun:	HEBREW LETTER FINAL NUN
+	0x0cf0:    0x05E0, // XK_hebrew_nun:	HEBREW LETTER NUN
+	0x0cf1:    0x05E1, // XK_hebrew_samech:	HEBREW LETTER SAMEKH
+	0x0cf2:    0x05E2, // XK_hebrew_ayin:	HEBREW LETTER AYIN
+	0x0cf3:    0x05E3, // XK_hebrew_finalpe:	HEBREW LETTER FINAL PE
+	0x0cf4:    0x05E4, // XK_hebrew_pe:	HEBREW LETTER PE
+	0x0cf5:    0x05E5, // XK_hebrew_finalzade:	HEBREW LETTER FINAL TSADI
+	0x0cf6:    0x05E6, // XK_hebrew_zade:	HEBREW LETTER TSADI
+	0x0cf7:    0x05E7, // XK_hebrew_qoph:	HEBREW LETTER QOF
+	0x0cf8:    0x05E8, // XK_hebrew_resh:	HEBREW LETTER RESH
+	0x0cf9:    0x05E9, // XK_hebrew_shin:	HEBREW LETTER SHIN
+	0x0cfa:    0x05EA, // XK_hebrew_taw:	HEBREW LETTER TAV
+	0x0da1:    0x0E01, // XK_Thai_kokai:	THAI CHARACTER KO KAI
+	0x0da2:    0x0E02, // XK_Thai_khokhai:	THAI CHARACTER KHO KHAI
+	0x0da3:    0x0E03, // XK_Thai_khokhuat:	THAI CHARACTER KHO KHUAT
+	0x0da4:    0x0E04, // XK_Thai_khokhwai:	THAI CHARACTER KHO KHWAI
+	0x0da5:    0x0E05, // XK_Thai_khokhon:	THAI CHARACTER KHO KHON
+	0x0da6:    0x0E06, // XK_Thai_khorakhang:	THAI CHARACTER KHO RAKHANG
+	0x0da7:    0x0E07, // XK_Thai_ngongu:	THAI CHARACTER NGO NGU
+	0x0da8:    0x0E08, // XK_Thai_chochan:	THAI CHARACTER CHO CHAN
+	0x0da9:    0x0E09, // XK_Thai_choching:	THAI CHARACTER CHO CHING
+	0x0daa:    0x0E0A, // XK_Thai_chochang:	THAI CHARACTER CHO CHANG
+	0x0dab:    0x0E0B, // XK_Thai_soso:	THAI CHARACTER SO SO
+	0x0dac:    0x0E0C, // XK_Thai_chochoe:	THAI CHARACTER CHO CHOE
+	0x0dad:    0x0E0D, // XK_Thai_yoying:	THAI CHARACTER YO YING
+	0x0dae:    0x0E0E, // XK_Thai_dochada:	THAI CHARACTER DO CHADA
+	0x0daf:    0x0E0F, // XK_Thai_topatak:	THAI CHARACTER TO PATAK
+	0x0db0:    0x0E10, // XK_Thai_thothan:	THAI CHARACTER THO THAN
+	0x0db1:    0x0E11, // XK_Thai_thonangmontho:	THAI CHARACTER THO NANGMONTHO
+	0x0db2:    0x0E12, // XK_Thai_thophuthao:	THAI CHARACTER THO PHUTHAO
+	0x0db3:    0x0E13, // XK_Thai_nonen:	THAI CHARACTER NO NEN
+	0x0db4:    0x0E14, // XK_Thai_dodek:	THAI CHARACTER DO DEK
+	0x0db5:    0x0E15, // XK_Thai_totao:	THAI CHARACTER TO TAO
+	0x0db6:    0x0E16, // XK_Thai_thothung:	THAI CHARACTER THO THUNG
+	0x0db7:    0x0E17, // XK_Thai_thothahan:	THAI CHARACTER THO THAHAN
+	0x0db8:    0x0E18, // XK_Thai_thothong:	THAI CHARACTER THO THONG
+	0x0db9:    0x0E19, // XK_Thai_nonu:	THAI CHARACTER NO NU
+	0x0dba:    0x0E1A, // XK_Thai_bobaimai:	THAI CHARACTER BO BAIMAI
+	0x0dbb:    0x0E1B, // XK_Thai_popla:	THAI CHARACTER PO PLA
+	0x0dbc:    0x0E1C, // XK_Thai_phophung:	THAI CHARACTER PHO PHUNG
+	0x0dbd:    0x0E1D, // XK_Thai_fofa:	THAI CHARACTER FO FA
+	0x0dbe:    0x0E1E, // XK_Thai_phophan:	THAI CHARACTER PHO PHAN
+	0x0dbf:    0x0E1F, // XK_Thai_fofan:	THAI CHARACTER FO FAN
+	0x0dc0:    0x0E20, // XK_Thai_phosamphao:	THAI CHARACTER PHO SAMPHAO
+	0x0dc1:    0x0E21, // XK_Thai_moma:	THAI CHARACTER MO MA
+	0x0dc2:    0x0E22, // XK_Thai_yoyak:	THAI CHARACTER YO YAK
+	0x0dc3:    0x0E23, // XK_Thai_rorua:	THAI CHARACTER RO RUA
+	0x0dc4:    0x0E24, // XK_Thai_ru:	THAI CHARACTER RU
+	0x0dc5:    0x0E25, // XK_Thai_loling:	THAI CHARACTER LO LING
+	0x0dc6:    0x0E26, // XK_Thai_lu:	THAI CHARACTER LU
+	0x0dc7:    0x0E27, // XK_Thai_wowaen:	THAI CHARACTER WO WAEN
+	0x0dc8:    0x0E28, // XK_Thai_sosala:	THAI CHARACTER SO SALA
+	0x0dc9:    0x0E29, // XK_Thai_sorusi:	THAI CHARACTER SO RUSI
+	0x0dca:    0x0E2A, // XK_Thai_sosua:	THAI CHARACTER SO SUA
+	0x0dcb:    0x0E2B, // XK_Thai_hohip:	THAI CHARACTER HO HIP
+	0x0dcc:    0x0E2C, // XK_Thai_lochula:	THAI CHARACTER LO CHULA
+	0x0dcd:    0x0E2D, // XK_Thai_oang:	THAI CHARACTER O ANG
+	0x0dce:    0x0E2E, // XK_Thai_honokhuk:	THAI CHARACTER HO NOKHUK
+	0x0dcf:    0x0E2F, // XK_Thai_paiyannoi:	THAI CHARACTER PAIYANNOI
+	0x0dd0:    0x0E30, // XK_Thai_saraa:	THAI CHARACTER SARA A
+	0x0dd1:    0x0E31, // XK_Thai_maihanakat:	THAI CHARACTER MAI HAN-AKAT
+	0x0dd2:    0x0E32, // XK_Thai_saraaa:	THAI CHARACTER SARA AA
+	0x0dd3:    0x0E33, // XK_Thai_saraam:	THAI CHARACTER SARA AM
+	0x0dd4:    0x0E34, // XK_Thai_sarai:	THAI CHARACTER SARA I
+	0x0dd5:    0x0E35, // XK_Thai_saraii:	THAI CHARACTER SARA II
+	0x0dd6:    0x0E36, // XK_Thai_saraue:	THAI CHARACTER SARA UE
+	0x0dd7:    0x0E37, // XK_Thai_sarauee:	THAI CHARACTER SARA UEE
+	0x0dd8:    0x0E38, // XK_Thai_sarau:	THAI CHARACTER SARA U
+	0x0dd9:    0x0E39, // XK_Thai_sarauu:	THAI CHARACTER SARA UU
+	0x0dda:    0x0E3A, // XK_Thai_phinthu:	THAI CHARACTER PHINTHU
+	0x0ddf:    0x0E3F, // XK_Thai_baht:	THAI CURRENCY SYMBOL BAHT
+	0x0de0:    0x0E40, // XK_Thai_sarae:	THAI CHARACTER SARA E
+	0x0de1:    0x0E41, // XK_Thai_saraae:	THAI CHARACTER SARA AE
+	0x0de2:    0x0E42, // XK_Thai_sarao:	THAI CHARACTER SARA O
+	0x0de3:    0x0E43, // XK_Thai_saraaimaimuan:	THAI CHARACTER SARA AI MAIMUAN
+	0x0de4:    0x0E44, // XK_Thai_saraaimaimalai:	THAI CHARACTER SARA AI MAIMALAI
+	0x0de5:    0x0E45, // XK_Thai_lakkhangyao:	THAI CHARACTER LAKKHANGYAO
+	0x0de6:    0x0E46, // XK_Thai_maiyamok:	THAI CHARACTER MAIYAMOK
+	0x0de7:    0x0E47, // XK_Thai_maitaikhu:	THAI CHARACTER MAITAIKHU
+	0x0de8:    0x0E48, // XK_Thai_maiek:	THAI CHARACTER MAI EK
+	0x0de9:    0x0E49, // XK_Thai_maitho:	THAI CHARACTER MAI THO
+	0x0dea:    0x0E4A, // XK_Thai_maitri:	THAI CHARACTER MAI TRI
+	0x0deb:    0x0E4B, // XK_Thai_maichattawa:	THAI CHARACTER MAI CHATTAWA
+	0x0dec:    0x0E4C, // XK_Thai_thanthakhat:	THAI CHARACTER THANTHAKHAT
+	0x0ded:    0x0E4D, // XK_Thai_nikhahit:	THAI CHARACTER NIKHAHIT
+	0x0df0:    0x0E50, // XK_Thai_leksun:	THAI DIGIT ZERO
+	0x0df1:    0x0E51, // XK_Thai_leknung:	THAI DIGIT ONE
+	0x0df2:    0x0E52, // XK_Thai_leksong:	THAI DIGIT TWO
+	0x0df3:    0x0E53, // XK_Thai_leksam:	THAI DIGIT THREE
+	0x0df4:    0x0E54, // XK_Thai_leksi:	THAI DIGIT FOUR
+	0x0df5:    0x0E55, // XK_Thai_lekha:	THAI DIGIT FIVE
+	0x0df6:    0x0E56, // XK_Thai_lekhok:	THAI DIGIT SIX
+	0x0df7:    0x0E57, // XK_Thai_lekchet:	THAI DIGIT SEVEN
+	0x0df8:    0x0E58, // XK_Thai_lekpaet:	THAI DIGIT EIGHT
+	0x0df9:    0x0E59, // XK_Thai_lekkao:	THAI DIGIT NINE
+	0x0eff:    0x20A9, // XK_Korean_Won:	WON SIGN
+	0x1000587: 0x0587, // XK_Armenian_ligature_ew:	ARMENIAN SMALL LIGATURE ECH YIWN
+	0x1000589: 0x0589, // XK_Armenian_full_stop:	ARMENIAN FULL STOP
+	0x100055d: 0x055D, // XK_Armenian_separation_mark:	ARMENIAN COMMA
+	0x100058a: 0x058A, // XK_Armenian_hyphen:	ARMENIAN HYPHEN
+	0x100055c: 0x055C, // XK_Armenian_exclam:	ARMENIAN EXCLAMATION MARK
+	0x100055b: 0x055B, // XK_Armenian_accent:	ARMENIAN EMPHASIS MARK
+	0x100055e: 0x055E, // XK_Armenian_question:	ARMENIAN QUESTION MARK
+	0x1000531: 0x0531, // XK_Armenian_AYB:	ARMENIAN CAPITAL LETTER AYB
+	0x1000561: 0x0561, // XK_Armenian_ayb:	ARMENIAN SMALL LETTER AYB
+	0x1000532: 0x0532, // XK_Armenian_BEN:	ARMENIAN CAPITAL LETTER BEN
+	0x1000562: 0x0562, // XK_Armenian_ben:	ARMENIAN SMALL LETTER BEN
+	0x1000533: 0x0533, // XK_Armenian_GIM:	ARMENIAN CAPITAL LETTER GIM
+	0x1000563: 0x0563, // XK_Armenian_gim:	ARMENIAN SMALL LETTER GIM
+	0x1000534: 0x0534, // XK_Armenian_DA:	ARMENIAN CAPITAL LETTER DA
+	0x1000564: 0x0564, // XK_Armenian_da:	ARMENIAN SMALL LETTER DA
+	0x1000535: 0x0535, // XK_Armenian_YECH:	ARMENIAN CAPITAL LETTER ECH
+	0x1000565: 0x0565, // XK_Armenian_yech:	ARMENIAN SMALL LETTER ECH
+	0x1000536: 0x0536, // XK_Armenian_ZA:	ARMENIAN CAPITAL LETTER ZA
+	0x1000566: 0x0566, // XK_Armenian_za:	ARMENIAN SMALL LETTER ZA
+	0x1000537: 0x0537, // XK_Armenian_E:	ARMENIAN CAPITAL LETTER EH
+	0x1000567: 0x0567, // XK_Armenian_e:	ARMENIAN SMALL LETTER EH
+	0x1000538: 0x0538, // XK_Armenian_AT:	ARMENIAN CAPITAL LETTER ET
+	0x1000568: 0x0568, // XK_Armenian_at:	ARMENIAN SMALL LETTER ET
+	0x1000539: 0x0539, // XK_Armenian_TO:	ARMENIAN CAPITAL LETTER TO
+	0x1000569: 0x0569, // XK_Armenian_to:	ARMENIAN SMALL LETTER TO
+	0x100053a: 0x053A, // XK_Armenian_ZHE:	ARMENIAN CAPITAL LETTER ZHE
+	0x100056a: 0x056A, // XK_Armenian_zhe:	ARMENIAN SMALL LETTER ZHE
+	0x100053b: 0x053B, // XK_Armenian_INI:	ARMENIAN CAPITAL LETTER INI
+	0x100056b: 0x056B, // XK_Armenian_ini:	ARMENIAN SMALL LETTER INI
+	0x100053c: 0x053C, // XK_Armenian_LYUN:	ARMENIAN CAPITAL LETTER LIWN
+	0x100056c: 0x056C, // XK_Armenian_lyun:	ARMENIAN SMALL LETTER LIWN
+	0x100053d: 0x053D, // XK_Armenian_KHE:	ARMENIAN CAPITAL LETTER XEH
+	0x100056d: 0x056D, // XK_Armenian_khe:	ARMENIAN SMALL LETTER XEH
+	0x100053e: 0x053E, // XK_Armenian_TSA:	ARMENIAN CAPITAL LETTER CA
+	0x100056e: 0x056E, // XK_Armenian_tsa:	ARMENIAN SMALL LETTER CA
+	0x100053f: 0x053F, // XK_Armenian_KEN:	ARMENIAN CAPITAL LETTER KEN
+	0x100056f: 0x056F, // XK_Armenian_ken:	ARMENIAN SMALL LETTER KEN
+	0x1000540: 0x0540, // XK_Armenian_HO:	ARMENIAN CAPITAL LETTER HO
+	0x1000570: 0x0570, // XK_Armenian_ho:	ARMENIAN SMALL LETTER HO
+	0x1000541: 0x0541, // XK_Armenian_DZA:	ARMENIAN CAPITAL LETTER JA
+	0x1000571: 0x0571, // XK_Armenian_dza:	ARMENIAN SMALL LETTER JA
+	0x1000542: 0x0542, // XK_Armenian_GHAT:	ARMENIAN CAPITAL LETTER GHAD
+	0x1000572: 0x0572, // XK_Armenian_ghat:	ARMENIAN SMALL LETTER GHAD
+	0x1000543: 0x0543, // XK_Armenian_TCHE:	ARMENIAN CAPITAL LETTER CHEH
+	0x1000573: 0x0573, // XK_Armenian_tche:	ARMENIAN SMALL LETTER CHEH
+	0x1000544: 0x0544, // XK_Armenian_MEN:	ARMENIAN CAPITAL LETTER MEN
+	0x1000574: 0x0574, // XK_Armenian_men:	ARMENIAN SMALL LETTER MEN
+	0x1000545: 0x0545, // XK_Armenian_HI:	ARMENIAN CAPITAL LETTER YI
+	0x1000575: 0x0575, // XK_Armenian_hi:	ARMENIAN SMALL LETTER YI
+	0x1000546: 0x0546, // XK_Armenian_NU:	ARMENIAN CAPITAL LETTER NOW
+	0x1000576: 0x0576, // XK_Armenian_nu:	ARMENIAN SMALL LETTER NOW
+	0x1000547: 0x0547, // XK_Armenian_SHA:	ARMENIAN CAPITAL LETTER SHA
+	0x1000577: 0x0577, // XK_Armenian_sha:	ARMENIAN SMALL LETTER SHA
+	0x1000548: 0x0548, // XK_Armenian_VO:	ARMENIAN CAPITAL LETTER VO
+	0x1000578: 0x0578, // XK_Armenian_vo:	ARMENIAN SMALL LETTER VO
+	0x1000549: 0x0549, // XK_Armenian_CHA:	ARMENIAN CAPITAL LETTER CHA
+	0x1000579: 0x0579, // XK_Armenian_cha:	ARMENIAN SMALL LETTER CHA
+	0x100054a: 0x054A, // XK_Armenian_PE:	ARMENIAN CAPITAL LETTER PEH
+	0x100057a: 0x057A, // XK_Armenian_pe:	ARMENIAN SMALL LETTER PEH
+	0x100054b: 0x054B, // XK_Armenian_JE:	ARMENIAN CAPITAL LETTER JHEH
+	0x100057b: 0x057B, // XK_Armenian_je:	ARMENIAN SMALL LETTER JHEH
+	0x100054c: 0x054C, // XK_Armenian_RA:	ARMENIAN CAPITAL LETTER RA
+	0x100057c: 0x057C, // XK_Armenian_ra:	ARMENIAN SMALL LETTER RA
+	0x100054d: 0x054D, // XK_Armenian_SE:	ARMENIAN CAPITAL LETTER SEH
+	0x100057d: 0x057D, // XK_Armenian_se:	ARMENIAN SMALL LETTER SEH
+	0x100054e: 0x054E, // XK_Armenian_VEV:	ARMENIAN CAPITAL LETTER VEW
+	0x100057e: 0x057E, // XK_Armenian_vev:	ARMENIAN SMALL LETTER VEW
+	0x100054f: 0x054F, // XK_Armenian_TYUN:	ARMENIAN CAPITAL LETTER TIWN
+	0x100057f: 0x057F, // XK_Armenian_tyun:	ARMENIAN SMALL LETTER TIWN
+	0x1000550: 0x0550, // XK_Armenian_RE:	ARMENIAN CAPITAL LETTER REH
+	0x1000580: 0x0580, // XK_Armenian_re:	ARMENIAN SMALL LETTER REH
+	0x1000551: 0x0551, // XK_Armenian_TSO:	ARMENIAN CAPITAL LETTER CO
+	0x1000581: 0x0581, // XK_Armenian_tso:	ARMENIAN SMALL LETTER CO
+	0x1000552: 0x0552, // XK_Armenian_VYUN:	ARMENIAN CAPITAL LETTER YIWN
+	0x1000582: 0x0582, // XK_Armenian_vyun:	ARMENIAN SMALL LETTER YIWN
+	0x1000553: 0x0553, // XK_Armenian_PYUR:	ARMENIAN CAPITAL LETTER PIWR
+	0x1000583: 0x0583, // XK_Armenian_pyur:	ARMENIAN SMALL LETTER PIWR
+	0x1000554: 0x0554, // XK_Armenian_KE:	ARMENIAN CAPITAL LETTER KEH
+	0x1000584: 0x0584, // XK_Armenian_ke:	ARMENIAN SMALL LETTER KEH
+	0x1000555: 0x0555, // XK_Armenian_O:	ARMENIAN CAPITAL LETTER OH
+	0x1000585: 0x0585, // XK_Armenian_o:	ARMENIAN SMALL LETTER OH
+	0x1000556: 0x0556, // XK_Armenian_FE:	ARMENIAN CAPITAL LETTER FEH
+	0x1000586: 0x0586, // XK_Armenian_fe:	ARMENIAN SMALL LETTER FEH
+	0x100055a: 0x055A, // XK_Armenian_apostrophe:	ARMENIAN APOSTROPHE
+	0x10010d0: 0x10D0, // XK_Georgian_an:	GEORGIAN LETTER AN
+	0x10010d1: 0x10D1, // XK_Georgian_ban:	GEORGIAN LETTER BAN
+	0x10010d2: 0x10D2, // XK_Georgian_gan:	GEORGIAN LETTER GAN
+	0x10010d3: 0x10D3, // XK_Georgian_don:	GEORGIAN LETTER DON
+	0x10010d4: 0x10D4, // XK_Georgian_en:	GEORGIAN LETTER EN
+	0x10010d5: 0x10D5, // XK_Georgian_vin:	GEORGIAN LETTER VIN
+	0x10010d6: 0x10D6, // XK_Georgian_zen:	GEORGIAN LETTER ZEN
+	0x10010d7: 0x10D7, // XK_Georgian_tan:	GEORGIAN LETTER TAN
+	0x10010d8: 0x10D8, // XK_Georgian_in:	GEORGIAN LETTER IN
+	0x10010d9: 0x10D9, // XK_Georgian_kan:	GEORGIAN LETTER KAN
+	0x10010da: 0x10DA, // XK_Georgian_las:	GEORGIAN LETTER LAS
+	0x10010db: 0x10DB, // XK_Georgian_man:	GEORGIAN LETTER MAN
+	0x10010dc: 0x10DC, // XK_Georgian_nar:	GEORGIAN LETTER NAR
+	0x10010dd: 0x10DD, // XK_Georgian_on:	GEORGIAN LETTER ON
+	0x10010de: 0x10DE, // XK_Georgian_par:	GEORGIAN LETTER PAR
+	0x10010df: 0x10DF, // XK_Georgian_zhar:	GEORGIAN LETTER ZHAR
+	0x10010e0: 0x10E0, // XK_Georgian_rae:	GEORGIAN LETTER RAE
+	0x10010e1: 0x10E1, // XK_Georgian_san:	GEORGIAN LETTER SAN
+	0x10010e2: 0x10E2, // XK_Georgian_tar:	GEORGIAN LETTER TAR
+	0x10010e3: 0x10E3, // XK_Georgian_un:	GEORGIAN LETTER UN
+	0x10010e4: 0x10E4, // XK_Georgian_phar:	GEORGIAN LETTER PHAR
+	0x10010e5: 0x10E5, // XK_Georgian_khar:	GEORGIAN LETTER KHAR
+	0x10010e6: 0x10E6, // XK_Georgian_ghan:	GEORGIAN LETTER GHAN
+	0x10010e7: 0x10E7, // XK_Georgian_qar:	GEORGIAN LETTER QAR
+	0x10010e8: 0x10E8, // XK_Georgian_shin:	GEORGIAN LETTER SHIN
+	0x10010e9: 0x10E9, // XK_Georgian_chin:	GEORGIAN LETTER CHIN
+	0x10010ea: 0x10EA, // XK_Georgian_can:	GEORGIAN LETTER CAN
+	0x10010eb: 0x10EB, // XK_Georgian_jil:	GEORGIAN LETTER JIL
+	0x10010ec: 0x10EC, // XK_Georgian_cil:	GEORGIAN LETTER CIL
+	0x10010ed: 0x10ED, // XK_Georgian_char:	GEORGIAN LETTER CHAR
+	0x10010ee: 0x10EE, // XK_Georgian_xan:	GEORGIAN LETTER XAN
+	0x10010ef: 0x10EF, // XK_Georgian_jhan:	GEORGIAN LETTER JHAN
+	0x10010f0: 0x10F0, // XK_Georgian_hae:	GEORGIAN LETTER HAE
+	0x10010f1: 0x10F1, // XK_Georgian_he:	GEORGIAN LETTER HE
+	0x10010f2: 0x10F2, // XK_Georgian_hie:	GEORGIAN LETTER HIE
+	0x10010f3: 0x10F3, // XK_Georgian_we:	GEORGIAN LETTER WE
+	0x10010f4: 0x10F4, // XK_Georgian_har:	GEORGIAN LETTER HAR
+	0x10010f5: 0x10F5, // XK_Georgian_hoe:	GEORGIAN LETTER HOE
+	0x10010f6: 0x10F6, // XK_Georgian_fi:	GEORGIAN LETTER FI
+	0x1001e8a: 0x1E8A, // XK_Xabovedot:	LATIN CAPITAL LETTER X WITH DOT ABOVE
+	0x100012c: 0x012C, // XK_Ibreve:	LATIN CAPITAL LETTER I WITH BREVE
+	0x10001b5: 0x01B5, // XK_Zstroke:	LATIN CAPITAL LETTER Z WITH STROKE
+	0x10001e6: 0x01E6, // XK_Gcaron:	LATIN CAPITAL LETTER G WITH CARON
+	0x10001d1: 0x01D2, // XK_Ocaron:	LATIN CAPITAL LETTER O WITH CARON
+	0x100019f: 0x019F, // XK_Obarred:	LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+	0x1001e8b: 0x1E8B, // XK_xabovedot:	LATIN SMALL LETTER X WITH DOT ABOVE
+	0x100012d: 0x012D, // XK_ibreve:	LATIN SMALL LETTER I WITH BREVE
+	0x10001b6: 0x01B6, // XK_zstroke:	LATIN SMALL LETTER Z WITH STROKE
+	0x10001e7: 0x01E7, // XK_gcaron:	LATIN SMALL LETTER G WITH CARON
+	0x10001d2: 0x01D2, // XK_ocaron:	LATIN SMALL LETTER O WITH CARON
+	0x1000275: 0x0275, // XK_obarred:	LATIN SMALL LETTER BARRED O
+	0x100018f: 0x018F, // XK_SCHWA:	LATIN CAPITAL LETTER SCHWA
+	0x1000259: 0x0259, // XK_schwa:	LATIN SMALL LETTER SCHWA
+	0x10001b7: 0x01B7, // XK_EZH:	LATIN CAPITAL LETTER EZH
+	0x1000292: 0x0292, // XK_ezh:	LATIN SMALL LETTER EZH
+	0x1001e36: 0x1E36, // XK_Lbelowdot:	LATIN CAPITAL LETTER L WITH DOT BELOW
+	0x1001e37: 0x1E37, // XK_lbelowdot:	LATIN SMALL LETTER L WITH DOT BELOW
+	0x1001ea0: 0x1EA0, // XK_Abelowdot:	LATIN CAPITAL LETTER A WITH DOT BELOW
+	0x1001ea1: 0x1EA1, // XK_abelowdot:	LATIN SMALL LETTER A WITH DOT BELOW
+	0x1001ea2: 0x1EA2, // XK_Ahook:	LATIN CAPITAL LETTER A WITH HOOK ABOVE
+	0x1001ea3: 0x1EA3, // XK_ahook:	LATIN SMALL LETTER A WITH HOOK ABOVE
+	0x1001ea4: 0x1EA4, // XK_Acircumflexacute:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+	0x1001ea5: 0x1EA5, // XK_acircumflexacute:	LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+	0x1001ea6: 0x1EA6, // XK_Acircumflexgrave:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+	0x1001ea7: 0x1EA7, // XK_acircumflexgrave:	LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+	0x1001ea8: 0x1EA8, // XK_Acircumflexhook:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001ea9: 0x1EA9, // XK_acircumflexhook:	LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001eaa: 0x1EAA, // XK_Acircumflextilde:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+	0x1001eab: 0x1EAB, // XK_acircumflextilde:	LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+	0x1001eac: 0x1EAC, // XK_Acircumflexbelowdot:	LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+	0x1001ead: 0x1EAD, // XK_acircumflexbelowdot:	LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+	0x1001eae: 0x1EAE, // XK_Abreveacute:	LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+	0x1001eaf: 0x1EAF, // XK_abreveacute:	LATIN SMALL LETTER A WITH BREVE AND ACUTE
+	0x1001eb0: 0x1EB0, // XK_Abrevegrave:	LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+	0x1001eb1: 0x1EB1, // XK_abrevegrave:	LATIN SMALL LETTER A WITH BREVE AND GRAVE
+	0x1001eb2: 0x1EB2, // XK_Abrevehook:	LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+	0x1001eb3: 0x1EB3, // XK_abrevehook:	LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+	0x1001eb4: 0x1EB4, // XK_Abrevetilde:	LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+	0x1001eb5: 0x1EB5, // XK_abrevetilde:	LATIN SMALL LETTER A WITH BREVE AND TILDE
+	0x1001eb6: 0x1EB6, // XK_Abrevebelowdot:	LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+	0x1001eb7: 0x1EB7, // XK_abrevebelowdot:	LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+	0x1001eb8: 0x1EB8, // XK_Ebelowdot:	LATIN CAPITAL LETTER E WITH DOT BELOW
+	0x1001eb9: 0x1EB9, // XK_ebelowdot:	LATIN SMALL LETTER E WITH DOT BELOW
+	0x1001eba: 0x1EBA, // XK_Ehook:	LATIN CAPITAL LETTER E WITH HOOK ABOVE
+	0x1001ebb: 0x1EBB, // XK_ehook:	LATIN SMALL LETTER E WITH HOOK ABOVE
+	0x1001ebc: 0x1EBC, // XK_Etilde:	LATIN CAPITAL LETTER E WITH TILDE
+	0x1001ebd: 0x1EBD, // XK_etilde:	LATIN SMALL LETTER E WITH TILDE
+	0x1001ebe: 0x1EBE, // XK_Ecircumflexacute:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+	0x1001ebf: 0x1EBF, // XK_ecircumflexacute:	LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+	0x1001ec0: 0x1EC0, // XK_Ecircumflexgrave:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+	0x1001ec1: 0x1EC1, // XK_ecircumflexgrave:	LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+	0x1001ec2: 0x1EC2, // XK_Ecircumflexhook:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001ec3: 0x1EC3, // XK_ecircumflexhook:	LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001ec4: 0x1EC4, // XK_Ecircumflextilde:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+	0x1001ec5: 0x1EC5, // XK_ecircumflextilde:	LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+	0x1001ec6: 0x1EC6, // XK_Ecircumflexbelowdot:	LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+	0x1001ec7: 0x1EC7, // XK_ecircumflexbelowdot:	LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+	0x1001ec8: 0x1EC8, // XK_Ihook:	LATIN CAPITAL LETTER I WITH HOOK ABOVE
+	0x1001ec9: 0x1EC9, // XK_ihook:	LATIN SMALL LETTER I WITH HOOK ABOVE
+	0x1001eca: 0x1ECA, // XK_Ibelowdot:	LATIN CAPITAL LETTER I WITH DOT BELOW
+	0x1001ecb: 0x1ECB, // XK_ibelowdot:	LATIN SMALL LETTER I WITH DOT BELOW
+	0x1001ecc: 0x1ECC, // XK_Obelowdot:	LATIN CAPITAL LETTER O WITH DOT BELOW
+	0x1001ecd: 0x1ECD, // XK_obelowdot:	LATIN SMALL LETTER O WITH DOT BELOW
+	0x1001ece: 0x1ECE, // XK_Ohook:	LATIN CAPITAL LETTER O WITH HOOK ABOVE
+	0x1001ecf: 0x1ECF, // XK_ohook:	LATIN SMALL LETTER O WITH HOOK ABOVE
+	0x1001ed0: 0x1ED0, // XK_Ocircumflexacute:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+	0x1001ed1: 0x1ED1, // XK_ocircumflexacute:	LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+	0x1001ed2: 0x1ED2, // XK_Ocircumflexgrave:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+	0x1001ed3: 0x1ED3, // XK_ocircumflexgrave:	LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+	0x1001ed4: 0x1ED4, // XK_Ocircumflexhook:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001ed5: 0x1ED5, // XK_ocircumflexhook:	LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+	0x1001ed6: 0x1ED6, // XK_Ocircumflextilde:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+	0x1001ed7: 0x1ED7, // XK_ocircumflextilde:	LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+	0x1001ed8: 0x1ED8, // XK_Ocircumflexbelowdot:	LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+	0x1001ed9: 0x1ED9, // XK_ocircumflexbelowdot:	LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+	0x1001eda: 0x1EDA, // XK_Ohornacute:	LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+	0x1001edb: 0x1EDB, // XK_ohornacute:	LATIN SMALL LETTER O WITH HORN AND ACUTE
+	0x1001edc: 0x1EDC, // XK_Ohorngrave:	LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+	0x1001edd: 0x1EDD, // XK_ohorngrave:	LATIN SMALL LETTER O WITH HORN AND GRAVE
+	0x1001ede: 0x1EDE, // XK_Ohornhook:	LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+	0x1001edf: 0x1EDF, // XK_ohornhook:	LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+	0x1001ee0: 0x1EE0, // XK_Ohorntilde:	LATIN CAPITAL LETTER O WITH HORN AND TILDE
+	0x1001ee1: 0x1EE1, // XK_ohorntilde:	LATIN SMALL LETTER O WITH HORN AND TILDE
+	0x1001ee2: 0x1EE2, // XK_Ohornbelowdot:	LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+	0x1001ee3: 0x1EE3, // XK_ohornbelowdot:	LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+	0x1001ee4: 0x1EE4, // XK_Ubelowdot:	LATIN CAPITAL LETTER U WITH DOT BELOW
+	0x1001ee5: 0x1EE5, // XK_ubelowdot:	LATIN SMALL LETTER U WITH DOT BELOW
+	0x1001ee6: 0x1EE6, // XK_Uhook:	LATIN CAPITAL LETTER U WITH HOOK ABOVE
+	0x1001ee7: 0x1EE7, // XK_uhook:	LATIN SMALL LETTER U WITH HOOK ABOVE
+	0x1001ee8: 0x1EE8, // XK_Uhornacute:	LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+	0x1001ee9: 0x1EE9, // XK_uhornacute:	LATIN SMALL LETTER U WITH HORN AND ACUTE
+	0x1001eea: 0x1EEA, // XK_Uhorngrave:	LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+	0x1001eeb: 0x1EEB, // XK_uhorngrave:	LATIN SMALL LETTER U WITH HORN AND GRAVE
+	0x1001eec: 0x1EEC, // XK_Uhornhook:	LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+	0x1001eed: 0x1EED, // XK_uhornhook:	LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+	0x1001eee: 0x1EEE, // XK_Uhorntilde:	LATIN CAPITAL LETTER U WITH HORN AND TILDE
+	0x1001eef: 0x1EEF, // XK_uhorntilde:	LATIN SMALL LETTER U WITH HORN AND TILDE
+	0x1001ef0: 0x1EF0, // XK_Uhornbelowdot:	LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+	0x1001ef1: 0x1EF1, // XK_uhornbelowdot:	LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+	0x1001ef4: 0x1EF4, // XK_Ybelowdot:	LATIN CAPITAL LETTER Y WITH DOT BELOW
+	0x1001ef5: 0x1EF5, // XK_ybelowdot:	LATIN SMALL LETTER Y WITH DOT BELOW
+	0x1001ef6: 0x1EF6, // XK_Yhook:	LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+	0x1001ef7: 0x1EF7, // XK_yhook:	LATIN SMALL LETTER Y WITH HOOK ABOVE
+	0x1001ef8: 0x1EF8, // XK_Ytilde:	LATIN CAPITAL LETTER Y WITH TILDE
+	0x1001ef9: 0x1EF9, // XK_ytilde:	LATIN SMALL LETTER Y WITH TILDE
+	0x10001a0: 0x01A0, // XK_Ohorn:	LATIN CAPITAL LETTER O WITH HORN
+	0x10001a1: 0x01A1, // XK_ohorn:	LATIN SMALL LETTER O WITH HORN
+	0x10001af: 0x01AF, // XK_Uhorn:	LATIN CAPITAL LETTER U WITH HORN
+	0x10001b0: 0x01B0, // XK_uhorn:	LATIN SMALL LETTER U WITH HORN
+	0x10020a0: 0x20A0, // XK_EcuSign:	EURO-CURRENCY SIGN
+	0x10020a1: 0x20A1, // XK_ColonSign:	COLON SIGN
+	0x10020a2: 0x20A2, // XK_CruzeiroSign:	CRUZEIRO SIGN
+	0x10020a3: 0x20A3, // XK_FFrancSign:	FRENCH FRANC SIGN
+	0x10020a4: 0x20A4, // XK_LiraSign:	LIRA SIGN
+	0x10020a5: 0x20A5, // XK_MillSign:	MILL SIGN
+	0x10020a6: 0x20A6, // XK_NairaSign:	NAIRA SIGN
+	0x10020a7: 0x20A7, // XK_PesetaSign:	PESETA SIGN
+	0x10020a8: 0x20A8, // XK_RupeeSign:	RUPEE SIGN
+	0x10020a9: 0x20A9, // XK_WonSign:	WON SIGN
+	0x10020aa: 0x20AA, // XK_NewSheqelSign:	NEW SHEQEL SIGN
+	0x10020ab: 0x20AB, // XK_DongSign:	DONG SIGN
+	0x20ac:    0x20AC, // XK_EuroSign:	EURO SIGN
+	0x1002070: 0x2070, // XK_zerosuperior:	SUPERSCRIPT ZERO
+	0x1002074: 0x2074, // XK_foursuperior:	SUPERSCRIPT FOUR
+	0x1002075: 0x2075, // XK_fivesuperior:	SUPERSCRIPT FIVE
+	0x1002076: 0x2076, // XK_sixsuperior:	SUPERSCRIPT SIX
+	0x1002077: 0x2077, // XK_sevensuperior:	SUPERSCRIPT SEVEN
+	0x1002078: 0x2078, // XK_eightsuperior:	SUPERSCRIPT EIGHT
+	0x1002079: 0x2079, // XK_ninesuperior:	SUPERSCRIPT NINE
+	0x1002080: 0x2080, // XK_zerosubscript:	SUBSCRIPT ZERO
+	0x1002081: 0x2081, // XK_onesubscript:	SUBSCRIPT ONE
+	0x1002082: 0x2082, // XK_twosubscript:	SUBSCRIPT TWO
+	0x1002083: 0x2083, // XK_threesubscript:	SUBSCRIPT THREE
+	0x1002084: 0x2084, // XK_foursubscript:	SUBSCRIPT FOUR
+	0x1002085: 0x2085, // XK_fivesubscript:	SUBSCRIPT FIVE
+	0x1002086: 0x2086, // XK_sixsubscript:	SUBSCRIPT SIX
+	0x1002087: 0x2087, // XK_sevensubscript:	SUBSCRIPT SEVEN
+	0x1002088: 0x2088, // XK_eightsubscript:	SUBSCRIPT EIGHT
+	0x1002089: 0x2089, // XK_ninesubscript:	SUBSCRIPT NINE
+	0x1002202: 0x2202, // XK_partdifferential:	PARTIAL DIFFERENTIAL
+	0x1002205: 0x2205, // XK_emptyset:	NULL SET
+	0x1002208: 0x2208, // XK_elementof:	ELEMENT OF
+	0x1002209: 0x2209, // XK_notelementof:	NOT AN ELEMENT OF
+	0x100220B: 0x220B, // XK_containsas:	CONTAINS AS MEMBER
+	0x100221A: 0x221A, // XK_squareroot:	SQUARE ROOT
+	0x100221B: 0x221B, // XK_cuberoot:	CUBE ROOT
+	0x100221C: 0x221C, // XK_fourthroot:	FOURTH ROOT
+	0x100222C: 0x222C, // XK_dintegral:	DOUBLE INTEGRAL
+	0x100222D: 0x222D, // XK_tintegral:	TRIPLE INTEGRAL
+	0x1002235: 0x2235, // XK_because:	BECAUSE
+	0x1002248: 0x2245, // XK_approxeq:	ALMOST EQUAL TO
+	0x1002247: 0x2247, // XK_notapproxeq:	NOT ALMOST EQUAL TO
+	0x1002262: 0x2262, // XK_notidentical:	NOT IDENTICAL TO
+	0x1002263: 0x2263, // XK_stricteq:	STRICTLY EQUIVALENT TO
+	0x1002800: 0x2800, // XK_braille_blank:	BRAILLE PATTERN BLANK
+	0x1002801: 0x2801, // XK_braille_dots_1:	BRAILLE PATTERN DOTS-1
+	0x1002802: 0x2802, // XK_braille_dots_2:	BRAILLE PATTERN DOTS-2
+	0x1002803: 0x2803, // XK_braille_dots_12:	BRAILLE PATTERN DOTS-12
+	0x1002804: 0x2804, // XK_braille_dots_3:	BRAILLE PATTERN DOTS-3
+	0x1002805: 0x2805, // XK_braille_dots_13:	BRAILLE PATTERN DOTS-13
+	0x1002806: 0x2806, // XK_braille_dots_23:	BRAILLE PATTERN DOTS-23
+	0x1002807: 0x2807, // XK_braille_dots_123:	BRAILLE PATTERN DOTS-123
+	0x1002808: 0x2808, // XK_braille_dots_4:	BRAILLE PATTERN DOTS-4
+	0x1002809: 0x2809, // XK_braille_dots_14:	BRAILLE PATTERN DOTS-14
+	0x100280a: 0x280a, // XK_braille_dots_24:	BRAILLE PATTERN DOTS-24
+	0x100280b: 0x280b, // XK_braille_dots_124:	BRAILLE PATTERN DOTS-124
+	0x100280c: 0x280c, // XK_braille_dots_34:	BRAILLE PATTERN DOTS-34
+	0x100280d: 0x280d, // XK_braille_dots_134:	BRAILLE PATTERN DOTS-134
+	0x100280e: 0x280e, // XK_braille_dots_234:	BRAILLE PATTERN DOTS-234
+	0x100280f: 0x280f, // XK_braille_dots_1234:	BRAILLE PATTERN DOTS-1234
+	0x1002810: 0x2810, // XK_braille_dots_5:	BRAILLE PATTERN DOTS-5
+	0x1002811: 0x2811, // XK_braille_dots_15:	BRAILLE PATTERN DOTS-15
+	0x1002812: 0x2812, // XK_braille_dots_25:	BRAILLE PATTERN DOTS-25
+	0x1002813: 0x2813, // XK_braille_dots_125:	BRAILLE PATTERN DOTS-125
+	0x1002814: 0x2814, // XK_braille_dots_35:	BRAILLE PATTERN DOTS-35
+	0x1002815: 0x2815, // XK_braille_dots_135:	BRAILLE PATTERN DOTS-135
+	0x1002816: 0x2816, // XK_braille_dots_235:	BRAILLE PATTERN DOTS-235
+	0x1002817: 0x2817, // XK_braille_dots_1235:	BRAILLE PATTERN DOTS-1235
+	0x1002818: 0x2818, // XK_braille_dots_45:	BRAILLE PATTERN DOTS-45
+	0x1002819: 0x2819, // XK_braille_dots_145:	BRAILLE PATTERN DOTS-145
+	0x100281a: 0x281a, // XK_braille_dots_245:	BRAILLE PATTERN DOTS-245
+	0x100281b: 0x281b, // XK_braille_dots_1245:	BRAILLE PATTERN DOTS-1245
+	0x100281c: 0x281c, // XK_braille_dots_345:	BRAILLE PATTERN DOTS-345
+	0x100281d: 0x281d, // XK_braille_dots_1345:	BRAILLE PATTERN DOTS-1345
+	0x100281e: 0x281e, // XK_braille_dots_2345:	BRAILLE PATTERN DOTS-2345
+	0x100281f: 0x281f, // XK_braille_dots_12345:	BRAILLE PATTERN DOTS-12345
+	0x1002820: 0x2820, // XK_braille_dots_6:	BRAILLE PATTERN DOTS-6
+	0x1002821: 0x2821, // XK_braille_dots_16:	BRAILLE PATTERN DOTS-16
+	0x1002822: 0x2822, // XK_braille_dots_26:	BRAILLE PATTERN DOTS-26
+	0x1002823: 0x2823, // XK_braille_dots_126:	BRAILLE PATTERN DOTS-126
+	0x1002824: 0x2824, // XK_braille_dots_36:	BRAILLE PATTERN DOTS-36
+	0x1002825: 0x2825, // XK_braille_dots_136:	BRAILLE PATTERN DOTS-136
+	0x1002826: 0x2826, // XK_braille_dots_236:	BRAILLE PATTERN DOTS-236
+	0x1002827: 0x2827, // XK_braille_dots_1236:	BRAILLE PATTERN DOTS-1236
+	0x1002828: 0x2828, // XK_braille_dots_46:	BRAILLE PATTERN DOTS-46
+	0x1002829: 0x2829, // XK_braille_dots_146:	BRAILLE PATTERN DOTS-146
+	0x100282a: 0x282a, // XK_braille_dots_246:	BRAILLE PATTERN DOTS-246
+	0x100282b: 0x282b, // XK_braille_dots_1246:	BRAILLE PATTERN DOTS-1246
+	0x100282c: 0x282c, // XK_braille_dots_346:	BRAILLE PATTERN DOTS-346
+	0x100282d: 0x282d, // XK_braille_dots_1346:	BRAILLE PATTERN DOTS-1346
+	0x100282e: 0x282e, // XK_braille_dots_2346:	BRAILLE PATTERN DOTS-2346
+	0x100282f: 0x282f, // XK_braille_dots_12346:	BRAILLE PATTERN DOTS-12346
+	0x1002830: 0x2830, // XK_braille_dots_56:	BRAILLE PATTERN DOTS-56
+	0x1002831: 0x2831, // XK_braille_dots_156:	BRAILLE PATTERN DOTS-156
+	0x1002832: 0x2832, // XK_braille_dots_256:	BRAILLE PATTERN DOTS-256
+	0x1002833: 0x2833, // XK_braille_dots_1256:	BRAILLE PATTERN DOTS-1256
+	0x1002834: 0x2834, // XK_braille_dots_356:	BRAILLE PATTERN DOTS-356
+	0x1002835: 0x2835, // XK_braille_dots_1356:	BRAILLE PATTERN DOTS-1356
+	0x1002836: 0x2836, // XK_braille_dots_2356:	BRAILLE PATTERN DOTS-2356
+	0x1002837: 0x2837, // XK_braille_dots_12356:	BRAILLE PATTERN DOTS-12356
+	0x1002838: 0x2838, // XK_braille_dots_456:	BRAILLE PATTERN DOTS-456
+	0x1002839: 0x2839, // XK_braille_dots_1456:	BRAILLE PATTERN DOTS-1456
+	0x100283a: 0x283a, // XK_braille_dots_2456:	BRAILLE PATTERN DOTS-2456
+	0x100283b: 0x283b, // XK_braille_dots_12456:	BRAILLE PATTERN DOTS-12456
+	0x100283c: 0x283c, // XK_braille_dots_3456:	BRAILLE PATTERN DOTS-3456
+	0x100283d: 0x283d, // XK_braille_dots_13456:	BRAILLE PATTERN DOTS-13456
+	0x100283e: 0x283e, // XK_braille_dots_23456:	BRAILLE PATTERN DOTS-23456
+	0x100283f: 0x283f, // XK_braille_dots_123456:	BRAILLE PATTERN DOTS-123456
+	0x1002840: 0x2840, // XK_braille_dots_7:	BRAILLE PATTERN DOTS-7
+	0x1002841: 0x2841, // XK_braille_dots_17:	BRAILLE PATTERN DOTS-17
+	0x1002842: 0x2842, // XK_braille_dots_27:	BRAILLE PATTERN DOTS-27
+	0x1002843: 0x2843, // XK_braille_dots_127:	BRAILLE PATTERN DOTS-127
+	0x1002844: 0x2844, // XK_braille_dots_37:	BRAILLE PATTERN DOTS-37
+	0x1002845: 0x2845, // XK_braille_dots_137:	BRAILLE PATTERN DOTS-137
+	0x1002846: 0x2846, // XK_braille_dots_237:	BRAILLE PATTERN DOTS-237
+	0x1002847: 0x2847, // XK_braille_dots_1237:	BRAILLE PATTERN DOTS-1237
+	0x1002848: 0x2848, // XK_braille_dots_47:	BRAILLE PATTERN DOTS-47
+	0x1002849: 0x2849, // XK_braille_dots_147:	BRAILLE PATTERN DOTS-147
+	0x100284a: 0x284a, // XK_braille_dots_247:	BRAILLE PATTERN DOTS-247
+	0x100284b: 0x284b, // XK_braille_dots_1247:	BRAILLE PATTERN DOTS-1247
+	0x100284c: 0x284c, // XK_braille_dots_347:	BRAILLE PATTERN DOTS-347
+	0x100284d: 0x284d, // XK_braille_dots_1347:	BRAILLE PATTERN DOTS-1347
+	0x100284e: 0x284e, // XK_braille_dots_2347:	BRAILLE PATTERN DOTS-2347
+	0x100284f: 0x284f, // XK_braille_dots_12347:	BRAILLE PATTERN DOTS-12347
+	0x1002850: 0x2850, // XK_braille_dots_57:	BRAILLE PATTERN DOTS-57
+	0x1002851: 0x2851, // XK_braille_dots_157:	BRAILLE PATTERN DOTS-157
+	0x1002852: 0x2852, // XK_braille_dots_257:	BRAILLE PATTERN DOTS-257
+	0x1002853: 0x2853, // XK_braille_dots_1257:	BRAILLE PATTERN DOTS-1257
+	0x1002854: 0x2854, // XK_braille_dots_357:	BRAILLE PATTERN DOTS-357
+	0x1002855: 0x2855, // XK_braille_dots_1357:	BRAILLE PATTERN DOTS-1357
+	0x1002856: 0x2856, // XK_braille_dots_2357:	BRAILLE PATTERN DOTS-2357
+	0x1002857: 0x2857, // XK_braille_dots_12357:	BRAILLE PATTERN DOTS-12357
+	0x1002858: 0x2858, // XK_braille_dots_457:	BRAILLE PATTERN DOTS-457
+	0x1002859: 0x2859, // XK_braille_dots_1457:	BRAILLE PATTERN DOTS-1457
+	0x100285a: 0x285a, // XK_braille_dots_2457:	BRAILLE PATTERN DOTS-2457
+	0x100285b: 0x285b, // XK_braille_dots_12457:	BRAILLE PATTERN DOTS-12457
+	0x100285c: 0x285c, // XK_braille_dots_3457:	BRAILLE PATTERN DOTS-3457
+	0x100285d: 0x285d, // XK_braille_dots_13457:	BRAILLE PATTERN DOTS-13457
+	0x100285e: 0x285e, // XK_braille_dots_23457:	BRAILLE PATTERN DOTS-23457
+	0x100285f: 0x285f, // XK_braille_dots_123457:	BRAILLE PATTERN DOTS-123457
+	0x1002860: 0x2860, // XK_braille_dots_67:	BRAILLE PATTERN DOTS-67
+	0x1002861: 0x2861, // XK_braille_dots_167:	BRAILLE PATTERN DOTS-167
+	0x1002862: 0x2862, // XK_braille_dots_267:	BRAILLE PATTERN DOTS-267
+	0x1002863: 0x2863, // XK_braille_dots_1267:	BRAILLE PATTERN DOTS-1267
+	0x1002864: 0x2864, // XK_braille_dots_367:	BRAILLE PATTERN DOTS-367
+	0x1002865: 0x2865, // XK_braille_dots_1367:	BRAILLE PATTERN DOTS-1367
+	0x1002866: 0x2866, // XK_braille_dots_2367:	BRAILLE PATTERN DOTS-2367
+	0x1002867: 0x2867, // XK_braille_dots_12367:	BRAILLE PATTERN DOTS-12367
+	0x1002868: 0x2868, // XK_braille_dots_467:	BRAILLE PATTERN DOTS-467
+	0x1002869: 0x2869, // XK_braille_dots_1467:	BRAILLE PATTERN DOTS-1467
+	0x100286a: 0x286a, // XK_braille_dots_2467:	BRAILLE PATTERN DOTS-2467
+	0x100286b: 0x286b, // XK_braille_dots_12467:	BRAILLE PATTERN DOTS-12467
+	0x100286c: 0x286c, // XK_braille_dots_3467:	BRAILLE PATTERN DOTS-3467
+	0x100286d: 0x286d, // XK_braille_dots_13467:	BRAILLE PATTERN DOTS-13467
+	0x100286e: 0x286e, // XK_braille_dots_23467:	BRAILLE PATTERN DOTS-23467
+	0x100286f: 0x286f, // XK_braille_dots_123467:	BRAILLE PATTERN DOTS-123467
+	0x1002870: 0x2870, // XK_braille_dots_567:	BRAILLE PATTERN DOTS-567
+	0x1002871: 0x2871, // XK_braille_dots_1567:	BRAILLE PATTERN DOTS-1567
+	0x1002872: 0x2872, // XK_braille_dots_2567:	BRAILLE PATTERN DOTS-2567
+	0x1002873: 0x2873, // XK_braille_dots_12567:	BRAILLE PATTERN DOTS-12567
+	0x1002874: 0x2874, // XK_braille_dots_3567:	BRAILLE PATTERN DOTS-3567
+	0x1002875: 0x2875, // XK_braille_dots_13567:	BRAILLE PATTERN DOTS-13567
+	0x1002876: 0x2876, // XK_braille_dots_23567:	BRAILLE PATTERN DOTS-23567
+	0x1002877: 0x2877, // XK_braille_dots_123567:	BRAILLE PATTERN DOTS-123567
+	0x1002878: 0x2878, // XK_braille_dots_4567:	BRAILLE PATTERN DOTS-4567
+	0x1002879: 0x2879, // XK_braille_dots_14567:	BRAILLE PATTERN DOTS-14567
+	0x100287a: 0x287a, // XK_braille_dots_24567:	BRAILLE PATTERN DOTS-24567
+	0x100287b: 0x287b, // XK_braille_dots_124567:	BRAILLE PATTERN DOTS-124567
+	0x100287c: 0x287c, // XK_braille_dots_34567:	BRAILLE PATTERN DOTS-34567
+	0x100287d: 0x287d, // XK_braille_dots_134567:	BRAILLE PATTERN DOTS-134567
+	0x100287e: 0x287e, // XK_braille_dots_234567:	BRAILLE PATTERN DOTS-234567
+	0x100287f: 0x287f, // XK_braille_dots_1234567:	BRAILLE PATTERN DOTS-1234567
+	0x1002880: 0x2880, // XK_braille_dots_8:	BRAILLE PATTERN DOTS-8
+	0x1002881: 0x2881, // XK_braille_dots_18:	BRAILLE PATTERN DOTS-18
+	0x1002882: 0x2882, // XK_braille_dots_28:	BRAILLE PATTERN DOTS-28
+	0x1002883: 0x2883, // XK_braille_dots_128:	BRAILLE PATTERN DOTS-128
+	0x1002884: 0x2884, // XK_braille_dots_38:	BRAILLE PATTERN DOTS-38
+	0x1002885: 0x2885, // XK_braille_dots_138:	BRAILLE PATTERN DOTS-138
+	0x1002886: 0x2886, // XK_braille_dots_238:	BRAILLE PATTERN DOTS-238
+	0x1002887: 0x2887, // XK_braille_dots_1238:	BRAILLE PATTERN DOTS-1238
+	0x1002888: 0x2888, // XK_braille_dots_48:	BRAILLE PATTERN DOTS-48
+	0x1002889: 0x2889, // XK_braille_dots_148:	BRAILLE PATTERN DOTS-148
+	0x100288a: 0x288a, // XK_braille_dots_248:	BRAILLE PATTERN DOTS-248
+	0x100288b: 0x288b, // XK_braille_dots_1248:	BRAILLE PATTERN DOTS-1248
+	0x100288c: 0x288c, // XK_braille_dots_348:	BRAILLE PATTERN DOTS-348
+	0x100288d: 0x288d, // XK_braille_dots_1348:	BRAILLE PATTERN DOTS-1348
+	0x100288e: 0x288e, // XK_braille_dots_2348:	BRAILLE PATTERN DOTS-2348
+	0x100288f: 0x288f, // XK_braille_dots_12348:	BRAILLE PATTERN DOTS-12348
+	0x1002890: 0x2890, // XK_braille_dots_58:	BRAILLE PATTERN DOTS-58
+	0x1002891: 0x2891, // XK_braille_dots_158:	BRAILLE PATTERN DOTS-158
+	0x1002892: 0x2892, // XK_braille_dots_258:	BRAILLE PATTERN DOTS-258
+	0x1002893: 0x2893, // XK_braille_dots_1258:	BRAILLE PATTERN DOTS-1258
+	0x1002894: 0x2894, // XK_braille_dots_358:	BRAILLE PATTERN DOTS-358
+	0x1002895: 0x2895, // XK_braille_dots_1358:	BRAILLE PATTERN DOTS-1358
+	0x1002896: 0x2896, // XK_braille_dots_2358:	BRAILLE PATTERN DOTS-2358
+	0x1002897: 0x2897, // XK_braille_dots_12358:	BRAILLE PATTERN DOTS-12358
+	0x1002898: 0x2898, // XK_braille_dots_458:	BRAILLE PATTERN DOTS-458
+	0x1002899: 0x2899, // XK_braille_dots_1458:	BRAILLE PATTERN DOTS-1458
+	0x100289a: 0x289a, // XK_braille_dots_2458:	BRAILLE PATTERN DOTS-2458
+	0x100289b: 0x289b, // XK_braille_dots_12458:	BRAILLE PATTERN DOTS-12458
+	0x100289c: 0x289c, // XK_braille_dots_3458:	BRAILLE PATTERN DOTS-3458
+	0x100289d: 0x289d, // XK_braille_dots_13458:	BRAILLE PATTERN DOTS-13458
+	0x100289e: 0x289e, // XK_braille_dots_23458:	BRAILLE PATTERN DOTS-23458
+	0x100289f: 0x289f, // XK_braille_dots_123458:	BRAILLE PATTERN DOTS-123458
+	0x10028a0: 0x28a0, // XK_braille_dots_68:	BRAILLE PATTERN DOTS-68
+	0x10028a1: 0x28a1, // XK_braille_dots_168:	BRAILLE PATTERN DOTS-168
+	0x10028a2: 0x28a2, // XK_braille_dots_268:	BRAILLE PATTERN DOTS-268
+	0x10028a3: 0x28a3, // XK_braille_dots_1268:	BRAILLE PATTERN DOTS-1268
+	0x10028a4: 0x28a4, // XK_braille_dots_368:	BRAILLE PATTERN DOTS-368
+	0x10028a5: 0x28a5, // XK_braille_dots_1368:	BRAILLE PATTERN DOTS-1368
+	0x10028a6: 0x28a6, // XK_braille_dots_2368:	BRAILLE PATTERN DOTS-2368
+	0x10028a7: 0x28a7, // XK_braille_dots_12368:	BRAILLE PATTERN DOTS-12368
+	0x10028a8: 0x28a8, // XK_braille_dots_468:	BRAILLE PATTERN DOTS-468
+	0x10028a9: 0x28a9, // XK_braille_dots_1468:	BRAILLE PATTERN DOTS-1468
+	0x10028aa: 0x28aa, // XK_braille_dots_2468:	BRAILLE PATTERN DOTS-2468
+	0x10028ab: 0x28ab, // XK_braille_dots_12468:	BRAILLE PATTERN DOTS-12468
+	0x10028ac: 0x28ac, // XK_braille_dots_3468:	BRAILLE PATTERN DOTS-3468
+	0x10028ad: 0x28ad, // XK_braille_dots_13468:	BRAILLE PATTERN DOTS-13468
+	0x10028ae: 0x28ae, // XK_braille_dots_23468:	BRAILLE PATTERN DOTS-23468
+	0x10028af: 0x28af, // XK_braille_dots_123468:	BRAILLE PATTERN DOTS-123468
+	0x10028b0: 0x28b0, // XK_braille_dots_568:	BRAILLE PATTERN DOTS-568
+	0x10028b1: 0x28b1, // XK_braille_dots_1568:	BRAILLE PATTERN DOTS-1568
+	0x10028b2: 0x28b2, // XK_braille_dots_2568:	BRAILLE PATTERN DOTS-2568
+	0x10028b3: 0x28b3, // XK_braille_dots_12568:	BRAILLE PATTERN DOTS-12568
+	0x10028b4: 0x28b4, // XK_braille_dots_3568:	BRAILLE PATTERN DOTS-3568
+	0x10028b5: 0x28b5, // XK_braille_dots_13568:	BRAILLE PATTERN DOTS-13568
+	0x10028b6: 0x28b6, // XK_braille_dots_23568:	BRAILLE PATTERN DOTS-23568
+	0x10028b7: 0x28b7, // XK_braille_dots_123568:	BRAILLE PATTERN DOTS-123568
+	0x10028b8: 0x28b8, // XK_braille_dots_4568:	BRAILLE PATTERN DOTS-4568
+	0x10028b9: 0x28b9, // XK_braille_dots_14568:	BRAILLE PATTERN DOTS-14568
+	0x10028ba: 0x28ba, // XK_braille_dots_24568:	BRAILLE PATTERN DOTS-24568
+	0x10028bb: 0x28bb, // XK_braille_dots_124568:	BRAILLE PATTERN DOTS-124568
+	0x10028bc: 0x28bc, // XK_braille_dots_34568:	BRAILLE PATTERN DOTS-34568
+	0x10028bd: 0x28bd, // XK_braille_dots_134568:	BRAILLE PATTERN DOTS-134568
+	0x10028be: 0x28be, // XK_braille_dots_234568:	BRAILLE PATTERN DOTS-234568
+	0x10028bf: 0x28bf, // XK_braille_dots_1234568:	BRAILLE PATTERN DOTS-1234568
+	0x10028c0: 0x28c0, // XK_braille_dots_78:	BRAILLE PATTERN DOTS-78
+	0x10028c1: 0x28c1, // XK_braille_dots_178:	BRAILLE PATTERN DOTS-178
+	0x10028c2: 0x28c2, // XK_braille_dots_278:	BRAILLE PATTERN DOTS-278
+	0x10028c3: 0x28c3, // XK_braille_dots_1278:	BRAILLE PATTERN DOTS-1278
+	0x10028c4: 0x28c4, // XK_braille_dots_378:	BRAILLE PATTERN DOTS-378
+	0x10028c5: 0x28c5, // XK_braille_dots_1378:	BRAILLE PATTERN DOTS-1378
+	0x10028c6: 0x28c6, // XK_braille_dots_2378:	BRAILLE PATTERN DOTS-2378
+	0x10028c7: 0x28c7, // XK_braille_dots_12378:	BRAILLE PATTERN DOTS-12378
+	0x10028c8: 0x28c8, // XK_braille_dots_478:	BRAILLE PATTERN DOTS-478
+	0x10028c9: 0x28c9, // XK_braille_dots_1478:	BRAILLE PATTERN DOTS-1478
+	0x10028ca: 0x28ca, // XK_braille_dots_2478:	BRAILLE PATTERN DOTS-2478
+	0x10028cb: 0x28cb, // XK_braille_dots_12478:	BRAILLE PATTERN DOTS-12478
+	0x10028cc: 0x28cc, // XK_braille_dots_3478:	BRAILLE PATTERN DOTS-3478
+	0x10028cd: 0x28cd, // XK_braille_dots_13478:	BRAILLE PATTERN DOTS-13478
+	0x10028ce: 0x28ce, // XK_braille_dots_23478:	BRAILLE PATTERN DOTS-23478
+	0x10028cf: 0x28cf, // XK_braille_dots_123478:	BRAILLE PATTERN DOTS-123478
+	0x10028d0: 0x28d0, // XK_braille_dots_578:	BRAILLE PATTERN DOTS-578
+	0x10028d1: 0x28d1, // XK_braille_dots_1578:	BRAILLE PATTERN DOTS-1578
+	0x10028d2: 0x28d2, // XK_braille_dots_2578:	BRAILLE PATTERN DOTS-2578
+	0x10028d3: 0x28d3, // XK_braille_dots_12578:	BRAILLE PATTERN DOTS-12578
+	0x10028d4: 0x28d4, // XK_braille_dots_3578:	BRAILLE PATTERN DOTS-3578
+	0x10028d5: 0x28d5, // XK_braille_dots_13578:	BRAILLE PATTERN DOTS-13578
+	0x10028d6: 0x28d6, // XK_braille_dots_23578:	BRAILLE PATTERN DOTS-23578
+	0x10028d7: 0x28d7, // XK_braille_dots_123578:	BRAILLE PATTERN DOTS-123578
+	0x10028d8: 0x28d8, // XK_braille_dots_4578:	BRAILLE PATTERN DOTS-4578
+	0x10028d9: 0x28d9, // XK_braille_dots_14578:	BRAILLE PATTERN DOTS-14578
+	0x10028da: 0x28da, // XK_braille_dots_24578:	BRAILLE PATTERN DOTS-24578
+	0x10028db: 0x28db, // XK_braille_dots_124578:	BRAILLE PATTERN DOTS-124578
+	0x10028dc: 0x28dc, // XK_braille_dots_34578:	BRAILLE PATTERN DOTS-34578
+	0x10028dd: 0x28dd, // XK_braille_dots_134578:	BRAILLE PATTERN DOTS-134578
+	0x10028de: 0x28de, // XK_braille_dots_234578:	BRAILLE PATTERN DOTS-234578
+	0x10028df: 0x28df, // XK_braille_dots_1234578:	BRAILLE PATTERN DOTS-1234578
+	0x10028e0: 0x28e0, // XK_braille_dots_678:	BRAILLE PATTERN DOTS-678
+	0x10028e1: 0x28e1, // XK_braille_dots_1678:	BRAILLE PATTERN DOTS-1678
+	0x10028e2: 0x28e2, // XK_braille_dots_2678:	BRAILLE PATTERN DOTS-2678
+	0x10028e3: 0x28e3, // XK_braille_dots_12678:	BRAILLE PATTERN DOTS-12678
+	0x10028e4: 0x28e4, // XK_braille_dots_3678:	BRAILLE PATTERN DOTS-3678
+	0x10028e5: 0x28e5, // XK_braille_dots_13678:	BRAILLE PATTERN DOTS-13678
+	0x10028e6: 0x28e6, // XK_braille_dots_23678:	BRAILLE PATTERN DOTS-23678
+	0x10028e7: 0x28e7, // XK_braille_dots_123678:	BRAILLE PATTERN DOTS-123678
+	0x10028e8: 0x28e8, // XK_braille_dots_4678:	BRAILLE PATTERN DOTS-4678
+	0x10028e9: 0x28e9, // XK_braille_dots_14678:	BRAILLE PATTERN DOTS-14678
+	0x10028ea: 0x28ea, // XK_braille_dots_24678:	BRAILLE PATTERN DOTS-24678
+	0x10028eb: 0x28eb, // XK_braille_dots_124678:	BRAILLE PATTERN DOTS-124678
+	0x10028ec: 0x28ec, // XK_braille_dots_34678:	BRAILLE PATTERN DOTS-34678
+	0x10028ed: 0x28ed, // XK_braille_dots_134678:	BRAILLE PATTERN DOTS-134678
+	0x10028ee: 0x28ee, // XK_braille_dots_234678:	BRAILLE PATTERN DOTS-234678
+	0x10028ef: 0x28ef, // XK_braille_dots_1234678:	BRAILLE PATTERN DOTS-1234678
+	0x10028f0: 0x28f0, // XK_braille_dots_5678:	BRAILLE PATTERN DOTS-5678
+	0x10028f1: 0x28f1, // XK_braille_dots_15678:	BRAILLE PATTERN DOTS-15678
+	0x10028f2: 0x28f2, // XK_braille_dots_25678:	BRAILLE PATTERN DOTS-25678
+	0x10028f3: 0x28f3, // XK_braille_dots_125678:	BRAILLE PATTERN DOTS-125678
+	0x10028f4: 0x28f4, // XK_braille_dots_35678:	BRAILLE PATTERN DOTS-35678
+	0x10028f5: 0x28f5, // XK_braille_dots_135678:	BRAILLE PATTERN DOTS-135678
+	0x10028f6: 0x28f6, // XK_braille_dots_235678:	BRAILLE PATTERN DOTS-235678
+	0x10028f7: 0x28f7, // XK_braille_dots_1235678:	BRAILLE PATTERN DOTS-1235678
+	0x10028f8: 0x28f8, // XK_braille_dots_45678:	BRAILLE PATTERN DOTS-45678
+	0x10028f9: 0x28f9, // XK_braille_dots_145678:	BRAILLE PATTERN DOTS-145678
+	0x10028fa: 0x28fa, // XK_braille_dots_245678:	BRAILLE PATTERN DOTS-245678
+	0x10028fb: 0x28fb, // XK_braille_dots_1245678:	BRAILLE PATTERN DOTS-1245678
+	0x10028fc: 0x28fc, // XK_braille_dots_345678:	BRAILLE PATTERN DOTS-345678
+	0x10028fd: 0x28fd, // XK_braille_dots_1345678:	BRAILLE PATTERN DOTS-1345678
+	0x10028fe: 0x28fe, // XK_braille_dots_2345678:	BRAILLE PATTERN DOTS-2345678
+	0x10028ff: 0x28ff, // XK_braille_dots_12345678:	BRAILLE PATTERN DOTS-12345678
+	0x1000d82: 0x0D82, // XK_Sinh_ng:	SINHALA ANUSVARAYA
+	0x1000d83: 0x0D83, // XK_Sinh_h2:	SINHALA VISARGAYA
+	0x1000d85: 0x0D85, // XK_Sinh_a:	SINHALA AYANNA
+	0x1000d86: 0x0D86, // XK_Sinh_aa:	SINHALA AAYANNA
+	0x1000d87: 0x0D87, // XK_Sinh_ae:	SINHALA AEYANNA
+	0x1000d88: 0x0D88, // XK_Sinh_aee:	SINHALA AEEYANNA
+	0x1000d89: 0x0D89, // XK_Sinh_i:	SINHALA IYANNA
+	0x1000d8a: 0x0D8A, // XK_Sinh_ii:	SINHALA IIYANNA
+	0x1000d8b: 0x0D8B, // XK_Sinh_u:	SINHALA UYANNA
+	0x1000d8c: 0x0D8C, // XK_Sinh_uu:	SINHALA UUYANNA
+	0x1000d8d: 0x0D8D, // XK_Sinh_ri:	SINHALA IRUYANNA
+	0x1000d8e: 0x0D8E, // XK_Sinh_rii:	SINHALA IRUUYANNA
+	0x1000d8f: 0x0D8F, // XK_Sinh_lu:	SINHALA ILUYANNA
+	0x1000d90: 0x0D90, // XK_Sinh_luu:	SINHALA ILUUYANNA
+	0x1000d91: 0x0D91, // XK_Sinh_e:	SINHALA EYANNA
+	0x1000d92: 0x0D92, // XK_Sinh_ee:	SINHALA EEYANNA
+	0x1000d93: 0x0D93, // XK_Sinh_ai:	SINHALA AIYANNA
+	0x1000d94: 0x0D94, // XK_Sinh_o:	SINHALA OYANNA
+	0x1000d95: 0x0D95, // XK_Sinh_oo:	SINHALA OOYANNA
+	0x1000d96: 0x0D96, // XK_Sinh_au:	SINHALA AUYANNA
+	0x1000d9a: 0x0D9A, // XK_Sinh_ka:	SINHALA KAYANNA
+	0x1000d9b: 0x0D9B, // XK_Sinh_kha:	SINHALA MAHA. KAYANNA
+	0x1000d9c: 0x0D9C, // XK_Sinh_ga:	SINHALA GAYANNA
+	0x1000d9d: 0x0D9D, // XK_Sinh_gha:	SINHALA MAHA. GAYANNA
+	0x1000d9e: 0x0D9E, // XK_Sinh_ng2:	SINHALA KANTAJA NAASIKYAYA
+	0x1000d9f: 0x0D9F, // XK_Sinh_nga:	SINHALA SANYAKA GAYANNA
+	0x1000da0: 0x0DA0, // XK_Sinh_ca:	SINHALA CAYANNA
+	0x1000da1: 0x0DA1, // XK_Sinh_cha:	SINHALA MAHA. CAYANNA
+	0x1000da2: 0x0DA2, // XK_Sinh_ja:	SINHALA JAYANNA
+	0x1000da3: 0x0DA3, // XK_Sinh_jha:	SINHALA MAHA. JAYANNA
+	0x1000da4: 0x0DA4, // XK_Sinh_nya:	SINHALA TAALUJA NAASIKYAYA
+	0x1000da5: 0x0DA5, // XK_Sinh_jnya:	SINHALA TAALUJA SANYOOGA NAASIKYAYA
+	0x1000da6: 0x0DA6, // XK_Sinh_nja:	SINHALA SANYAKA JAYANNA
+	0x1000da7: 0x0DA7, // XK_Sinh_tta:	SINHALA TTAYANNA
+	0x1000da8: 0x0DA8, // XK_Sinh_ttha:	SINHALA MAHA. TTAYANNA
+	0x1000da9: 0x0DA9, // XK_Sinh_dda:	SINHALA DDAYANNA
+	0x1000daa: 0x0DAA, // XK_Sinh_ddha:	SINHALA MAHA. DDAYANNA
+	0x1000dab: 0x0DAB, // XK_Sinh_nna:	SINHALA MUURDHAJA NAYANNA
+	0x1000dac: 0x0DAC, // XK_Sinh_ndda:	SINHALA SANYAKA DDAYANNA
+	0x1000dad: 0x0DAD, // XK_Sinh_tha:	SINHALA TAYANNA
+	0x1000dae: 0x0DAE, // XK_Sinh_thha:	SINHALA MAHA. TAYANNA
+	0x1000daf: 0x0DAF, // XK_Sinh_dha:	SINHALA DAYANNA
+	0x1000db0: 0x0DB0, // XK_Sinh_dhha:	SINHALA MAHA. DAYANNA
+	0x1000db1: 0x0DB1, // XK_Sinh_na:	SINHALA DANTAJA NAYANNA
+	0x1000db3: 0x0DB3, // XK_Sinh_ndha:	SINHALA SANYAKA DAYANNA
+	0x1000db4: 0x0DB4, // XK_Sinh_pa:	SINHALA PAYANNA
+	0x1000db5: 0x0DB5, // XK_Sinh_pha:	SINHALA MAHA. PAYANNA
+	0x1000db6: 0x0DB6, // XK_Sinh_ba:	SINHALA BAYANNA
+	0x1000db7: 0x0DB7, // XK_Sinh_bha:	SINHALA MAHA. BAYANNA
+	0x1000db8: 0x0DB8, // XK_Sinh_ma:	SINHALA MAYANNA
+	0x1000db9: 0x0DB9, // XK_Sinh_mba:	SINHALA AMBA BAYANNA
+	0x1000dba: 0x0DBA, // XK_Sinh_ya:	SINHALA YAYANNA
+	0x1000dbb: 0x0DBB, // XK_Sinh_ra:	SINHALA RAYANNA
+	0x1000dbd: 0x0DBD, // XK_Sinh_la:	SINHALA DANTAJA LAYANNA
+	0x1000dc0: 0x0DC0, // XK_Sinh_va:	SINHALA VAYANNA
+	0x1000dc1: 0x0DC1, // XK_Sinh_sha:	SINHALA TAALUJA SAYANNA
+	0x1000dc2: 0x0DC2, // XK_Sinh_ssha:	SINHALA MUURDHAJA SAYANNA
+	0x1000dc3: 0x0DC3, // XK_Sinh_sa:	SINHALA DANTAJA SAYANNA
+	0x1000dc4: 0x0DC4, // XK_Sinh_ha:	SINHALA HAYANNA
+	0x1000dc5: 0x0DC5, // XK_Sinh_lla:	SINHALA MUURDHAJA LAYANNA
+	0x1000dc6: 0x0DC6, // XK_Sinh_fa:	SINHALA FAYANNA
+	0x1000dca: 0x0DCA, // XK_Sinh_al:	SINHALA AL-LAKUNA
+	0x1000dcf: 0x0DCF, // XK_Sinh_aa2:	SINHALA AELA-PILLA
+	0x1000dd0: 0x0DD0, // XK_Sinh_ae2:	SINHALA AEDA-PILLA
+	0x1000dd1: 0x0DD1, // XK_Sinh_aee2:	SINHALA DIGA AEDA-PILLA
+	0x1000dd2: 0x0DD2, // XK_Sinh_i2:	SINHALA IS-PILLA
+	0x1000dd3: 0x0DD3, // XK_Sinh_ii2:	SINHALA DIGA IS-PILLA
+	0x1000dd4: 0x0DD4, // XK_Sinh_u2:	SINHALA PAA-PILLA
+	0x1000dd6: 0x0DD6, // XK_Sinh_uu2:	SINHALA DIGA PAA-PILLA
+	0x1000dd8: 0x0DD8, // XK_Sinh_ru2:	SINHALA GAETTA-PILLA
+	0x1000dd9: 0x0DD9, // XK_Sinh_e2:	SINHALA KOMBUVA
+	0x1000dda: 0x0DDA, // XK_Sinh_ee2:	SINHALA DIGA KOMBUVA
+	0x1000ddb: 0x0DDB, // XK_Sinh_ai2:	SINHALA KOMBU DEKA
+	0x1000dde: 0x0DDE, // XK_Sinh_au2:	SINHALA KOMBUVA HAA GAYANUKITTA
+	0x1000ddf: 0x0DDF, // XK_Sinh_lu2:	SINHALA GAYANUKITTA
+	0x1000df2: 0x0DF2, // XK_Sinh_ruu2:	SINHALA DIGA GAETTA-PILLA
+	0x1000df3: 0x0DF3, // XK_Sinh_luu2:	SINHALA DIGA GAYANUKITTA
+	0x1000df4: 0x0DF4, // XK_Sinh_kunddaliya:	SINHALA KUNDDALIYA
+}
diff --git a/shiny/driver/internal/x11key/x11key.go b/shiny/driver/internal/x11key/x11key.go
index 5fa39b6..68d5df7 100644
--- a/shiny/driver/internal/x11key/x11key.go
+++ b/shiny/driver/internal/x11key/x11key.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+//go:generate go run gen.go
+
 // x11key contains X11 numeric codes for the keyboard and mouse.
 package x11key // import "golang.org/x/exp/shiny/driver/internal/x11key"
 
@@ -47,11 +49,12 @@
 		// TODO: distinguish the regular '2' key and number-pad '2' key (with
 		// Num-Lock).
 		c = asciiKeycodes[unshifted]
-	} else {
-		r, c = -1, nonUnicodeKeycodes[unshifted]
+	} else if nuk := nonUnicodeKeycodes[unshifted]; nuk != key.CodeUnknown {
+		r, c = -1, nuk
+	} else if uk, isUnicode := keysymCodePoints[r]; isUnicode {
+		r = uk
 	}
 
-	// TODO: Unicode-but-not-ASCII keysyms like the Swiss keyboard's 'ö'.
 	return r, c
 }