16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/events/x/keysym_to_unicode.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Define XK_xxx before the #include of <X11/keysym.h> so that <X11/keysym.h> 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// defines all KeySyms we need. 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_MISCELLANY 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN1 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN2 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN3 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN4 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN8 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_LATIN9 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_KATAKANA 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_ARABIC 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_CYRILLIC 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_GREEK 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_TECHNICAL 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_SPECIAL 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_PUBLISHING 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_APL 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_HEBREW 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_THAI 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_KOREAN 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_ARMENIAN 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_GEORGIAN 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_CAUCASUS 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_VIETNAMESE 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_CURRENCY 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_MATHEMATICAL 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_BRAILLE 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define XK_SINHALA 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <X11/X.h> 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <X11/keysym.h> 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <unordered_map> 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/lazy_instance.h" 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/macros.h" 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace ui { 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)const struct { 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) KeySym keysym; 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) uint16_t unicode; 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} g_keysym_to_unicode_table[] = { 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Control characters 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_BackSpace, 0x0008}, 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Tab, 0x0009}, 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Linefeed, 0x000a}, 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Clear, 0x000b}, 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Return, 0x000d}, 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Escape, 0x001b}, 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Delete, 0x007f}, 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Numeric keypad 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Space, 0x0020}, 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Tab, 0x0009}, 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Enter, 0x000d}, 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Equal, 0x003d}, 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Multiply, 0x002a}, 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Add, 0x002b}, 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Separator, 0x002c}, 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Subtract, 0x002d}, 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Decimal, 0x002e}, 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_Divide, 0x002f}, 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_0, 0x0030}, 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_1, 0x0031}, 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_2, 0x0032}, 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_3, 0x0033}, 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_4, 0x0034}, 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_5, 0x0035}, 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_6, 0x0036}, 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_7, 0x0037}, 776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_8, 0x0038}, 786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_KP_9, 0x0039}, 796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 1 KeySyms map 1:1 to Unicode 816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 2 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Aogonek, 0x0104}, // LATIN CAPITAL LETTER A WITH OGONEK 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_breve, 0x02D8}, // BREVE 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Lstroke, 0x0141}, // LATIN CAPITAL LETTER L WITH STROKE 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Lcaron, 0x013D}, // LATIN CAPITAL LETTER L WITH CARON 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Sacute, 0x015A}, // LATIN CAPITAL LETTER S WITH ACUTE 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Scaron, 0x0160}, // LATIN CAPITAL LETTER S WITH CARON 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Scedilla, 0x015E}, // LATIN CAPITAL LETTER S WITH CEDILLA 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Tcaron, 0x0164}, // LATIN CAPITAL LETTER T WITH CARON 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Zacute, 0x0179}, // LATIN CAPITAL LETTER Z WITH ACUTE 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Zcaron, 0x017D}, // LATIN CAPITAL LETTER Z WITH CARON 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Zabovedot, 0x017B}, // LATIN CAPITAL LETTER Z WITH DOT ABOVE 946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_aogonek, 0x0105}, // LATIN SMALL LETTER A WITH OGONEK 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ogonek, 0x02DB}, // OGONEK 966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lstroke, 0x0142}, // LATIN SMALL LETTER L WITH STROKE 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lcaron, 0x013E}, // LATIN SMALL LETTER L WITH CARON 986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_sacute, 0x015B}, // LATIN SMALL LETTER S WITH ACUTE 996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_caron, 0x02C7}, // CARON 1006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_scaron, 0x0161}, // LATIN SMALL LETTER S WITH CARON 1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_scedilla, 0x015F}, // LATIN SMALL LETTER S WITH CEDILLA 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_tcaron, 0x0165}, // LATIN SMALL LETTER T WITH CARON 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_zacute, 0x017A}, // LATIN SMALL LETTER Z WITH ACUTE 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_doubleacute, 0x02DD}, // DOUBLE ACUTE ACCENT 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_zcaron, 0x017E}, // LATIN SMALL LETTER Z WITH CARON 1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_zabovedot, 0x017C}, // LATIN SMALL LETTER Z WITH DOT ABOVE 1076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Racute, 0x0154}, // LATIN CAPITAL LETTER R WITH ACUTE 1086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Abreve, 0x0102}, // LATIN CAPITAL LETTER A WITH BREVE 1096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Lacute, 0x0139}, // LATIN CAPITAL LETTER L WITH ACUTE 1106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cacute, 0x0106}, // LATIN CAPITAL LETTER C WITH ACUTE 1116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ccaron, 0x010C}, // LATIN CAPITAL LETTER C WITH CARON 1126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Eogonek, 0x0118}, // LATIN CAPITAL LETTER E WITH OGONEK 1136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ecaron, 0x011A}, // LATIN CAPITAL LETTER E WITH CARON 1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Dcaron, 0x010E}, // LATIN CAPITAL LETTER D WITH CARON 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Dstroke, 0x0110}, // LATIN CAPITAL LETTER D WITH STROKE 1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Nacute, 0x0143}, // LATIN CAPITAL LETTER N WITH ACUTE 1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ncaron, 0x0147}, // LATIN CAPITAL LETTER N WITH CARON 1186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Odoubleacute, 0x0150}, // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 1196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Rcaron, 0x0158}, // LATIN CAPITAL LETTER R WITH CARON 1206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Uring, 0x016E}, // LATIN CAPITAL LETTER U WITH RING ABOVE 1216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Udoubleacute, 0x0170}, // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 1226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Tcedilla, 0x0162}, // LATIN CAPITAL LETTER T WITH CEDILLA 1236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_racute, 0x0155}, // LATIN SMALL LETTER R WITH ACUTE 1246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_abreve, 0x0103}, // LATIN SMALL LETTER A WITH BREVE 1256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lacute, 0x013A}, // LATIN SMALL LETTER L WITH ACUTE 1266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_cacute, 0x0107}, // LATIN SMALL LETTER C WITH ACUTE 1276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ccaron, 0x010D}, // LATIN SMALL LETTER C WITH CARON 1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_eogonek, 0x0119}, // LATIN SMALL LETTER E WITH OGONEK 1296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ecaron, 0x011B}, // LATIN SMALL LETTER E WITH CARON 1306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_dcaron, 0x010F}, // LATIN SMALL LETTER D WITH CARON 1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_dstroke, 0x0111}, // LATIN SMALL LETTER D WITH STROKE 1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_nacute, 0x0144}, // LATIN SMALL LETTER N WITH ACUTE 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ncaron, 0x0148}, // LATIN SMALL LETTER N WITH CARON 1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_odoubleacute, 0x0151}, // LATIN SMALL LETTER O WITH DOUBLE ACUTE 1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rcaron, 0x0159}, // LATIN SMALL LETTER R WITH CARON 1366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_uring, 0x016F}, // LATIN SMALL LETTER U WITH RING ABOVE 1376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_udoubleacute, 0x0171}, // LATIN SMALL LETTER U WITH DOUBLE ACUTE 1386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_tcedilla, 0x0163}, // LATIN SMALL LETTER T WITH CEDILLA 1396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_abovedot, 0x02D9}, // DOT ABOVE 1406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 3 1426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Hstroke, 0x0126}, // LATIN CAPITAL LETTER H WITH STROKE 1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Hcircumflex, 0x0124}, // LATIN CAPITAL LETTER H WITH CIRCUMFLEX 1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Iabovedot, 0x0130}, // LATIN CAPITAL LETTER I WITH DOT ABOVE 1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Gbreve, 0x011E}, // LATIN CAPITAL LETTER G WITH BREVE 1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Jcircumflex, 0x0134}, // LATIN CAPITAL LETTER J WITH CIRCUMFLEX 1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hstroke, 0x0127}, // LATIN SMALL LETTER H WITH STROKE 1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hcircumflex, 0x0125}, // LATIN SMALL LETTER H WITH CIRCUMFLEX 1496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_idotless, 0x0131}, // LATIN SMALL LETTER DOTLESS I 1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_gbreve, 0x011F}, // LATIN SMALL LETTER G WITH BREVE 1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_jcircumflex, 0x0135}, // LATIN SMALL LETTER J WITH CIRCUMFLEX 1526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cabovedot, 0x010A}, // LATIN CAPITAL LETTER C WITH DOT ABOVE 1536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ccircumflex, 0x0108}, // LATIN CAPITAL LETTER C WITH CIRCUMFLEX 1546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Gabovedot, 0x0120}, // LATIN CAPITAL LETTER G WITH DOT ABOVE 1556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Gcircumflex, 0x011C}, // LATIN CAPITAL LETTER G WITH CIRCUMFLEX 1566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ubreve, 0x016C}, // LATIN CAPITAL LETTER U WITH BREVE 1576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Scircumflex, 0x015C}, // LATIN CAPITAL LETTER S WITH CIRCUMFLEX 1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_cabovedot, 0x010B}, // LATIN SMALL LETTER C WITH DOT ABOVE 1596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ccircumflex, 0x0109}, // LATIN SMALL LETTER C WITH CIRCUMFLEX 1606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_gabovedot, 0x0121}, // LATIN SMALL LETTER G WITH DOT ABOVE 1616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_gcircumflex, 0x011D}, // LATIN SMALL LETTER G WITH CIRCUMFLEX 1626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ubreve, 0x016D}, // LATIN SMALL LETTER U WITH BREVE 1636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_scircumflex, 0x015D}, // LATIN SMALL LETTER S WITH CIRCUMFLEX 1646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 4 1666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kra, 0x0138}, // LATIN SMALL LETTER KRA 1676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Rcedilla, 0x0156}, // LATIN CAPITAL LETTER R WITH CEDILLA 1686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Itilde, 0x0128}, // LATIN CAPITAL LETTER I WITH TILDE 1696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Lcedilla, 0x013B}, // LATIN CAPITAL LETTER L WITH CEDILLA 1706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Emacron, 0x0112}, // LATIN CAPITAL LETTER E WITH MACRON 1716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Gcedilla, 0x0122}, // LATIN CAPITAL LETTER G WITH CEDILLA 1726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Tslash, 0x0166}, // LATIN CAPITAL LETTER T WITH STROKE 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rcedilla, 0x0157}, // LATIN SMALL LETTER R WITH CEDILLA 1746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_itilde, 0x0129}, // LATIN SMALL LETTER I WITH TILDE 1756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lcedilla, 0x013C}, // LATIN SMALL LETTER L WITH CEDILLA 1766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emacron, 0x0113}, // LATIN SMALL LETTER E WITH MACRON 1776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_gcedilla, 0x0123}, // LATIN SMALL LETTER G WITH CEDILLA 1786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_tslash, 0x0167}, // LATIN SMALL LETTER T WITH STROKE 1796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ENG, 0x014A}, // LATIN CAPITAL LETTER ENG 1806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_eng, 0x014B}, // LATIN SMALL LETTER ENG 1816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Amacron, 0x0100}, // LATIN CAPITAL LETTER A WITH MACRON 1826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Iogonek, 0x012E}, // LATIN CAPITAL LETTER I WITH OGONEK 1836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Eabovedot, 0x0116}, // LATIN CAPITAL LETTER E WITH DOT ABOVE 1846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Imacron, 0x012A}, // LATIN CAPITAL LETTER I WITH MACRON 1856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ncedilla, 0x0145}, // LATIN CAPITAL LETTER N WITH CEDILLA 1866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Omacron, 0x014C}, // LATIN CAPITAL LETTER O WITH MACRON 1876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Kcedilla, 0x0136}, // LATIN CAPITAL LETTER K WITH CEDILLA 1886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Uogonek, 0x0172}, // LATIN CAPITAL LETTER U WITH OGONEK 1896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Utilde, 0x0168}, // LATIN CAPITAL LETTER U WITH TILDE 1906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Umacron, 0x016A}, // LATIN CAPITAL LETTER U WITH MACRON 1916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_amacron, 0x0101}, // LATIN SMALL LETTER A WITH MACRON 1926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_iogonek, 0x012F}, // LATIN SMALL LETTER I WITH OGONEK 1936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_eabovedot, 0x0117}, // LATIN SMALL LETTER E WITH DOT ABOVE 1946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_imacron, 0x012B}, // LATIN SMALL LETTER I WITH MACRON 1956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ncedilla, 0x0146}, // LATIN SMALL LETTER N WITH CEDILLA 1966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_omacron, 0x014D}, // LATIN SMALL LETTER O WITH MACRON 1976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kcedilla, 0x0137}, // LATIN SMALL LETTER K WITH CEDILLA 1986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_uogonek, 0x0173}, // LATIN SMALL LETTER U WITH OGONEK 1996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_utilde, 0x0169}, // LATIN SMALL LETTER U WITH TILDE 2006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_umacron, 0x016B}, // LATIN SMALL LETTER U WITH MACRON 2016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 8 KeySyms map 1:1 to Unicode 2036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin 9 2056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_OE, 0x0152}, // LATIN CAPITAL LIGATURE OE 2066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_oe, 0x0153}, // LATIN SMALL LIGATURE OE 2076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ydiaeresis, 0x0178}, // LATIN CAPITAL LETTER Y WITH DIAERESIS 2086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Katakana 2106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_overline, 0x203E}, // OVERLINE 2116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_fullstop, 0x3002}, // IDEOGRAPHIC FULL STOP 2126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_openingbracket, 0x300C}, // LEFT CORNER BRACKET 2136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_closingbracket, 0x300D}, // RIGHT CORNER BRACKET 2146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_comma, 0x3001}, // IDEOGRAPHIC COMMA 2156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_conjunctive, 0x30FB}, // KATAKANA MIDDLE DOT 2166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_WO, 0x30F2}, // KATAKANA LETTER WO 2176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_a, 0x30A1}, // KATAKANA LETTER SMALL A 2186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_i, 0x30A3}, // KATAKANA LETTER SMALL I 2196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_u, 0x30A5}, // KATAKANA LETTER SMALL U 2206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_e, 0x30A7}, // KATAKANA LETTER SMALL E 2216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_o, 0x30A9}, // KATAKANA LETTER SMALL O 2226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_ya, 0x30E3}, // KATAKANA LETTER SMALL YA 2236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_yu, 0x30E5}, // KATAKANA LETTER SMALL YU 2246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_yo, 0x30E7}, // KATAKANA LETTER SMALL YO 2256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_tsu, 0x30C3}, // KATAKANA LETTER SMALL TU 2266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_prolongedsound, 0x30FC}, // KATAKANA-HIRAGANA PROLONGED SOUND MARK 2276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_A, 0x30A2}, // KATAKANA LETTER A 2286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_I, 0x30A4}, // KATAKANA LETTER I 2296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_U, 0x30A6}, // KATAKANA LETTER U 2306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_E, 0x30A8}, // KATAKANA LETTER E 2316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_O, 0x30AA}, // KATAKANA LETTER O 2326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_KA, 0x30AB}, // KATAKANA LETTER KA 2336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_KI, 0x30AD}, // KATAKANA LETTER KI 2346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_KU, 0x30AF}, // KATAKANA LETTER KU 2356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_KE, 0x30B1}, // KATAKANA LETTER KE 2366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_KO, 0x30B3}, // KATAKANA LETTER KO 2376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_SA, 0x30B5}, // KATAKANA LETTER SA 2386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_SHI, 0x30B7}, // KATAKANA LETTER SI 2396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_SU, 0x30B9}, // KATAKANA LETTER SU 2406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_SE, 0x30BB}, // KATAKANA LETTER SE 2416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_SO, 0x30BD}, // KATAKANA LETTER SO 2426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_TA, 0x30BF}, // KATAKANA LETTER TA 2436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_CHI, 0x30C1}, // KATAKANA LETTER TI 2446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_TSU, 0x30C4}, // KATAKANA LETTER TU 2456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_TE, 0x30C6}, // KATAKANA LETTER TE 2466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_TO, 0x30C8}, // KATAKANA LETTER TO 2476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_NA, 0x30CA}, // KATAKANA LETTER NA 2486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_NI, 0x30CB}, // KATAKANA LETTER NI 2496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_NU, 0x30CC}, // KATAKANA LETTER NU 2506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_NE, 0x30CD}, // KATAKANA LETTER NE 2516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_NO, 0x30CE}, // KATAKANA LETTER NO 2526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_HA, 0x30CF}, // KATAKANA LETTER HA 2536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_HI, 0x30D2}, // KATAKANA LETTER HI 2546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_FU, 0x30D5}, // KATAKANA LETTER HU 2556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_HE, 0x30D8}, // KATAKANA LETTER HE 2566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_HO, 0x30DB}, // KATAKANA LETTER HO 2576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_MA, 0x30DE}, // KATAKANA LETTER MA 2586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_MI, 0x30DF}, // KATAKANA LETTER MI 2596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_MU, 0x30E0}, // KATAKANA LETTER MU 2606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_ME, 0x30E1}, // KATAKANA LETTER ME 2616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_MO, 0x30E2}, // KATAKANA LETTER MO 2626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_YA, 0x30E4}, // KATAKANA LETTER YA 2636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_YU, 0x30E6}, // KATAKANA LETTER YU 2646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_YO, 0x30E8}, // KATAKANA LETTER YO 2656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_RA, 0x30E9}, // KATAKANA LETTER RA 2666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_RI, 0x30EA}, // KATAKANA LETTER RI 2676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_RU, 0x30EB}, // KATAKANA LETTER RU 2686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_RE, 0x30EC}, // KATAKANA LETTER RE 2696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_RO, 0x30ED}, // KATAKANA LETTER RO 2706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_WA, 0x30EF}, // KATAKANA LETTER WA 2716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_kana_N, 0x30F3}, // KATAKANA LETTER N 2726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_voicedsound, 0x309B}, // KATAKANA-HIRAGANA VOICED SOUND MARK 2736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_semivoicedsound, 0x309C}, // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 2746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Arabic KeySyms partially map 1:1 to Unicode 2766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_comma, 0x060C}, // ARABIC COMMA 2776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_semicolon, 0x061B}, // ARABIC SEMICOLON 2786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_question_mark, 0x061F}, // ARABIC QUESTION MARK 2796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hamza, 0x0621}, // ARABIC LETTER HAMZA 2806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_maddaonalef, 0x0622}, // ARABIC LETTER ALEF WITH MADDA ABOVE 2816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hamzaonalef, 0x0623}, // ARABIC LETTER ALEF WITH HAMZA ABOVE 2826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hamzaonwaw, 0x0624}, // ARABIC LETTER WAW WITH HAMZA ABOVE 2836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hamzaunderalef, 0x0625}, // ARABIC LETTER ALEF WITH HAMZA BELOW 2846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hamzaonyeh, 0x0626}, // ARABIC LETTER YEH WITH HAMZA ABOVE 2856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_alef, 0x0627}, // ARABIC LETTER ALEF 2866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_beh, 0x0628}, // ARABIC LETTER BEH 2876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_tehmarbuta, 0x0629}, // ARABIC LETTER TEH MARBUTA 2886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_teh, 0x062A}, // ARABIC LETTER TEH 2896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_theh, 0x062B}, // ARABIC LETTER THEH 2906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_jeem, 0x062C}, // ARABIC LETTER JEEM 2916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_hah, 0x062D}, // ARABIC LETTER HAH 2926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_khah, 0x062E}, // ARABIC LETTER KHAH 2936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_dal, 0x062F}, // ARABIC LETTER DAL 2946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_thal, 0x0630}, // ARABIC LETTER THAL 2956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_ra, 0x0631}, // ARABIC LETTER REH 2966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_zain, 0x0632}, // ARABIC LETTER ZAIN 2976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_seen, 0x0633}, // ARABIC LETTER SEEN 2986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_sheen, 0x0634}, // ARABIC LETTER SHEEN 2996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_sad, 0x0635}, // ARABIC LETTER SAD 3006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_dad, 0x0636}, // ARABIC LETTER DAD 3016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_tah, 0x0637}, // ARABIC LETTER TAH 3026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_zah, 0x0638}, // ARABIC LETTER ZAH 3036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_ain, 0x0639}, // ARABIC LETTER AIN 3046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_ghain, 0x063A}, // ARABIC LETTER GHAIN 3056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_tatweel, 0x0640}, // ARABIC TATWEEL 3066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_feh, 0x0641}, // ARABIC LETTER FEH 3076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_qaf, 0x0642}, // ARABIC LETTER QAF 3086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_kaf, 0x0643}, // ARABIC LETTER KAF 3096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_lam, 0x0644}, // ARABIC LETTER LAM 3106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_meem, 0x0645}, // ARABIC LETTER MEEM 3116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_noon, 0x0646}, // ARABIC LETTER NOON 3126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_ha, 0x0647}, // ARABIC LETTER HEH 3136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_waw, 0x0648}, // ARABIC LETTER WAW 3146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_alefmaksura, 0x0649}, // ARABIC LETTER ALEF MAKSURA 3156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_yeh, 0x064A}, // ARABIC LETTER YEH 3166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_fathatan, 0x064B}, // ARABIC FATHATAN 3176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_dammatan, 0x064C}, // ARABIC DAMMATAN 3186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_kasratan, 0x064D}, // ARABIC KASRATAN 3196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_fatha, 0x064E}, // ARABIC FATHA 3206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_damma, 0x064F}, // ARABIC DAMMA 3216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_kasra, 0x0650}, // ARABIC KASRA 3226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_shadda, 0x0651}, // ARABIC SHADDA 3236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Arabic_sukun, 0x0652}, // ARABIC SUKUN 3246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 3256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Cyrillic KeySyms partially map 1:1 to Unicode 3266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Serbian_dje, 0x0452}, // CYRILLIC SMALL LETTER DJE 3276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_gje, 0x0453}, // CYRILLIC SMALL LETTER GJE 3286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_io, 0x0451}, // CYRILLIC SMALL LETTER IO 3296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_ie, 0x0454}, // CYRILLIC SMALL LETTER UKRAINIAN IE 3306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_dse, 0x0455}, // CYRILLIC SMALL LETTER DZE 3316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_i, 0x0456}, // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 3326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_yi, 0x0457}, // CYRILLIC SMALL LETTER YI 3336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_je, 0x0458}, // CYRILLIC SMALL LETTER JE 3346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_lje, 0x0459}, // CYRILLIC SMALL LETTER LJE 3356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_nje, 0x045A}, // CYRILLIC SMALL LETTER NJE 3366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Serbian_tshe, 0x045B}, // CYRILLIC SMALL LETTER TSHE 3376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_kje, 0x045C}, // CYRILLIC SMALL LETTER KJE 3386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_ghe_with_upturn, 0x0491}, // CYRILLIC SMALL LETTER GHE WITH UPTURN 3396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Byelorussian_shortu, 0x045E}, // CYRILLIC SMALL LETTER SHORT U 3406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_dzhe, 0x045F}, // CYRILLIC SMALL LETTER DZHE 3416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_numerosign, 0x2116}, // NUMERO SIGN 3426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Serbian_DJE, 0x0402}, // CYRILLIC CAPITAL LETTER DJE 3436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_GJE, 0x0403}, // CYRILLIC CAPITAL LETTER GJE 3446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_IO, 0x0401}, // CYRILLIC CAPITAL LETTER IO 3456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_IE, 0x0404}, // CYRILLIC CAPITAL LETTER UKRAINIAN IE 3466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_DSE, 0x0405}, // CYRILLIC CAPITAL LETTER DZE 3476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_I, 0x0406}, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 3486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_YI, 0x0407}, // CYRILLIC CAPITAL LETTER YI 3496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_JE, 0x0408}, // CYRILLIC CAPITAL LETTER JE 3506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_LJE, 0x0409}, // CYRILLIC CAPITAL LETTER LJE 3516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_NJE, 0x040A}, // CYRILLIC CAPITAL LETTER NJE 3526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Serbian_TSHE, 0x040B}, // CYRILLIC CAPITAL LETTER TSHE 3536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Macedonia_KJE, 0x040C}, // CYRILLIC CAPITAL LETTER KJE 3546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Ukrainian_GHE_WITH_UPTURN, 0x0490}, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN 3556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Byelorussian_SHORTU, 0x040E}, // CYRILLIC CAPITAL LETTER SHORT U 3566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_DZHE, 0x040F}, // CYRILLIC CAPITAL LETTER DZHE 3576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_yu, 0x044E}, // CYRILLIC SMALL LETTER YU 3586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_a, 0x0430}, // CYRILLIC SMALL LETTER A 3596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_be, 0x0431}, // CYRILLIC SMALL LETTER BE 3606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_tse, 0x0446}, // CYRILLIC SMALL LETTER TSE 3616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_de, 0x0434}, // CYRILLIC SMALL LETTER DE 3626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ie, 0x0435}, // CYRILLIC SMALL LETTER IE 3636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ef, 0x0444}, // CYRILLIC SMALL LETTER EF 3646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ghe, 0x0433}, // CYRILLIC SMALL LETTER GHE 3656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ha, 0x0445}, // CYRILLIC SMALL LETTER HA 3666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_i, 0x0438}, // CYRILLIC SMALL LETTER I 3676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_shorti, 0x0439}, // CYRILLIC SMALL LETTER SHORT I 3686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ka, 0x043A}, // CYRILLIC SMALL LETTER KA 3696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_el, 0x043B}, // CYRILLIC SMALL LETTER EL 3706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_em, 0x043C}, // CYRILLIC SMALL LETTER EM 3716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_en, 0x043D}, // CYRILLIC SMALL LETTER EN 3726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_o, 0x043E}, // CYRILLIC SMALL LETTER O 3736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_pe, 0x043F}, // CYRILLIC SMALL LETTER PE 3746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ya, 0x044F}, // CYRILLIC SMALL LETTER YA 3756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_er, 0x0440}, // CYRILLIC SMALL LETTER ER 3766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_es, 0x0441}, // CYRILLIC SMALL LETTER ES 3776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_te, 0x0442}, // CYRILLIC SMALL LETTER TE 3786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_u, 0x0443}, // CYRILLIC SMALL LETTER U 3796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_zhe, 0x0436}, // CYRILLIC SMALL LETTER ZHE 3806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ve, 0x0432}, // CYRILLIC SMALL LETTER VE 3816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_softsign, 0x044C}, // CYRILLIC SMALL LETTER SOFT SIGN 3826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_yeru, 0x044B}, // CYRILLIC SMALL LETTER YERU 3836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ze, 0x0437}, // CYRILLIC SMALL LETTER ZE 3846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_sha, 0x0448}, // CYRILLIC SMALL LETTER SHA 3856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_e, 0x044D}, // CYRILLIC SMALL LETTER E 3866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_shcha, 0x0449}, // CYRILLIC SMALL LETTER SHCHA 3876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_che, 0x0447}, // CYRILLIC SMALL LETTER CHE 3886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_hardsign, 0x044A}, // CYRILLIC SMALL LETTER HARD SIGN 3896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_YU, 0x042E}, // CYRILLIC CAPITAL LETTER YU 3906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_A, 0x0410}, // CYRILLIC CAPITAL LETTER A 3916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_BE, 0x0411}, // CYRILLIC CAPITAL LETTER BE 3926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_TSE, 0x0426}, // CYRILLIC CAPITAL LETTER TSE 3936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_DE, 0x0414}, // CYRILLIC CAPITAL LETTER DE 3946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_IE, 0x0415}, // CYRILLIC CAPITAL LETTER IE 3956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_EF, 0x0424}, // CYRILLIC CAPITAL LETTER EF 3966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_GHE, 0x0413}, // CYRILLIC CAPITAL LETTER GHE 3976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_HA, 0x0425}, // CYRILLIC CAPITAL LETTER HA 3986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_I, 0x0418}, // CYRILLIC CAPITAL LETTER I 3996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_SHORTI, 0x0419}, // CYRILLIC CAPITAL LETTER SHORT I 4006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_KA, 0x041A}, // CYRILLIC CAPITAL LETTER KA 4016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_EL, 0x041B}, // CYRILLIC CAPITAL LETTER EL 4026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_EM, 0x041C}, // CYRILLIC CAPITAL LETTER EM 4036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_EN, 0x041D}, // CYRILLIC CAPITAL LETTER EN 4046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_O, 0x041E}, // CYRILLIC CAPITAL LETTER O 4056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_PE, 0x041F}, // CYRILLIC CAPITAL LETTER PE 4066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_YA, 0x042F}, // CYRILLIC CAPITAL LETTER YA 4076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ER, 0x0420}, // CYRILLIC CAPITAL LETTER ER 4086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ES, 0x0421}, // CYRILLIC CAPITAL LETTER ES 4096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_TE, 0x0422}, // CYRILLIC CAPITAL LETTER TE 4106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_U, 0x0423}, // CYRILLIC CAPITAL LETTER U 4116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ZHE, 0x0416}, // CYRILLIC CAPITAL LETTER ZHE 4126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_VE, 0x0412}, // CYRILLIC CAPITAL LETTER VE 4136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_SOFTSIGN, 0x042C}, // CYRILLIC CAPITAL LETTER SOFT SIGN 4146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_YERU, 0x042B}, // CYRILLIC CAPITAL LETTER YERU 4156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_ZE, 0x0417}, // CYRILLIC CAPITAL LETTER ZE 4166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_SHA, 0x0428}, // CYRILLIC CAPITAL LETTER SHA 4176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_E, 0x042D}, // CYRILLIC CAPITAL LETTER E 4186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_SHCHA, 0x0429}, // CYRILLIC CAPITAL LETTER SHCHA 4196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_CHE, 0x0427}, // CYRILLIC CAPITAL LETTER CHE 4206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Cyrillic_HARDSIGN, 0x042A}, // CYRILLIC CAPITAL LETTER HARD SIGN 4216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Greek 4236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_ALPHAaccent, 0x0386}, // GREEK CAPITAL LETTER ALPHA WITH TONOS 4246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_EPSILONaccent, 0x0388}, // GREEK CAPITAL LETTER EPSILON WITH TONOS 4256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_ETAaccent, 0x0389}, // GREEK CAPITAL LETTER ETA WITH TONOS 4266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_IOTAaccent, 0x038A}, // GREEK CAPITAL LETTER IOTA WITH TONOS 4276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_IOTAdieresis, 0x03AA}, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 4286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_OMICRONaccent, 0x038C}, // GREEK CAPITAL LETTER OMICRON WITH TONOS 4296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_UPSILONaccent, 0x038E}, // GREEK CAPITAL LETTER UPSILON WITH TONOS 4306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_UPSILONdieresis, 0x03AB}, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 4316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_OMEGAaccent, 0x038F}, // GREEK CAPITAL LETTER OMEGA WITH TONOS 4326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_accentdieresis, 0x0385}, // GREEK DIALYTIKA TONOS 4336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_horizbar, 0x2015}, // HORIZONTAL BAR 4346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_alphaaccent, 0x03AC}, // GREEK SMALL LETTER ALPHA WITH TONOS 4356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_epsilonaccent, 0x03AD}, // GREEK SMALL LETTER EPSILON WITH TONOS 4366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_etaaccent, 0x03AE}, // GREEK SMALL LETTER ETA WITH TONOS 4376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_iotaaccent, 0x03AF}, // GREEK SMALL LETTER IOTA WITH TONOS 4386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_iotadieresis, 0x03CA}, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 4396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_iotaaccentdieresis, 0x0390}, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 4406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_omicronaccent, 0x03CC}, // GREEK SMALL LETTER OMICRON WITH TONOS 4416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_upsilonaccent, 0x03CD}, // GREEK SMALL LETTER UPSILON WITH TONOS 4426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_upsilondieresis, 0x03CB}, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 4436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_upsilonaccentdieresis, 0x03B0}, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 4446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_omegaaccent, 0x03CE}, // GREEK SMALL LETTER OMEGA WITH TONOS 4456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_ALPHA, 0x0391}, // GREEK CAPITAL LETTER ALPHA 4466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_BETA, 0x0392}, // GREEK CAPITAL LETTER BETA 4476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_GAMMA, 0x0393}, // GREEK CAPITAL LETTER GAMMA 4486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_DELTA, 0x0394}, // GREEK CAPITAL LETTER DELTA 4496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_EPSILON, 0x0395}, // GREEK CAPITAL LETTER EPSILON 4506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_ZETA, 0x0396}, // GREEK CAPITAL LETTER ZETA 4516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_ETA, 0x0397}, // GREEK CAPITAL LETTER ETA 4526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_THETA, 0x0398}, // GREEK CAPITAL LETTER THETA 4536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_IOTA, 0x0399}, // GREEK CAPITAL LETTER IOTA 4546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_KAPPA, 0x039A}, // GREEK CAPITAL LETTER KAPPA 4556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_LAMDA, 0x039B}, // GREEK CAPITAL LETTER LAMDA 4566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_LAMBDA, 0x039B}, // GREEK CAPITAL LETTER LAMDA 4576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_MU, 0x039C}, // GREEK CAPITAL LETTER MU 4586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_NU, 0x039D}, // GREEK CAPITAL LETTER NU 4596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_XI, 0x039E}, // GREEK CAPITAL LETTER XI 4606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_OMICRON, 0x039F}, // GREEK CAPITAL LETTER OMICRON 4616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_PI, 0x03A0}, // GREEK CAPITAL LETTER PI 4626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_RHO, 0x03A1}, // GREEK CAPITAL LETTER RHO 4636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_SIGMA, 0x03A3}, // GREEK CAPITAL LETTER SIGMA 4646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_TAU, 0x03A4}, // GREEK CAPITAL LETTER TAU 4656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_UPSILON, 0x03A5}, // GREEK CAPITAL LETTER UPSILON 4666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_PHI, 0x03A6}, // GREEK CAPITAL LETTER PHI 4676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_CHI, 0x03A7}, // GREEK CAPITAL LETTER CHI 4686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_PSI, 0x03A8}, // GREEK CAPITAL LETTER PSI 4696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_OMEGA, 0x03A9}, // GREEK CAPITAL LETTER OMEGA 4706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_alpha, 0x03B1}, // GREEK SMALL LETTER ALPHA 4716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_beta, 0x03B2}, // GREEK SMALL LETTER BETA 4726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_gamma, 0x03B3}, // GREEK SMALL LETTER GAMMA 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_delta, 0x03B4}, // GREEK SMALL LETTER DELTA 4746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_epsilon, 0x03B5}, // GREEK SMALL LETTER EPSILON 4756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_zeta, 0x03B6}, // GREEK SMALL LETTER ZETA 4766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_eta, 0x03B7}, // GREEK SMALL LETTER ETA 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_theta, 0x03B8}, // GREEK SMALL LETTER THETA 4786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_iota, 0x03B9}, // GREEK SMALL LETTER IOTA 4796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_kappa, 0x03BA}, // GREEK SMALL LETTER KAPPA 4806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_lamda, 0x03BB}, // GREEK SMALL LETTER LAMDA 4816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_lambda, 0x03BB}, // GREEK SMALL LETTER LAMDA 4826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_mu, 0x03BC}, // GREEK SMALL LETTER MU 4836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_nu, 0x03BD}, // GREEK SMALL LETTER NU 4846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_xi, 0x03BE}, // GREEK SMALL LETTER XI 4856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_omicron, 0x03BF}, // GREEK SMALL LETTER OMICRON 4866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_pi, 0x03C0}, // GREEK SMALL LETTER PI 4876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_rho, 0x03C1}, // GREEK SMALL LETTER RHO 4886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_sigma, 0x03C3}, // GREEK SMALL LETTER SIGMA 4896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_finalsmallsigma, 0x03C2}, // GREEK SMALL LETTER FINAL SIGMA 4906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_tau, 0x03C4}, // GREEK SMALL LETTER TAU 4916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_upsilon, 0x03C5}, // GREEK SMALL LETTER UPSILON 4926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_phi, 0x03C6}, // GREEK SMALL LETTER PHI 4936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_chi, 0x03C7}, // GREEK SMALL LETTER CHI 4946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_psi, 0x03C8}, // GREEK SMALL LETTER PSI 4956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Greek_omega, 0x03C9}, // GREEK SMALL LETTER OMEGA 4966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Technical 4986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftradical, 0x23B7}, // RADICAL SYMBOL BOTTOM 4996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_topleftradical, 0x250C}, // BOX DRAWINGS LIGHT DOWN AND RIGHT 5006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizconnector, 0x2500}, // BOX DRAWINGS LIGHT HORIZONTAL 5016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_topintegral, 0x2320}, // TOP HALF INTEGRAL 5026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_botintegral, 0x2321}, // BOTTOM HALF INTEGRAL 5036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_vertconnector, 0x2502}, // BOX DRAWINGS LIGHT VERTICAL 5046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_topleftsqbracket, 0x23A1}, // LEFT SQUARE BRACKET UPPER CORNER 5056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_botleftsqbracket, 0x23A3}, // LEFT SQUARE BRACKET LOWER CORNER 5066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_toprightsqbracket, 0x23A4}, // RIGHT SQUARE BRACKET UPPER CORNER 5076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_botrightsqbracket, 0x23A6}, // RIGHT SQUARE BRACKET LOWER CORNER 5086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_topleftparens, 0x239B}, // LEFT PARENTHESIS UPPER HOOK 5096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_botleftparens, 0x239D}, // LEFT PARENTHESIS LOWER HOOK 5106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_toprightparens, 0x239E}, // RIGHT PARENTHESIS UPPER HOOK 5116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_botrightparens, 0x23A0}, // RIGHT PARENTHESIS LOWER HOOK 5126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftmiddlecurlybrace, 0x23A8}, // LEFT CURLY BRACKET MIDDLE PIECE 5136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightmiddlecurlybrace, 0x23AC}, // RIGHT CURLY BRACKET MIDDLE PIECE 5146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lessthanequal, 0x2264}, // LESS-THAN OR EQUAL TO 5156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_notequal, 0x2260}, // NOT EQUAL TO 5166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_greaterthanequal, 0x2265}, // GREATER-THAN OR EQUAL TO 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_integral, 0x222B}, // INTEGRAL 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_therefore, 0x2234}, // THEREFORE 5196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_variation, 0x221D}, // PROPORTIONAL TO 5206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_infinity, 0x221E}, // INFINITY 5216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_nabla, 0x2207}, // NABLA 5226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_approximate, 0x223C}, // TILDE OPERATOR 5236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_similarequal, 0x2243}, // ASYMPTOTICALLY EQUAL TO 5246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ifonlyif, 0x21D4}, // LEFT RIGHT DOUBLE ARROW 5256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_implies, 0x21D2}, // RIGHTWARDS DOUBLE ARROW 5266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_identical, 0x2261}, // IDENTICAL TO 5276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_radical, 0x221A}, // SQUARE ROOT 5286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_includedin, 0x2282}, // SUBSET OF 5296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_includes, 0x2283}, // SUPERSET OF 5306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_intersection, 0x2229}, // INTERSECTION 5316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_union, 0x222A}, // UNION 5326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_logicaland, 0x2227}, // LOGICAL AND 5336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_logicalor, 0x2228}, // LOGICAL OR 5346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_partialderivative, 0x2202}, // PARTIAL DIFFERENTIAL 5356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_function, 0x0192}, // LATIN SMALL LETTER F WITH HOOK 5366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftarrow, 0x2190}, // LEFTWARDS ARROW 5376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_uparrow, 0x2191}, // UPWARDS ARROW 5386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightarrow, 0x2192}, // RIGHTWARDS ARROW 5396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_downarrow, 0x2193}, // DOWNWARDS ARROW 5406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Special 5426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_soliddiamond, 0x25C6}, // BLACK DIAMOND 5436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_checkerboard, 0x2592}, // MEDIUM SHADE 5446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ht, 0x2409}, // SYMBOL FOR HORIZONTAL TABULATION 5456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ff, 0x240C}, // SYMBOL FOR FORM FEED 5466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_cr, 0x240D}, // SYMBOL FOR CARRIAGE RETURN 5476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lf, 0x240A}, // SYMBOL FOR LINE FEED 5486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_nl, 0x2424}, // SYMBOL FOR NEWLINE 5496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_vt, 0x240B}, // SYMBOL FOR VERTICAL TABULATION 5506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lowrightcorner, 0x2518}, // BOX DRAWINGS LIGHT UP AND LEFT 5516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_uprightcorner, 0x2510}, // BOX DRAWINGS LIGHT DOWN AND LEFT 5526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_upleftcorner, 0x250C}, // BOX DRAWINGS LIGHT DOWN AND RIGHT 5536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lowleftcorner, 0x2514}, // BOX DRAWINGS LIGHT UP AND RIGHT 5546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_crossinglines, 0x253C}, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 5556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizlinescan1, 0x23BA}, // HORIZONTAL SCAN LINE-1 5566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizlinescan3, 0x23BB}, // HORIZONTAL SCAN LINE-3 5576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizlinescan5, 0x2500}, // BOX DRAWINGS LIGHT HORIZONTAL 5586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizlinescan7, 0x23BC}, // HORIZONTAL SCAN LINE-7 5596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_horizlinescan9, 0x23BD}, // HORIZONTAL SCAN LINE-9 5606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftt, 0x251C}, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 5616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightt, 0x2524}, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 5626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_bott, 0x2534}, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 5636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_topt, 0x252C}, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 5646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_vertbar, 0x2502}, // BOX DRAWINGS LIGHT VERTICAL 5656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Publishing 5676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emspace, 0x2003}, // EM SPACE 5686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_enspace, 0x2002}, // EN SPACE 5696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_em3space, 0x2004}, // THREE-PER-EM SPACE 5706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_em4space, 0x2005}, // FOUR-PER-EM SPACE 5716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_digitspace, 0x2007}, // FIGURE SPACE 5726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_punctspace, 0x2008}, // PUNCTUATION SPACE 5736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_thinspace, 0x2009}, // THIN SPACE 5746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hairspace, 0x200A}, // HAIR SPACE 5756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emdash, 0x2014}, // EM DASH 5766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_endash, 0x2013}, // EN DASH 5776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_signifblank, 0x2423}, // OPEN BOX 5786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ellipsis, 0x2026}, // HORIZONTAL ELLIPSIS 5796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_doubbaselinedot, 0x2025}, // TWO DOT LEADER 5806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_onethird, 0x2153}, // VULGAR FRACTION ONE THIRD 5816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_twothirds, 0x2154}, // VULGAR FRACTION TWO THIRDS 5826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_onefifth, 0x2155}, // VULGAR FRACTION ONE FIFTH 5836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_twofifths, 0x2156}, // VULGAR FRACTION TWO FIFTHS 5846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_threefifths, 0x2157}, // VULGAR FRACTION THREE FIFTHS 5856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_fourfifths, 0x2158}, // VULGAR FRACTION FOUR FIFTHS 5866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_onesixth, 0x2159}, // VULGAR FRACTION ONE SIXTH 5876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_fivesixths, 0x215A}, // VULGAR FRACTION FIVE SIXTHS 5886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_careof, 0x2105}, // CARE OF 5896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_figdash, 0x2012}, // FIGURE DASH 5906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftanglebracket, 0x27E8}, // MATHEMATICAL LEFT ANGLE BRACKET 5916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_decimalpoint, 0x002E}, // FULL STOP 5926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightanglebracket, 0x27E9}, // MATHEMATICAL RIGHT ANGLE BRACKET 5936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_oneeighth, 0x215B}, // VULGAR FRACTION ONE EIGHTH 5946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_threeeighths, 0x215C}, // VULGAR FRACTION THREE EIGHTHS 5956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_fiveeighths, 0x215D}, // VULGAR FRACTION FIVE EIGHTHS 5966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_seveneighths, 0x215E}, // VULGAR FRACTION SEVEN EIGHTHS 5976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_trademark, 0x2122}, // TRADE MARK SIGN 5986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_signaturemark, 0x2613}, // SALTIRE 5996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftopentriangle, 0x25C1}, // WHITE LEFT-POINTING TRIANGLE 6006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightopentriangle, 0x25B7}, // WHITE RIGHT-POINTING TRIANGLE 6016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emopencircle, 0x25CB}, // WHITE CIRCLE 6026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emopenrectangle, 0x25AF}, // WHITE VERTICAL RECTANGLE 6036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftsinglequotemark, 0x2018}, // LEFT SINGLE QUOTATION MARK 6046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightsinglequotemark, 0x2019}, // RIGHT SINGLE QUOTATION MARK 6056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftdoublequotemark, 0x201C}, // LEFT DOUBLE QUOTATION MARK 6066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightdoublequotemark, 0x201D}, // RIGHT DOUBLE QUOTATION MARK 6076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_prescription, 0x211E}, // PRESCRIPTION TAKE 6086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_minutes, 0x2032}, // PRIME 6096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_seconds, 0x2033}, // DOUBLE PRIME 6106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_latincross, 0x271D}, // LATIN CROSS 6116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_filledrectbullet, 0x25AC}, // BLACK RECTANGLE 6126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_filledlefttribullet, 0x25C0}, // BLACK LEFT-POINTING TRIANGLE 6136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_filledrighttribullet, 0x25B6}, // BLACK RIGHT-POINTING TRIANGLE 6146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emfilledcircle, 0x25CF}, // BLACK CIRCLE 6156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_emfilledrect, 0x25AE}, // BLACK VERTICAL RECTANGLE 6166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_enopencircbullet, 0x25E6}, // WHITE BULLET 6176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_enopensquarebullet, 0x25AB}, // WHITE SMALL SQUARE 6186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_openrectbullet, 0x25AD}, // WHITE RECTANGLE 6196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_opentribulletup, 0x25B3}, // WHITE UP-POINTING TRIANGLE 6206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_opentribulletdown, 0x25BD}, // WHITE DOWN-POINTING TRIANGLE 6216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_openstar, 0x2606}, // WHITE STAR 6226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_enfilledcircbullet, 0x2022}, // BULLET 6236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_enfilledsqbullet, 0x25AA}, // BLACK SMALL SQUARE 6246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_filledtribulletup, 0x25B2}, // BLACK UP-POINTING TRIANGLE 6256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_filledtribulletdown, 0x25BC}, // BLACK DOWN-POINTING TRIANGLE 6266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftpointer, 0x261C}, // WHITE LEFT POINTING INDEX 6276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightpointer, 0x261E}, // WHITE RIGHT POINTING INDEX 6286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_club, 0x2663}, // BLACK CLUB SUIT 6296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_diamond, 0x2666}, // BLACK DIAMOND SUIT 6306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_heart, 0x2665}, // BLACK HEART SUIT 6316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_maltesecross, 0x2720}, // MALTESE CROSS 6326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_dagger, 0x2020}, // DAGGER 6336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_doubledagger, 0x2021}, // DOUBLE DAGGER 6346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_checkmark, 0x2713}, // CHECK MARK 6356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_ballotcross, 0x2717}, // BALLOT X 6366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_musicalsharp, 0x266F}, // MUSIC SHARP SIGN 6376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_musicalflat, 0x266D}, // MUSIC FLAT SIGN 6386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_malesymbol, 0x2642}, // MALE SIGN 6396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_femalesymbol, 0x2640}, // FEMALE SIGN 6406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_telephone, 0x260E}, // BLACK TELEPHONE 6416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_telephonerecorder, 0x2315}, // TELEPHONE RECORDER 6426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_phonographcopyright, 0x2117}, // SOUND RECORDING COPYRIGHT 6436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_caret, 0x2038}, // CARET 6446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_singlelowquotemark, 0x201A}, // SINGLE LOW-9 QUOTATION MARK 6456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_doublelowquotemark, 0x201E}, // DOUBLE LOW-9 QUOTATION MARK 6466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 6476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // APL 6486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftcaret, 0x003C}, // LESS-THAN SIGN 6496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightcaret, 0x003E}, // GREATER-THAN SIGN 6506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_downcaret, 0x2228}, // LOGICAL OR 6516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_upcaret, 0x2227}, // LOGICAL AND 6526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_overbar, 0x00AF}, // MACRON 6536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_downtack, 0x22A4}, // DOWN TACK 6546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_upshoe, 0x2229}, // INTERSECTION 6556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_downstile, 0x230A}, // LEFT FLOOR 6566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_underbar, 0x005F}, // LOW LINE 6576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_jot, 0x2218}, // RING OPERATOR 6586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_quad, 0x2395}, // APL FUNCTIONAL SYMBOL QUAD 6596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_uptack, 0x22A5}, // UP TACK 6606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_circle, 0x25CB}, // WHITE CIRCLE 6616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_upstile, 0x2308}, // LEFT CEILING 6626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_downshoe, 0x222A}, // UNION 6636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_rightshoe, 0x2283}, // SUPERSET OF 6646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_leftshoe, 0x2282}, // SUBSET OF 6656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_lefttack, 0x22A3}, // LEFT TACK 6666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_righttack, 0x22A2}, // RIGHT TACK 6676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 6686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Hebrew 6696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_doublelowline, 0x2017}, // DOUBLE LOW LINE 6706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_aleph, 0x05D0}, // HEBREW LETTER ALEF 6716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_bet, 0x05D1}, // HEBREW LETTER BET 6726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_gimel, 0x05D2}, // HEBREW LETTER GIMEL 6736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_dalet, 0x05D3}, // HEBREW LETTER DALET 6746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_he, 0x05D4}, // HEBREW LETTER HE 6756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_waw, 0x05D5}, // HEBREW LETTER VAV 6766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_zain, 0x05D6}, // HEBREW LETTER ZAYIN 6776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_chet, 0x05D7}, // HEBREW LETTER HET 6786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_tet, 0x05D8}, // HEBREW LETTER TET 6796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_yod, 0x05D9}, // HEBREW LETTER YOD 6806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_finalkaph, 0x05DA}, // HEBREW LETTER FINAL KAF 6816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_kaph, 0x05DB}, // HEBREW LETTER KAF 6826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_lamed, 0x05DC}, // HEBREW LETTER LAMED 6836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_finalmem, 0x05DD}, // HEBREW LETTER FINAL MEM 6846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_mem, 0x05DE}, // HEBREW LETTER MEM 6856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_finalnun, 0x05DF}, // HEBREW LETTER FINAL NUN 6866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_nun, 0x05E0}, // HEBREW LETTER NUN 6876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_samech, 0x05E1}, // HEBREW LETTER SAMEKH 6886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_ayin, 0x05E2}, // HEBREW LETTER AYIN 6896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_finalpe, 0x05E3}, // HEBREW LETTER FINAL PE 6906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_pe, 0x05E4}, // HEBREW LETTER PE 6916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_finalzade, 0x05E5}, // HEBREW LETTER FINAL TSADI 6926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_zade, 0x05E6}, // HEBREW LETTER TSADI 6936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_qoph, 0x05E7}, // HEBREW LETTER QOF 6946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_resh, 0x05E8}, // HEBREW LETTER RESH 6956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_shin, 0x05E9}, // HEBREW LETTER SHIN 6966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_hebrew_taw, 0x05EA}, // HEBREW LETTER TAV 6976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 6986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Thai 6996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_kokai, 0x0E01}, // THAI CHARACTER KO KAI 7006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_khokhai, 0x0E02}, // THAI CHARACTER KHO KHAI 7016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_khokhuat, 0x0E03}, // THAI CHARACTER KHO KHUAT 7026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_khokhwai, 0x0E04}, // THAI CHARACTER KHO KHWAI 7036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_khokhon, 0x0E05}, // THAI CHARACTER KHO KHON 7046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_khorakhang, 0x0E06}, // THAI CHARACTER KHO RAKHANG 7056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_ngongu, 0x0E07}, // THAI CHARACTER NGO NGU 7066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_chochan, 0x0E08}, // THAI CHARACTER CHO CHAN 7076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_choching, 0x0E09}, // THAI CHARACTER CHO CHING 7086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_chochang, 0x0E0A}, // THAI CHARACTER CHO CHANG 7096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_soso, 0x0E0B}, // THAI CHARACTER SO SO 7106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_chochoe, 0x0E0C}, // THAI CHARACTER CHO CHOE 7116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_yoying, 0x0E0D}, // THAI CHARACTER YO YING 7126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_dochada, 0x0E0E}, // THAI CHARACTER DO CHADA 7136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_topatak, 0x0E0F}, // THAI CHARACTER TO PATAK 7146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thothan, 0x0E10}, // THAI CHARACTER THO THAN 7156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thonangmontho, 0x0E11}, // THAI CHARACTER THO NANGMONTHO 7166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thophuthao, 0x0E12}, // THAI CHARACTER THO PHUTHAO 7176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_nonen, 0x0E13}, // THAI CHARACTER NO NEN 7186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_dodek, 0x0E14}, // THAI CHARACTER DO DEK 7196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_totao, 0x0E15}, // THAI CHARACTER TO TAO 7206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thothung, 0x0E16}, // THAI CHARACTER THO THUNG 7216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thothahan, 0x0E17}, // THAI CHARACTER THO THAHAN 7226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thothong, 0x0E18}, // THAI CHARACTER THO THONG 7236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_nonu, 0x0E19}, // THAI CHARACTER NO NU 7246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_bobaimai, 0x0E1A}, // THAI CHARACTER BO BAIMAI 7256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_popla, 0x0E1B}, // THAI CHARACTER PO PLA 7266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_phophung, 0x0E1C}, // THAI CHARACTER PHO PHUNG 7276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_fofa, 0x0E1D}, // THAI CHARACTER FO FA 7286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_phophan, 0x0E1E}, // THAI CHARACTER PHO PHAN 7296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_fofan, 0x0E1F}, // THAI CHARACTER FO FAN 7306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_phosamphao, 0x0E20}, // THAI CHARACTER PHO SAMPHAO 7316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_moma, 0x0E21}, // THAI CHARACTER MO MA 7326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_yoyak, 0x0E22}, // THAI CHARACTER YO YAK 7336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_rorua, 0x0E23}, // THAI CHARACTER RO RUA 7346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_ru, 0x0E24}, // THAI CHARACTER RU 7356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_loling, 0x0E25}, // THAI CHARACTER LO LING 7366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lu, 0x0E26}, // THAI CHARACTER LU 7376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_wowaen, 0x0E27}, // THAI CHARACTER WO WAEN 7386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sosala, 0x0E28}, // THAI CHARACTER SO SALA 7396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sorusi, 0x0E29}, // THAI CHARACTER SO RUSI 7406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sosua, 0x0E2A}, // THAI CHARACTER SO SUA 7416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_hohip, 0x0E2B}, // THAI CHARACTER HO HIP 7426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lochula, 0x0E2C}, // THAI CHARACTER LO CHULA 7436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_oang, 0x0E2D}, // THAI CHARACTER O ANG 7446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_honokhuk, 0x0E2E}, // THAI CHARACTER HO NOKHUK 7456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_paiyannoi, 0x0E2F}, // THAI CHARACTER PAIYANNOI 7466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraa, 0x0E30}, // THAI CHARACTER SARA A 7476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maihanakat, 0x0E31}, // THAI CHARACTER MAI HAN-AKAT 7486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraaa, 0x0E32}, // THAI CHARACTER SARA AA 7496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraam, 0x0E33}, // THAI CHARACTER SARA AM 7506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarai, 0x0E34}, // THAI CHARACTER SARA I 7516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraii, 0x0E35}, // THAI CHARACTER SARA II 7526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraue, 0x0E36}, // THAI CHARACTER SARA UE 7536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarauee, 0x0E37}, // THAI CHARACTER SARA UEE 7546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarau, 0x0E38}, // THAI CHARACTER SARA U 7556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarauu, 0x0E39}, // THAI CHARACTER SARA UU 7566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_phinthu, 0x0E3A}, // THAI CHARACTER PHINTHU 7576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_baht, 0x0E3F}, // THAI CURRENCY SYMBOL BAHT 7586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarae, 0x0E40}, // THAI CHARACTER SARA E 7596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraae, 0x0E41}, // THAI CHARACTER SARA AE 7606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_sarao, 0x0E42}, // THAI CHARACTER SARA O 7616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraaimaimuan, 0x0E43}, // THAI CHARACTER SARA AI MAIMUAN 7626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_saraaimaimalai, 0x0E44}, // THAI CHARACTER SARA AI MAIMALAI 7636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lakkhangyao, 0x0E45}, // THAI CHARACTER LAKKHANGYAO 7646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maiyamok, 0x0E46}, // THAI CHARACTER MAIYAMOK 7656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maitaikhu, 0x0E47}, // THAI CHARACTER MAITAIKHU 7666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maiek, 0x0E48}, // THAI CHARACTER MAI EK 7676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maitho, 0x0E49}, // THAI CHARACTER MAI THO 7686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maitri, 0x0E4A}, // THAI CHARACTER MAI TRI 7696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_maichattawa, 0x0E4B}, // THAI CHARACTER MAI CHATTAWA 7706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_thanthakhat, 0x0E4C}, // THAI CHARACTER THANTHAKHAT 7716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_nikhahit, 0x0E4D}, // THAI CHARACTER NIKHAHIT 7726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_leksun, 0x0E50}, // THAI DIGIT ZERO 7736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_leknung, 0x0E51}, // THAI DIGIT ONE 7746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_leksong, 0x0E52}, // THAI DIGIT TWO 7756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_leksam, 0x0E53}, // THAI DIGIT THREE 7766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_leksi, 0x0E54}, // THAI DIGIT FOUR 7776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lekha, 0x0E55}, // THAI DIGIT FIVE 7786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lekhok, 0x0E56}, // THAI DIGIT SIX 7796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lekchet, 0x0E57}, // THAI DIGIT SEVEN 7806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lekpaet, 0x0E58}, // THAI DIGIT EIGHT 7816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Thai_lekkao, 0x0E59}, // THAI DIGIT NINE 7826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Korean 7846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_Korean_Won, 0x20A9}, // WON SIGN 7856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Armenian KeySyms map 1:1 to Unicode 7876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Georgian KeySyms map 1:1 to Unicode 7896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Azeri KeySyms map 1:1 to Unicode 7916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Vietnamese KeySyms map 1:1 to Unicode 7936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Currency KeySyms partially map 1:1 to Unicode 7956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) {XK_EuroSign, 0x20AC}, // EURO SIGN 7966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Mathematical KeySyms map 1:1 to Unicode 7986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Braille KeySyms map 1:1 to Unicode 8006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Sinhala KeySyms map 1:1 to Unicode 8026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 8036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class KeySymToUnicode { 8056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public: 8066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) KeySymToUnicode() 8076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) : keysym_to_unicode_map_(arraysize(g_keysym_to_unicode_table)) { 8086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) for (size_t i = 0; i < arraysize(g_keysym_to_unicode_table); ++i) { 8096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) keysym_to_unicode_map_[g_keysym_to_unicode_table[i].keysym] = 8106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) g_keysym_to_unicode_table[i].unicode; 8116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 8126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 8136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) uint16_t UnicodeFromKeySym(KeySym keysym) const { 8156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Latin-1 characters have the same representation. 8166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if ((0x0020 <= keysym && keysym <= 0x007e) || 8176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) (0x00a0 <= keysym && keysym <= 0x00ff)) 8186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return static_cast<uint16_t>(keysym); 8196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Unicode-style KeySyms. 8216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if ((keysym & 0xffe00000) == 0x01000000) { 8226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) uint32_t unicode = static_cast<uint32_t>(keysym & 0x1fffff); 8236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (unicode & ~0xffff) 8246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return 0; // We don't support characters outside the Basic Plane. 8256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return static_cast<uint16_t>(unicode); 8266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 8276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Other KeySyms which are not Unicode-style. 8296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) KeySymToUnicodeMap::const_iterator i = 8306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) keysym_to_unicode_map_.find(keysym); 8316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return i != keysym_to_unicode_map_.end() ? i->second : 0; 8326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 8336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private: 8356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) typedef std::unordered_map<KeySym, uint16_t> KeySymToUnicodeMap; 8366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) KeySymToUnicodeMap keysym_to_unicode_map_; 8376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(KeySymToUnicode); 8396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 8406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)static base::LazyInstance<KeySymToUnicode>::Leaky g_keysym_to_unicode = 8426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) LAZY_INSTANCE_INITIALIZER; 8436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)uint16_t GetUnicodeCharacterFromXKeySym(unsigned long keysym) { 8456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return g_keysym_to_unicode.Get().UnicodeFromKeySym( 8466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static_cast<KeySym>(keysym)); 8476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 8486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 8496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace ui 850