OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "ui/events/x/keysym_to_unicode.h" |
| 6 |
| 7 #define XK_MISCELLANY |
| 8 #define XK_LATIN1 |
| 9 #define XK_LATIN2 |
| 10 #define XK_LATIN3 |
| 11 #define XK_LATIN4 |
| 12 #define XK_LATIN8 |
| 13 #define XK_LATIN9 |
| 14 #define XK_KATAKANA |
| 15 #define XK_ARABIC |
| 16 #define XK_CYRILLIC |
| 17 #define XK_GREEK |
| 18 #define XK_TECHNICAL |
| 19 #define XK_SPECIAL |
| 20 #define XK_PUBLISHING |
| 21 #define XK_APL |
| 22 #define XK_HEBREW |
| 23 #define XK_THAI |
| 24 #define XK_KOREAN |
| 25 #define XK_ARMENIAN |
| 26 #define XK_GEORGIAN |
| 27 #define XK_CAUCASUS |
| 28 #define XK_VIETNAMESE |
| 29 #define XK_CURRENCY |
| 30 #define XK_MATHEMATICAL |
| 31 #define XK_BRAILLE |
| 32 #define XK_SINHALA |
| 33 #include <X11/X.h> |
| 34 #include <X11/keysym.h> |
| 35 |
| 36 #include <unordered_map> |
| 37 |
| 38 #include "base/lazy_instance.h" |
| 39 |
| 40 namespace ui { |
| 41 |
| 42 const struct { |
| 43 KeySym keysym; |
| 44 uint16_t unicode; |
| 45 } g_keysym_to_unicode_table[] = { |
| 46 // Control characters |
| 47 {XK_BackSpace, 0x0008}, |
| 48 {XK_Tab, 0x0009}, |
| 49 {XK_Linefeed, 0x000a}, |
| 50 {XK_Clear, 0x000b}, |
| 51 {XK_Return, 0x000d}, |
| 52 {XK_Escape, 0x001b}, |
| 53 {XK_Delete, 0x007f}, |
| 54 |
| 55 // Numeric keypad |
| 56 {XK_KP_Space, 0x0020}, |
| 57 {XK_KP_Tab, 0x0009}, |
| 58 {XK_KP_Enter, 0x000d}, |
| 59 {XK_KP_Equal, 0x003d}, |
| 60 {XK_KP_Multiply, 0x002a}, |
| 61 {XK_KP_Add, 0x002b}, |
| 62 {XK_KP_Separator, 0x002c}, |
| 63 {XK_KP_Subtract, 0x002d}, |
| 64 {XK_KP_Decimal, 0x002e}, |
| 65 {XK_KP_Divide, 0x002f}, |
| 66 {XK_KP_0, 0x0030}, |
| 67 {XK_KP_1, 0x0031}, |
| 68 {XK_KP_2, 0x0032}, |
| 69 {XK_KP_3, 0x0033}, |
| 70 {XK_KP_4, 0x0034}, |
| 71 {XK_KP_5, 0x0035}, |
| 72 {XK_KP_6, 0x0036}, |
| 73 {XK_KP_7, 0x0037}, |
| 74 {XK_KP_8, 0x0038}, |
| 75 {XK_KP_9, 0x0039}, |
| 76 |
| 77 // Latin 1 KeySyms map 1:1 to Unicode |
| 78 |
| 79 // Latin 2 |
| 80 {XK_Aogonek, 0x0104}, // LATIN CAPITAL LETTER A WITH OGON
EK |
| 81 {XK_breve, 0x02D8}, // BREVE |
| 82 {XK_Lstroke, 0x0141}, // LATIN CAPITAL LETTER L WITH STRO
KE |
| 83 {XK_Lcaron, 0x013D}, // LATIN CAPITAL LETTER L WITH CARO
N |
| 84 {XK_Sacute, 0x015A}, // LATIN CAPITAL LETTER S WITH ACUT
E |
| 85 {XK_Scaron, 0x0160}, // LATIN CAPITAL LETTER S WITH CARO
N |
| 86 {XK_Scedilla, 0x015E}, // LATIN CAPITAL LETTER S WITH CEDI
LLA |
| 87 {XK_Tcaron, 0x0164}, // LATIN CAPITAL LETTER T WITH CARO
N |
| 88 {XK_Zacute, 0x0179}, // LATIN CAPITAL LETTER Z WITH ACUT
E |
| 89 {XK_Zcaron, 0x017D}, // LATIN CAPITAL LETTER Z WITH CARO
N |
| 90 {XK_Zabovedot, 0x017B}, // LATIN CAPITAL LETTER Z WITH DOT
ABOVE |
| 91 {XK_aogonek, 0x0105}, // LATIN SMALL LETTER A WITH OGONEK |
| 92 {XK_ogonek, 0x02DB}, // OGONEK |
| 93 {XK_lstroke, 0x0142}, // LATIN SMALL LETTER L WITH STROKE |
| 94 {XK_lcaron, 0x013E}, // LATIN SMALL LETTER L WITH CARON |
| 95 {XK_sacute, 0x015B}, // LATIN SMALL LETTER S WITH ACUTE |
| 96 {XK_caron, 0x02C7}, // CARON |
| 97 {XK_scaron, 0x0161}, // LATIN SMALL LETTER S WITH CARON |
| 98 {XK_scedilla, 0x015F}, // LATIN SMALL LETTER S WITH CEDILL
A |
| 99 {XK_tcaron, 0x0165}, // LATIN SMALL LETTER T WITH CARON |
| 100 {XK_zacute, 0x017A}, // LATIN SMALL LETTER Z WITH ACUTE |
| 101 {XK_doubleacute, 0x02DD}, // DOUBLE ACUTE ACCENT |
| 102 {XK_zcaron, 0x017E}, // LATIN SMALL LETTER Z WITH CARON |
| 103 {XK_zabovedot, 0x017C}, // LATIN SMALL LETTER Z WITH DOT AB
OVE |
| 104 {XK_Racute, 0x0154}, // LATIN CAPITAL LETTER R WITH ACUT
E |
| 105 {XK_Abreve, 0x0102}, // LATIN CAPITAL LETTER A WITH BREV
E |
| 106 {XK_Lacute, 0x0139}, // LATIN CAPITAL LETTER L WITH ACUT
E |
| 107 {XK_Cacute, 0x0106}, // LATIN CAPITAL LETTER C WITH ACUT
E |
| 108 {XK_Ccaron, 0x010C}, // LATIN CAPITAL LETTER C WITH CARO
N |
| 109 {XK_Eogonek, 0x0118}, // LATIN CAPITAL LETTER E WITH OGON
EK |
| 110 {XK_Ecaron, 0x011A}, // LATIN CAPITAL LETTER E WITH CARO
N |
| 111 {XK_Dcaron, 0x010E}, // LATIN CAPITAL LETTER D WITH CARO
N |
| 112 {XK_Dstroke, 0x0110}, // LATIN CAPITAL LETTER D WITH STRO
KE |
| 113 {XK_Nacute, 0x0143}, // LATIN CAPITAL LETTER N WITH ACUT
E |
| 114 {XK_Ncaron, 0x0147}, // LATIN CAPITAL LETTER N WITH CARO
N |
| 115 {XK_Odoubleacute, 0x0150}, // LATIN CAPITAL LETTER O WITH DOUB
LE ACUTE |
| 116 {XK_Rcaron, 0x0158}, // LATIN CAPITAL LETTER R WITH CARO
N |
| 117 {XK_Uring, 0x016E}, // LATIN CAPITAL LETTER U WITH RING
ABOVE |
| 118 {XK_Udoubleacute, 0x0170}, // LATIN CAPITAL LETTER U WITH DOUB
LE ACUTE |
| 119 {XK_Tcedilla, 0x0162}, // LATIN CAPITAL LETTER T WITH CEDI
LLA |
| 120 {XK_racute, 0x0155}, // LATIN SMALL LETTER R WITH ACUTE |
| 121 {XK_abreve, 0x0103}, // LATIN SMALL LETTER A WITH BREVE |
| 122 {XK_lacute, 0x013A}, // LATIN SMALL LETTER L WITH ACUTE |
| 123 {XK_cacute, 0x0107}, // LATIN SMALL LETTER C WITH ACUTE |
| 124 {XK_ccaron, 0x010D}, // LATIN SMALL LETTER C WITH CARON |
| 125 {XK_eogonek, 0x0119}, // LATIN SMALL LETTER E WITH OGONEK |
| 126 {XK_ecaron, 0x011B}, // LATIN SMALL LETTER E WITH CARON |
| 127 {XK_dcaron, 0x010F}, // LATIN SMALL LETTER D WITH CARON |
| 128 {XK_dstroke, 0x0111}, // LATIN SMALL LETTER D WITH STROKE |
| 129 {XK_nacute, 0x0144}, // LATIN SMALL LETTER N WITH ACUTE |
| 130 {XK_ncaron, 0x0148}, // LATIN SMALL LETTER N WITH CARON |
| 131 {XK_odoubleacute, 0x0151}, // LATIN SMALL LETTER O WITH DOUBLE
ACUTE |
| 132 {XK_rcaron, 0x0159}, // LATIN SMALL LETTER R WITH CARON |
| 133 {XK_uring, 0x016F}, // LATIN SMALL LETTER U WITH RING A
BOVE |
| 134 {XK_udoubleacute, 0x0171}, // LATIN SMALL LETTER U WITH DOUBLE
ACUTE |
| 135 {XK_tcedilla, 0x0163}, // LATIN SMALL LETTER T WITH CEDILL
A |
| 136 {XK_abovedot, 0x02D9}, // DOT ABOVE |
| 137 |
| 138 // Latin 3 |
| 139 {XK_Hstroke, 0x0126}, // LATIN CAPITAL LETTER H WITH STRO
KE |
| 140 {XK_Hcircumflex, 0x0124}, // LATIN CAPITAL LETTER H WITH CIRC
UMFLEX |
| 141 {XK_Iabovedot, 0x0130}, // LATIN CAPITAL LETTER I WITH DOT
ABOVE |
| 142 {XK_Gbreve, 0x011E}, // LATIN CAPITAL LETTER G WITH BREV
E |
| 143 {XK_Jcircumflex, 0x0134}, // LATIN CAPITAL LETTER J WITH CIRC
UMFLEX |
| 144 {XK_hstroke, 0x0127}, // LATIN SMALL LETTER H WITH STROKE |
| 145 {XK_hcircumflex, 0x0125}, // LATIN SMALL LETTER H WITH CIRCUM
FLEX |
| 146 {XK_idotless, 0x0131}, // LATIN SMALL LETTER DOTLESS I |
| 147 {XK_gbreve, 0x011F}, // LATIN SMALL LETTER G WITH BREVE |
| 148 {XK_jcircumflex, 0x0135}, // LATIN SMALL LETTER J WITH CIRCUM
FLEX |
| 149 {XK_Cabovedot, 0x010A}, // LATIN CAPITAL LETTER C WITH DOT
ABOVE |
| 150 {XK_Ccircumflex, 0x0108}, // LATIN CAPITAL LETTER C WITH CIRC
UMFLEX |
| 151 {XK_Gabovedot, 0x0120}, // LATIN CAPITAL LETTER G WITH DOT
ABOVE |
| 152 {XK_Gcircumflex, 0x011C}, // LATIN CAPITAL LETTER G WITH CIRC
UMFLEX |
| 153 {XK_Ubreve, 0x016C}, // LATIN CAPITAL LETTER U WITH BREV
E |
| 154 {XK_Scircumflex, 0x015C}, // LATIN CAPITAL LETTER S WITH CIRC
UMFLEX |
| 155 {XK_cabovedot, 0x010B}, // LATIN SMALL LETTER C WITH DOT AB
OVE |
| 156 {XK_ccircumflex, 0x0109}, // LATIN SMALL LETTER C WITH CIRCUM
FLEX |
| 157 {XK_gabovedot, 0x0121}, // LATIN SMALL LETTER G WITH DOT AB
OVE |
| 158 {XK_gcircumflex, 0x011D}, // LATIN SMALL LETTER G WITH CIRCUM
FLEX |
| 159 {XK_ubreve, 0x016D}, // LATIN SMALL LETTER U WITH BREVE |
| 160 {XK_scircumflex, 0x015D}, // LATIN SMALL LETTER S WITH CIRCUM
FLEX |
| 161 |
| 162 // Latin 4 |
| 163 {XK_kra, 0x0138}, // LATIN SMALL LETTER KRA |
| 164 {XK_Rcedilla, 0x0156}, // LATIN CAPITAL LETTER R WITH CEDI
LLA |
| 165 {XK_Itilde, 0x0128}, // LATIN CAPITAL LETTER I WITH TILD
E |
| 166 {XK_Lcedilla, 0x013B}, // LATIN CAPITAL LETTER L WITH CEDI
LLA |
| 167 {XK_Emacron, 0x0112}, // LATIN CAPITAL LETTER E WITH MACR
ON |
| 168 {XK_Gcedilla, 0x0122}, // LATIN CAPITAL LETTER G WITH CEDI
LLA |
| 169 {XK_Tslash, 0x0166}, // LATIN CAPITAL LETTER T WITH STRO
KE |
| 170 {XK_rcedilla, 0x0157}, // LATIN SMALL LETTER R WITH CEDILL
A |
| 171 {XK_itilde, 0x0129}, // LATIN SMALL LETTER I WITH TILDE |
| 172 {XK_lcedilla, 0x013C}, // LATIN SMALL LETTER L WITH CEDILL
A |
| 173 {XK_emacron, 0x0113}, // LATIN SMALL LETTER E WITH MACRON |
| 174 {XK_gcedilla, 0x0123}, // LATIN SMALL LETTER G WITH CEDILL
A |
| 175 {XK_tslash, 0x0167}, // LATIN SMALL LETTER T WITH STROKE |
| 176 {XK_ENG, 0x014A}, // LATIN CAPITAL LETTER ENG |
| 177 {XK_eng, 0x014B}, // LATIN SMALL LETTER ENG |
| 178 {XK_Amacron, 0x0100}, // LATIN CAPITAL LETTER A WITH MACR
ON |
| 179 {XK_Iogonek, 0x012E}, // LATIN CAPITAL LETTER I WITH OGON
EK |
| 180 {XK_Eabovedot, 0x0116}, // LATIN CAPITAL LETTER E WITH DOT
ABOVE |
| 181 {XK_Imacron, 0x012A}, // LATIN CAPITAL LETTER I WITH MACR
ON |
| 182 {XK_Ncedilla, 0x0145}, // LATIN CAPITAL LETTER N WITH CEDI
LLA |
| 183 {XK_Omacron, 0x014C}, // LATIN CAPITAL LETTER O WITH MACR
ON |
| 184 {XK_Kcedilla, 0x0136}, // LATIN CAPITAL LETTER K WITH CEDI
LLA |
| 185 {XK_Uogonek, 0x0172}, // LATIN CAPITAL LETTER U WITH OGON
EK |
| 186 {XK_Utilde, 0x0168}, // LATIN CAPITAL LETTER U WITH TILD
E |
| 187 {XK_Umacron, 0x016A}, // LATIN CAPITAL LETTER U WITH MACR
ON |
| 188 {XK_amacron, 0x0101}, // LATIN SMALL LETTER A WITH MACRON |
| 189 {XK_iogonek, 0x012F}, // LATIN SMALL LETTER I WITH OGONEK |
| 190 {XK_eabovedot, 0x0117}, // LATIN SMALL LETTER E WITH DOT AB
OVE |
| 191 {XK_imacron, 0x012B}, // LATIN SMALL LETTER I WITH MACRON |
| 192 {XK_ncedilla, 0x0146}, // LATIN SMALL LETTER N WITH CEDILL
A |
| 193 {XK_omacron, 0x014D}, // LATIN SMALL LETTER O WITH MACRON |
| 194 {XK_kcedilla, 0x0137}, // LATIN SMALL LETTER K WITH CEDILL
A |
| 195 {XK_uogonek, 0x0173}, // LATIN SMALL LETTER U WITH OGONEK |
| 196 {XK_utilde, 0x0169}, // LATIN SMALL LETTER U WITH TILDE |
| 197 {XK_umacron, 0x016B}, // LATIN SMALL LETTER U WITH MACRON |
| 198 |
| 199 // Latin 8 KeySyms map 1:1 to Unicode |
| 200 |
| 201 // Latin 9 |
| 202 {XK_OE, 0x0152}, // LATIN CAPITAL LIGATURE OE |
| 203 {XK_oe, 0x0153}, // LATIN SMALL LIGATURE OE |
| 204 {XK_Ydiaeresis, 0x0178}, // LATIN CAPITAL LETTER Y WITH DIAE
RESIS |
| 205 |
| 206 // Katakana |
| 207 {XK_overline, 0x203E}, // OVERLINE |
| 208 {XK_kana_fullstop, 0x3002}, // IDEOGRAPHIC FULL STOP |
| 209 {XK_kana_openingbracket, 0x300C}, // LEFT CORNER BRACKET |
| 210 {XK_kana_closingbracket, 0x300D}, // RIGHT CORNER BRACKET |
| 211 {XK_kana_comma, 0x3001}, // IDEOGRAPHIC COMMA |
| 212 {XK_kana_conjunctive, 0x30FB}, // KATAKANA MIDDLE DOT |
| 213 {XK_kana_WO, 0x30F2}, // KATAKANA LETTER WO |
| 214 {XK_kana_a, 0x30A1}, // KATAKANA LETTER SMALL A |
| 215 {XK_kana_i, 0x30A3}, // KATAKANA LETTER SMALL I |
| 216 {XK_kana_u, 0x30A5}, // KATAKANA LETTER SMALL U |
| 217 {XK_kana_e, 0x30A7}, // KATAKANA LETTER SMALL E |
| 218 {XK_kana_o, 0x30A9}, // KATAKANA LETTER SMALL O |
| 219 {XK_kana_ya, 0x30E3}, // KATAKANA LETTER SMALL YA |
| 220 {XK_kana_yu, 0x30E5}, // KATAKANA LETTER SMALL YU |
| 221 {XK_kana_yo, 0x30E7}, // KATAKANA LETTER SMALL YO |
| 222 {XK_kana_tsu, 0x30C3}, // KATAKANA LETTER SMALL TU |
| 223 {XK_prolongedsound, 0x30FC}, // KATAKANA-HIRAGANA PROLONGED SOUN
D MARK |
| 224 {XK_kana_A, 0x30A2}, // KATAKANA LETTER A |
| 225 {XK_kana_I, 0x30A4}, // KATAKANA LETTER I |
| 226 {XK_kana_U, 0x30A6}, // KATAKANA LETTER U |
| 227 {XK_kana_E, 0x30A8}, // KATAKANA LETTER E |
| 228 {XK_kana_O, 0x30AA}, // KATAKANA LETTER O |
| 229 {XK_kana_KA, 0x30AB}, // KATAKANA LETTER KA |
| 230 {XK_kana_KI, 0x30AD}, // KATAKANA LETTER KI |
| 231 {XK_kana_KU, 0x30AF}, // KATAKANA LETTER KU |
| 232 {XK_kana_KE, 0x30B1}, // KATAKANA LETTER KE |
| 233 {XK_kana_KO, 0x30B3}, // KATAKANA LETTER KO |
| 234 {XK_kana_SA, 0x30B5}, // KATAKANA LETTER SA |
| 235 {XK_kana_SHI, 0x30B7}, // KATAKANA LETTER SI |
| 236 {XK_kana_SU, 0x30B9}, // KATAKANA LETTER SU |
| 237 {XK_kana_SE, 0x30BB}, // KATAKANA LETTER SE |
| 238 {XK_kana_SO, 0x30BD}, // KATAKANA LETTER SO |
| 239 {XK_kana_TA, 0x30BF}, // KATAKANA LETTER TA |
| 240 {XK_kana_CHI, 0x30C1}, // KATAKANA LETTER TI |
| 241 {XK_kana_TSU, 0x30C4}, // KATAKANA LETTER TU |
| 242 {XK_kana_TE, 0x30C6}, // KATAKANA LETTER TE |
| 243 {XK_kana_TO, 0x30C8}, // KATAKANA LETTER TO |
| 244 {XK_kana_NA, 0x30CA}, // KATAKANA LETTER NA |
| 245 {XK_kana_NI, 0x30CB}, // KATAKANA LETTER NI |
| 246 {XK_kana_NU, 0x30CC}, // KATAKANA LETTER NU |
| 247 {XK_kana_NE, 0x30CD}, // KATAKANA LETTER NE |
| 248 {XK_kana_NO, 0x30CE}, // KATAKANA LETTER NO |
| 249 {XK_kana_HA, 0x30CF}, // KATAKANA LETTER HA |
| 250 {XK_kana_HI, 0x30D2}, // KATAKANA LETTER HI |
| 251 {XK_kana_FU, 0x30D5}, // KATAKANA LETTER HU |
| 252 {XK_kana_HE, 0x30D8}, // KATAKANA LETTER HE |
| 253 {XK_kana_HO, 0x30DB}, // KATAKANA LETTER HO |
| 254 {XK_kana_MA, 0x30DE}, // KATAKANA LETTER MA |
| 255 {XK_kana_MI, 0x30DF}, // KATAKANA LETTER MI |
| 256 {XK_kana_MU, 0x30E0}, // KATAKANA LETTER MU |
| 257 {XK_kana_ME, 0x30E1}, // KATAKANA LETTER ME |
| 258 {XK_kana_MO, 0x30E2}, // KATAKANA LETTER MO |
| 259 {XK_kana_YA, 0x30E4}, // KATAKANA LETTER YA |
| 260 {XK_kana_YU, 0x30E6}, // KATAKANA LETTER YU |
| 261 {XK_kana_YO, 0x30E8}, // KATAKANA LETTER YO |
| 262 {XK_kana_RA, 0x30E9}, // KATAKANA LETTER RA |
| 263 {XK_kana_RI, 0x30EA}, // KATAKANA LETTER RI |
| 264 {XK_kana_RU, 0x30EB}, // KATAKANA LETTER RU |
| 265 {XK_kana_RE, 0x30EC}, // KATAKANA LETTER RE |
| 266 {XK_kana_RO, 0x30ED}, // KATAKANA LETTER RO |
| 267 {XK_kana_WA, 0x30EF}, // KATAKANA LETTER WA |
| 268 {XK_kana_N, 0x30F3}, // KATAKANA LETTER N |
| 269 {XK_voicedsound, 0x309B}, // KATAKANA-HIRAGANA VOICED SOUND M
ARK |
| 270 {XK_semivoicedsound, 0x309C}, // KATAKANA-HIRAGANA SEMI-VOICED SO
UND MARK |
| 271 |
| 272 // Arabic KeySyms partially map 1:1 to Unicode |
| 273 {XK_Arabic_comma, 0x060C}, // ARABIC COMMA |
| 274 {XK_Arabic_semicolon, 0x061B}, // ARABIC SEMICOLON |
| 275 {XK_Arabic_question_mark, 0x061F}, // ARABIC QUESTION MARK |
| 276 {XK_Arabic_hamza, 0x0621}, // ARABIC LETTER HAMZA |
| 277 {XK_Arabic_maddaonalef, 0x0622}, // ARABIC LETTER ALEF WITH MADDA AB
OVE |
| 278 {XK_Arabic_hamzaonalef, 0x0623}, // ARABIC LETTER ALEF WITH HAMZA AB
OVE |
| 279 {XK_Arabic_hamzaonwaw, 0x0624}, // ARABIC LETTER WAW WITH HAMZA ABO
VE |
| 280 {XK_Arabic_hamzaunderalef, 0x0625}, // ARABIC LETTER ALEF WITH HAMZA BE
LOW |
| 281 {XK_Arabic_hamzaonyeh, 0x0626}, // ARABIC LETTER YEH WITH HAMZA ABO
VE |
| 282 {XK_Arabic_alef, 0x0627}, // ARABIC LETTER ALEF |
| 283 {XK_Arabic_beh, 0x0628}, // ARABIC LETTER BEH |
| 284 {XK_Arabic_tehmarbuta, 0x0629}, // ARABIC LETTER TEH MARBUTA |
| 285 {XK_Arabic_teh, 0x062A}, // ARABIC LETTER TEH |
| 286 {XK_Arabic_theh, 0x062B}, // ARABIC LETTER THEH |
| 287 {XK_Arabic_jeem, 0x062C}, // ARABIC LETTER JEEM |
| 288 {XK_Arabic_hah, 0x062D}, // ARABIC LETTER HAH |
| 289 {XK_Arabic_khah, 0x062E}, // ARABIC LETTER KHAH |
| 290 {XK_Arabic_dal, 0x062F}, // ARABIC LETTER DAL |
| 291 {XK_Arabic_thal, 0x0630}, // ARABIC LETTER THAL |
| 292 {XK_Arabic_ra, 0x0631}, // ARABIC LETTER REH |
| 293 {XK_Arabic_zain, 0x0632}, // ARABIC LETTER ZAIN |
| 294 {XK_Arabic_seen, 0x0633}, // ARABIC LETTER SEEN |
| 295 {XK_Arabic_sheen, 0x0634}, // ARABIC LETTER SHEEN |
| 296 {XK_Arabic_sad, 0x0635}, // ARABIC LETTER SAD |
| 297 {XK_Arabic_dad, 0x0636}, // ARABIC LETTER DAD |
| 298 {XK_Arabic_tah, 0x0637}, // ARABIC LETTER TAH |
| 299 {XK_Arabic_zah, 0x0638}, // ARABIC LETTER ZAH |
| 300 {XK_Arabic_ain, 0x0639}, // ARABIC LETTER AIN |
| 301 {XK_Arabic_ghain, 0x063A}, // ARABIC LETTER GHAIN |
| 302 {XK_Arabic_tatweel, 0x0640}, // ARABIC TATWEEL |
| 303 {XK_Arabic_feh, 0x0641}, // ARABIC LETTER FEH |
| 304 {XK_Arabic_qaf, 0x0642}, // ARABIC LETTER QAF |
| 305 {XK_Arabic_kaf, 0x0643}, // ARABIC LETTER KAF |
| 306 {XK_Arabic_lam, 0x0644}, // ARABIC LETTER LAM |
| 307 {XK_Arabic_meem, 0x0645}, // ARABIC LETTER MEEM |
| 308 {XK_Arabic_noon, 0x0646}, // ARABIC LETTER NOON |
| 309 {XK_Arabic_ha, 0x0647}, // ARABIC LETTER HEH |
| 310 {XK_Arabic_waw, 0x0648}, // ARABIC LETTER WAW |
| 311 {XK_Arabic_alefmaksura, 0x0649}, // ARABIC LETTER ALEF MAKSURA |
| 312 {XK_Arabic_yeh, 0x064A}, // ARABIC LETTER YEH |
| 313 {XK_Arabic_fathatan, 0x064B}, // ARABIC FATHATAN |
| 314 {XK_Arabic_dammatan, 0x064C}, // ARABIC DAMMATAN |
| 315 {XK_Arabic_kasratan, 0x064D}, // ARABIC KASRATAN |
| 316 {XK_Arabic_fatha, 0x064E}, // ARABIC FATHA |
| 317 {XK_Arabic_damma, 0x064F}, // ARABIC DAMMA |
| 318 {XK_Arabic_kasra, 0x0650}, // ARABIC KASRA |
| 319 {XK_Arabic_shadda, 0x0651}, // ARABIC SHADDA |
| 320 {XK_Arabic_sukun, 0x0652}, // ARABIC SUKUN |
| 321 |
| 322 // Cyrillic KeySyms partially map 1:1 to Unicode |
| 323 {XK_Serbian_dje, 0x0452}, // CYRILLIC SMALL LETTER DJE |
| 324 {XK_Macedonia_gje, 0x0453}, // CYRILLIC SMALL LETTER GJE |
| 325 {XK_Cyrillic_io, 0x0451}, // CYRILLIC SMALL LETTER IO |
| 326 {XK_Ukrainian_ie, 0x0454}, // CYRILLIC SMALL LETTER UKRAINIAN
IE |
| 327 {XK_Macedonia_dse, 0x0455}, // CYRILLIC SMALL LETTER DZE |
| 328 {XK_Ukrainian_i, 0x0456}, // CYRILLIC SMALL LETTER BYELORUSSI
AN-UKRAINIAN I |
| 329 {XK_Ukrainian_yi, 0x0457}, // CYRILLIC SMALL LETTER YI |
| 330 {XK_Cyrillic_je, 0x0458}, // CYRILLIC SMALL LETTER JE |
| 331 {XK_Cyrillic_lje, 0x0459}, // CYRILLIC SMALL LETTER LJE |
| 332 {XK_Cyrillic_nje, 0x045A}, // CYRILLIC SMALL LETTER NJE |
| 333 {XK_Serbian_tshe, 0x045B}, // CYRILLIC SMALL LETTER TSHE |
| 334 {XK_Macedonia_kje, 0x045C}, // CYRILLIC SMALL LETTER KJE |
| 335 {XK_Ukrainian_ghe_with_upturn, 0x0491}, // CYRILLIC SMALL LETTER GHE WITH U
PTURN |
| 336 {XK_Byelorussian_shortu, 0x045E}, // CYRILLIC SMALL LETTER SHORT U |
| 337 {XK_Cyrillic_dzhe, 0x045F}, // CYRILLIC SMALL LETTER DZHE |
| 338 {XK_numerosign, 0x2116}, // NUMERO SIGN |
| 339 {XK_Serbian_DJE, 0x0402}, // CYRILLIC CAPITAL LETTER DJE |
| 340 {XK_Macedonia_GJE, 0x0403}, // CYRILLIC CAPITAL LETTER GJE |
| 341 {XK_Cyrillic_IO, 0x0401}, // CYRILLIC CAPITAL LETTER IO |
| 342 {XK_Ukrainian_IE, 0x0404}, // CYRILLIC CAPITAL LETTER UKRAINIA
N IE |
| 343 {XK_Macedonia_DSE, 0x0405}, // CYRILLIC CAPITAL LETTER DZE |
| 344 {XK_Ukrainian_I, 0x0406}, // CYRILLIC CAPITAL LETTER BYELORUS
SIAN-UKRAINIAN I |
| 345 {XK_Ukrainian_YI, 0x0407}, // CYRILLIC CAPITAL LETTER YI |
| 346 {XK_Cyrillic_JE, 0x0408}, // CYRILLIC CAPITAL LETTER JE |
| 347 {XK_Cyrillic_LJE, 0x0409}, // CYRILLIC CAPITAL LETTER LJE |
| 348 {XK_Cyrillic_NJE, 0x040A}, // CYRILLIC CAPITAL LETTER NJE |
| 349 {XK_Serbian_TSHE, 0x040B}, // CYRILLIC CAPITAL LETTER TSHE |
| 350 {XK_Macedonia_KJE, 0x040C}, // CYRILLIC CAPITAL LETTER KJE |
| 351 {XK_Ukrainian_GHE_WITH_UPTURN, 0x0490}, // CYRILLIC CAPITAL LETTER GHE WITH
UPTURN |
| 352 {XK_Byelorussian_SHORTU, 0x040E}, // CYRILLIC CAPITAL LETTER SHORT U |
| 353 {XK_Cyrillic_DZHE, 0x040F}, // CYRILLIC CAPITAL LETTER DZHE |
| 354 {XK_Cyrillic_yu, 0x044E}, // CYRILLIC SMALL LETTER YU |
| 355 {XK_Cyrillic_a, 0x0430}, // CYRILLIC SMALL LETTER A |
| 356 {XK_Cyrillic_be, 0x0431}, // CYRILLIC SMALL LETTER BE |
| 357 {XK_Cyrillic_tse, 0x0446}, // CYRILLIC SMALL LETTER TSE |
| 358 {XK_Cyrillic_de, 0x0434}, // CYRILLIC SMALL LETTER DE |
| 359 {XK_Cyrillic_ie, 0x0435}, // CYRILLIC SMALL LETTER IE |
| 360 {XK_Cyrillic_ef, 0x0444}, // CYRILLIC SMALL LETTER EF |
| 361 {XK_Cyrillic_ghe, 0x0433}, // CYRILLIC SMALL LETTER GHE |
| 362 {XK_Cyrillic_ha, 0x0445}, // CYRILLIC SMALL LETTER HA |
| 363 {XK_Cyrillic_i, 0x0438}, // CYRILLIC SMALL LETTER I |
| 364 {XK_Cyrillic_shorti, 0x0439}, // CYRILLIC SMALL LETTER SHORT I |
| 365 {XK_Cyrillic_ka, 0x043A}, // CYRILLIC SMALL LETTER KA |
| 366 {XK_Cyrillic_el, 0x043B}, // CYRILLIC SMALL LETTER EL |
| 367 {XK_Cyrillic_em, 0x043C}, // CYRILLIC SMALL LETTER EM |
| 368 {XK_Cyrillic_en, 0x043D}, // CYRILLIC SMALL LETTER EN |
| 369 {XK_Cyrillic_o, 0x043E}, // CYRILLIC SMALL LETTER O |
| 370 {XK_Cyrillic_pe, 0x043F}, // CYRILLIC SMALL LETTER PE |
| 371 {XK_Cyrillic_ya, 0x044F}, // CYRILLIC SMALL LETTER YA |
| 372 {XK_Cyrillic_er, 0x0440}, // CYRILLIC SMALL LETTER ER |
| 373 {XK_Cyrillic_es, 0x0441}, // CYRILLIC SMALL LETTER ES |
| 374 {XK_Cyrillic_te, 0x0442}, // CYRILLIC SMALL LETTER TE |
| 375 {XK_Cyrillic_u, 0x0443}, // CYRILLIC SMALL LETTER U |
| 376 {XK_Cyrillic_zhe, 0x0436}, // CYRILLIC SMALL LETTER ZHE |
| 377 {XK_Cyrillic_ve, 0x0432}, // CYRILLIC SMALL LETTER VE |
| 378 {XK_Cyrillic_softsign, 0x044C}, // CYRILLIC SMALL LETTER SOFT SIGN |
| 379 {XK_Cyrillic_yeru, 0x044B}, // CYRILLIC SMALL LETTER YERU |
| 380 {XK_Cyrillic_ze, 0x0437}, // CYRILLIC SMALL LETTER ZE |
| 381 {XK_Cyrillic_sha, 0x0448}, // CYRILLIC SMALL LETTER SHA |
| 382 {XK_Cyrillic_e, 0x044D}, // CYRILLIC SMALL LETTER E |
| 383 {XK_Cyrillic_shcha, 0x0449}, // CYRILLIC SMALL LETTER SHCHA |
| 384 {XK_Cyrillic_che, 0x0447}, // CYRILLIC SMALL LETTER CHE |
| 385 {XK_Cyrillic_hardsign, 0x044A}, // CYRILLIC SMALL LETTER HARD SIGN |
| 386 {XK_Cyrillic_YU, 0x042E}, // CYRILLIC CAPITAL LETTER YU |
| 387 {XK_Cyrillic_A, 0x0410}, // CYRILLIC CAPITAL LETTER A |
| 388 {XK_Cyrillic_BE, 0x0411}, // CYRILLIC CAPITAL LETTER BE |
| 389 {XK_Cyrillic_TSE, 0x0426}, // CYRILLIC CAPITAL LETTER TSE |
| 390 {XK_Cyrillic_DE, 0x0414}, // CYRILLIC CAPITAL LETTER DE |
| 391 {XK_Cyrillic_IE, 0x0415}, // CYRILLIC CAPITAL LETTER IE |
| 392 {XK_Cyrillic_EF, 0x0424}, // CYRILLIC CAPITAL LETTER EF |
| 393 {XK_Cyrillic_GHE, 0x0413}, // CYRILLIC CAPITAL LETTER GHE |
| 394 {XK_Cyrillic_HA, 0x0425}, // CYRILLIC CAPITAL LETTER HA |
| 395 {XK_Cyrillic_I, 0x0418}, // CYRILLIC CAPITAL LETTER I |
| 396 {XK_Cyrillic_SHORTI, 0x0419}, // CYRILLIC CAPITAL LETTER SHORT I |
| 397 {XK_Cyrillic_KA, 0x041A}, // CYRILLIC CAPITAL LETTER KA |
| 398 {XK_Cyrillic_EL, 0x041B}, // CYRILLIC CAPITAL LETTER EL |
| 399 {XK_Cyrillic_EM, 0x041C}, // CYRILLIC CAPITAL LETTER EM |
| 400 {XK_Cyrillic_EN, 0x041D}, // CYRILLIC CAPITAL LETTER EN |
| 401 {XK_Cyrillic_O, 0x041E}, // CYRILLIC CAPITAL LETTER O |
| 402 {XK_Cyrillic_PE, 0x041F}, // CYRILLIC CAPITAL LETTER PE |
| 403 {XK_Cyrillic_YA, 0x042F}, // CYRILLIC CAPITAL LETTER YA |
| 404 {XK_Cyrillic_ER, 0x0420}, // CYRILLIC CAPITAL LETTER ER |
| 405 {XK_Cyrillic_ES, 0x0421}, // CYRILLIC CAPITAL LETTER ES |
| 406 {XK_Cyrillic_TE, 0x0422}, // CYRILLIC CAPITAL LETTER TE |
| 407 {XK_Cyrillic_U, 0x0423}, // CYRILLIC CAPITAL LETTER U |
| 408 {XK_Cyrillic_ZHE, 0x0416}, // CYRILLIC CAPITAL LETTER ZHE |
| 409 {XK_Cyrillic_VE, 0x0412}, // CYRILLIC CAPITAL LETTER VE |
| 410 {XK_Cyrillic_SOFTSIGN, 0x042C}, // CYRILLIC CAPITAL LETTER SOFT SIG
N |
| 411 {XK_Cyrillic_YERU, 0x042B}, // CYRILLIC CAPITAL LETTER YERU |
| 412 {XK_Cyrillic_ZE, 0x0417}, // CYRILLIC CAPITAL LETTER ZE |
| 413 {XK_Cyrillic_SHA, 0x0428}, // CYRILLIC CAPITAL LETTER SHA |
| 414 {XK_Cyrillic_E, 0x042D}, // CYRILLIC CAPITAL LETTER E |
| 415 {XK_Cyrillic_SHCHA, 0x0429}, // CYRILLIC CAPITAL LETTER SHCHA |
| 416 {XK_Cyrillic_CHE, 0x0427}, // CYRILLIC CAPITAL LETTER CHE |
| 417 {XK_Cyrillic_HARDSIGN, 0x042A}, // CYRILLIC CAPITAL LETTER HARD SIG
N |
| 418 |
| 419 // Greek |
| 420 {XK_Greek_ALPHAaccent, 0x0386}, // GREEK CAPITAL LETTER ALPHA WITH
TONOS |
| 421 {XK_Greek_EPSILONaccent, 0x0388}, // GREEK CAPITAL LETTER EPSILON WIT
H TONOS |
| 422 {XK_Greek_ETAaccent, 0x0389}, // GREEK CAPITAL LETTER ETA WITH TO
NOS |
| 423 {XK_Greek_IOTAaccent, 0x038A}, // GREEK CAPITAL LETTER IOTA WITH T
ONOS |
| 424 {XK_Greek_IOTAdieresis, 0x03AA}, // GREEK CAPITAL LETTER IOTA WITH D
IALYTIKA |
| 425 {XK_Greek_OMICRONaccent, 0x038C}, // GREEK CAPITAL LETTER OMICRON WIT
H TONOS |
| 426 {XK_Greek_UPSILONaccent, 0x038E}, // GREEK CAPITAL LETTER UPSILON WIT
H TONOS |
| 427 {XK_Greek_UPSILONdieresis, 0x03AB}, // GREEK CAPITAL LETTER UPSILON WIT
H DIALYTIKA |
| 428 {XK_Greek_OMEGAaccent, 0x038F}, // GREEK CAPITAL LETTER OMEGA WITH
TONOS |
| 429 {XK_Greek_accentdieresis, 0x0385}, // GREEK DIALYTIKA TONOS |
| 430 {XK_Greek_horizbar, 0x2015}, // HORIZONTAL BAR |
| 431 {XK_Greek_alphaaccent, 0x03AC}, // GREEK SMALL LETTER ALPHA WITH TO
NOS |
| 432 {XK_Greek_epsilonaccent, 0x03AD}, // GREEK SMALL LETTER EPSILON WITH
TONOS |
| 433 {XK_Greek_etaaccent, 0x03AE}, // GREEK SMALL LETTER ETA WITH TONO
S |
| 434 {XK_Greek_iotaaccent, 0x03AF}, // GREEK SMALL LETTER IOTA WITH TON
OS |
| 435 {XK_Greek_iotadieresis, 0x03CA}, // GREEK SMALL LETTER IOTA WITH DIA
LYTIKA |
| 436 {XK_Greek_iotaaccentdieresis, 0x0390}, // GREEK SMALL LETTER IOTA WITH DIA
LYTIKA AND TONOS |
| 437 {XK_Greek_omicronaccent, 0x03CC}, // GREEK SMALL LETTER OMICRON WITH
TONOS |
| 438 {XK_Greek_upsilonaccent, 0x03CD}, // GREEK SMALL LETTER UPSILON WITH
TONOS |
| 439 {XK_Greek_upsilondieresis, 0x03CB}, // GREEK SMALL LETTER UPSILON WITH
DIALYTIKA |
| 440 {XK_Greek_upsilonaccentdieresis, 0x03B0}, // GREEK SMALL LETTER UPSILON WITH
DIALYTIKA AND TONOS |
| 441 {XK_Greek_omegaaccent, 0x03CE}, // GREEK SMALL LETTER OMEGA WITH TO
NOS |
| 442 {XK_Greek_ALPHA, 0x0391}, // GREEK CAPITAL LETTER ALPHA |
| 443 {XK_Greek_BETA, 0x0392}, // GREEK CAPITAL LETTER BETA |
| 444 {XK_Greek_GAMMA, 0x0393}, // GREEK CAPITAL LETTER GAMMA |
| 445 {XK_Greek_DELTA, 0x0394}, // GREEK CAPITAL LETTER DELTA |
| 446 {XK_Greek_EPSILON, 0x0395}, // GREEK CAPITAL LETTER EPSILON |
| 447 {XK_Greek_ZETA, 0x0396}, // GREEK CAPITAL LETTER ZETA |
| 448 {XK_Greek_ETA, 0x0397}, // GREEK CAPITAL LETTER ETA |
| 449 {XK_Greek_THETA, 0x0398}, // GREEK CAPITAL LETTER THETA |
| 450 {XK_Greek_IOTA, 0x0399}, // GREEK CAPITAL LETTER IOTA |
| 451 {XK_Greek_KAPPA, 0x039A}, // GREEK CAPITAL LETTER KAPPA |
| 452 {XK_Greek_LAMDA, 0x039B}, // GREEK CAPITAL LETTER LAMDA |
| 453 {XK_Greek_LAMBDA, 0x039B}, // GREEK CAPITAL LETTER LAMDA |
| 454 {XK_Greek_MU, 0x039C}, // GREEK CAPITAL LETTER MU |
| 455 {XK_Greek_NU, 0x039D}, // GREEK CAPITAL LETTER NU |
| 456 {XK_Greek_XI, 0x039E}, // GREEK CAPITAL LETTER XI |
| 457 {XK_Greek_OMICRON, 0x039F}, // GREEK CAPITAL LETTER OMICRON |
| 458 {XK_Greek_PI, 0x03A0}, // GREEK CAPITAL LETTER PI |
| 459 {XK_Greek_RHO, 0x03A1}, // GREEK CAPITAL LETTER RHO |
| 460 {XK_Greek_SIGMA, 0x03A3}, // GREEK CAPITAL LETTER SIGMA |
| 461 {XK_Greek_TAU, 0x03A4}, // GREEK CAPITAL LETTER TAU |
| 462 {XK_Greek_UPSILON, 0x03A5}, // GREEK CAPITAL LETTER UPSILON |
| 463 {XK_Greek_PHI, 0x03A6}, // GREEK CAPITAL LETTER PHI |
| 464 {XK_Greek_CHI, 0x03A7}, // GREEK CAPITAL LETTER CHI |
| 465 {XK_Greek_PSI, 0x03A8}, // GREEK CAPITAL LETTER PSI |
| 466 {XK_Greek_OMEGA, 0x03A9}, // GREEK CAPITAL LETTER OMEGA |
| 467 {XK_Greek_alpha, 0x03B1}, // GREEK SMALL LETTER ALPHA |
| 468 {XK_Greek_beta, 0x03B2}, // GREEK SMALL LETTER BETA |
| 469 {XK_Greek_gamma, 0x03B3}, // GREEK SMALL LETTER GAMMA |
| 470 {XK_Greek_delta, 0x03B4}, // GREEK SMALL LETTER DELTA |
| 471 {XK_Greek_epsilon, 0x03B5}, // GREEK SMALL LETTER EPSILON |
| 472 {XK_Greek_zeta, 0x03B6}, // GREEK SMALL LETTER ZETA |
| 473 {XK_Greek_eta, 0x03B7}, // GREEK SMALL LETTER ETA |
| 474 {XK_Greek_theta, 0x03B8}, // GREEK SMALL LETTER THETA |
| 475 {XK_Greek_iota, 0x03B9}, // GREEK SMALL LETTER IOTA |
| 476 {XK_Greek_kappa, 0x03BA}, // GREEK SMALL LETTER KAPPA |
| 477 {XK_Greek_lamda, 0x03BB}, // GREEK SMALL LETTER LAMDA |
| 478 {XK_Greek_lambda, 0x03BB}, // GREEK SMALL LETTER LAMDA |
| 479 {XK_Greek_mu, 0x03BC}, // GREEK SMALL LETTER MU |
| 480 {XK_Greek_nu, 0x03BD}, // GREEK SMALL LETTER NU |
| 481 {XK_Greek_xi, 0x03BE}, // GREEK SMALL LETTER XI |
| 482 {XK_Greek_omicron, 0x03BF}, // GREEK SMALL LETTER OMICRON |
| 483 {XK_Greek_pi, 0x03C0}, // GREEK SMALL LETTER PI |
| 484 {XK_Greek_rho, 0x03C1}, // GREEK SMALL LETTER RHO |
| 485 {XK_Greek_sigma, 0x03C3}, // GREEK SMALL LETTER SIGMA |
| 486 {XK_Greek_finalsmallsigma, 0x03C2}, // GREEK SMALL LETTER FINAL SIGMA |
| 487 {XK_Greek_tau, 0x03C4}, // GREEK SMALL LETTER TAU |
| 488 {XK_Greek_upsilon, 0x03C5}, // GREEK SMALL LETTER UPSILON |
| 489 {XK_Greek_phi, 0x03C6}, // GREEK SMALL LETTER PHI |
| 490 {XK_Greek_chi, 0x03C7}, // GREEK SMALL LETTER CHI |
| 491 {XK_Greek_psi, 0x03C8}, // GREEK SMALL LETTER PSI |
| 492 {XK_Greek_omega, 0x03C9}, // GREEK SMALL LETTER OMEGA |
| 493 |
| 494 // Technical |
| 495 {XK_leftradical, 0x23B7}, // RADICAL SYMBOL BOTTOM |
| 496 {XK_topleftradical, 0x250C}, // BOX DRAWINGS LIGHT DOWN AND RIGH
T |
| 497 {XK_horizconnector, 0x2500}, // BOX DRAWINGS LIGHT HORIZONTAL |
| 498 {XK_topintegral, 0x2320}, // TOP HALF INTEGRAL |
| 499 {XK_botintegral, 0x2321}, // BOTTOM HALF INTEGRAL |
| 500 {XK_vertconnector, 0x2502}, // BOX DRAWINGS LIGHT VERTICAL |
| 501 {XK_topleftsqbracket, 0x23A1}, // LEFT SQUARE BRACKET UPPER CORNER |
| 502 {XK_botleftsqbracket, 0x23A3}, // LEFT SQUARE BRACKET LOWER CORNER |
| 503 {XK_toprightsqbracket, 0x23A4}, // RIGHT SQUARE BRACKET UPPER CORNE
R |
| 504 {XK_botrightsqbracket, 0x23A6}, // RIGHT SQUARE BRACKET LOWER CORNE
R |
| 505 {XK_topleftparens, 0x239B}, // LEFT PARENTHESIS UPPER HOOK |
| 506 {XK_botleftparens, 0x239D}, // LEFT PARENTHESIS LOWER HOOK |
| 507 {XK_toprightparens, 0x239E}, // RIGHT PARENTHESIS UPPER HOOK |
| 508 {XK_botrightparens, 0x23A0}, // RIGHT PARENTHESIS LOWER HOOK |
| 509 {XK_leftmiddlecurlybrace, 0x23A8}, // LEFT CURLY BRACKET MIDDLE PIECE |
| 510 {XK_rightmiddlecurlybrace, 0x23AC}, // RIGHT CURLY BRACKET MIDDLE PIECE |
| 511 {XK_lessthanequal, 0x2264}, // LESS-THAN OR EQUAL TO |
| 512 {XK_notequal, 0x2260}, // NOT EQUAL TO |
| 513 {XK_greaterthanequal, 0x2265}, // GREATER-THAN OR EQUAL TO |
| 514 {XK_integral, 0x222B}, // INTEGRAL |
| 515 {XK_therefore, 0x2234}, // THEREFORE |
| 516 {XK_variation, 0x221D}, // PROPORTIONAL TO |
| 517 {XK_infinity, 0x221E}, // INFINITY |
| 518 {XK_nabla, 0x2207}, // NABLA |
| 519 {XK_approximate, 0x223C}, // TILDE OPERATOR |
| 520 {XK_similarequal, 0x2243}, // ASYMPTOTICALLY EQUAL TO |
| 521 {XK_ifonlyif, 0x21D4}, // LEFT RIGHT DOUBLE ARROW |
| 522 {XK_implies, 0x21D2}, // RIGHTWARDS DOUBLE ARROW |
| 523 {XK_identical, 0x2261}, // IDENTICAL TO |
| 524 {XK_radical, 0x221A}, // SQUARE ROOT |
| 525 {XK_includedin, 0x2282}, // SUBSET OF |
| 526 {XK_includes, 0x2283}, // SUPERSET OF |
| 527 {XK_intersection, 0x2229}, // INTERSECTION |
| 528 {XK_union, 0x222A}, // UNION |
| 529 {XK_logicaland, 0x2227}, // LOGICAL AND |
| 530 {XK_logicalor, 0x2228}, // LOGICAL OR |
| 531 {XK_partialderivative, 0x2202}, // PARTIAL DIFFERENTIAL |
| 532 {XK_function, 0x0192}, // LATIN SMALL LETTER F WITH HOOK |
| 533 {XK_leftarrow, 0x2190}, // LEFTWARDS ARROW |
| 534 {XK_uparrow, 0x2191}, // UPWARDS ARROW |
| 535 {XK_rightarrow, 0x2192}, // RIGHTWARDS ARROW |
| 536 {XK_downarrow, 0x2193}, // DOWNWARDS ARROW |
| 537 |
| 538 // Special |
| 539 {XK_soliddiamond, 0x25C6}, // BLACK DIAMOND |
| 540 {XK_checkerboard, 0x2592}, // MEDIUM SHADE |
| 541 {XK_ht, 0x2409}, // SYMBOL FOR HORIZONTAL TABULATION |
| 542 {XK_ff, 0x240C}, // SYMBOL FOR FORM FEED |
| 543 {XK_cr, 0x240D}, // SYMBOL FOR CARRIAGE RETURN |
| 544 {XK_lf, 0x240A}, // SYMBOL FOR LINE FEED |
| 545 {XK_nl, 0x2424}, // SYMBOL FOR NEWLINE |
| 546 {XK_vt, 0x240B}, // SYMBOL FOR VERTICAL TABULATION |
| 547 {XK_lowrightcorner, 0x2518}, // BOX DRAWINGS LIGHT UP AND LEFT |
| 548 {XK_uprightcorner, 0x2510}, // BOX DRAWINGS LIGHT DOWN AND LEFT |
| 549 {XK_upleftcorner, 0x250C}, // BOX DRAWINGS LIGHT DOWN AND RIGH
T |
| 550 {XK_lowleftcorner, 0x2514}, // BOX DRAWINGS LIGHT UP AND RIGHT |
| 551 {XK_crossinglines, 0x253C}, // BOX DRAWINGS LIGHT VERTICAL AND
HORIZONTAL |
| 552 {XK_horizlinescan1, 0x23BA}, // HORIZONTAL SCAN LINE-1 |
| 553 {XK_horizlinescan3, 0x23BB}, // HORIZONTAL SCAN LINE-3 |
| 554 {XK_horizlinescan5, 0x2500}, // BOX DRAWINGS LIGHT HORIZONTAL |
| 555 {XK_horizlinescan7, 0x23BC}, // HORIZONTAL SCAN LINE-7 |
| 556 {XK_horizlinescan9, 0x23BD}, // HORIZONTAL SCAN LINE-9 |
| 557 {XK_leftt, 0x251C}, // BOX DRAWINGS LIGHT VERTICAL AND
RIGHT |
| 558 {XK_rightt, 0x2524}, // BOX DRAWINGS LIGHT VERTICAL AND
LEFT |
| 559 {XK_bott, 0x2534}, // BOX DRAWINGS LIGHT UP AND HORIZO
NTAL |
| 560 {XK_topt, 0x252C}, // BOX DRAWINGS LIGHT DOWN AND HORI
ZONTAL |
| 561 {XK_vertbar, 0x2502}, // BOX DRAWINGS LIGHT VERTICAL |
| 562 |
| 563 // Publishing |
| 564 {XK_emspace, 0x2003}, // EM SPACE |
| 565 {XK_enspace, 0x2002}, // EN SPACE |
| 566 {XK_em3space, 0x2004}, // THREE-PER-EM SPACE |
| 567 {XK_em4space, 0x2005}, // FOUR-PER-EM SPACE |
| 568 {XK_digitspace, 0x2007}, // FIGURE SPACE |
| 569 {XK_punctspace, 0x2008}, // PUNCTUATION SPACE |
| 570 {XK_thinspace, 0x2009}, // THIN SPACE |
| 571 {XK_hairspace, 0x200A}, // HAIR SPACE |
| 572 {XK_emdash, 0x2014}, // EM DASH |
| 573 {XK_endash, 0x2013}, // EN DASH |
| 574 {XK_signifblank, 0x2423}, // OPEN BOX |
| 575 {XK_ellipsis, 0x2026}, // HORIZONTAL ELLIPSIS |
| 576 {XK_doubbaselinedot, 0x2025}, // TWO DOT LEADER |
| 577 {XK_onethird, 0x2153}, // VULGAR FRACTION ONE THIRD |
| 578 {XK_twothirds, 0x2154}, // VULGAR FRACTION TWO THIRDS |
| 579 {XK_onefifth, 0x2155}, // VULGAR FRACTION ONE FIFTH |
| 580 {XK_twofifths, 0x2156}, // VULGAR FRACTION TWO FIFTHS |
| 581 {XK_threefifths, 0x2157}, // VULGAR FRACTION THREE FIFTHS |
| 582 {XK_fourfifths, 0x2158}, // VULGAR FRACTION FOUR FIFTHS |
| 583 {XK_onesixth, 0x2159}, // VULGAR FRACTION ONE SIXTH |
| 584 {XK_fivesixths, 0x215A}, // VULGAR FRACTION FIVE SIXTHS |
| 585 {XK_careof, 0x2105}, // CARE OF |
| 586 {XK_figdash, 0x2012}, // FIGURE DASH |
| 587 {XK_leftanglebracket, 0x27E8}, // MATHEMATICAL LEFT ANGLE BRACKET |
| 588 {XK_decimalpoint, 0x002E}, // FULL STOP |
| 589 {XK_rightanglebracket, 0x27E9}, // MATHEMATICAL RIGHT ANGLE BRACKET |
| 590 {XK_oneeighth, 0x215B}, // VULGAR FRACTION ONE EIGHTH |
| 591 {XK_threeeighths, 0x215C}, // VULGAR FRACTION THREE EIGHTHS |
| 592 {XK_fiveeighths, 0x215D}, // VULGAR FRACTION FIVE EIGHTHS |
| 593 {XK_seveneighths, 0x215E}, // VULGAR FRACTION SEVEN EIGHTHS |
| 594 {XK_trademark, 0x2122}, // TRADE MARK SIGN |
| 595 {XK_signaturemark, 0x2613}, // SALTIRE |
| 596 {XK_leftopentriangle, 0x25C1}, // WHITE LEFT-POINTING TRIANGLE |
| 597 {XK_rightopentriangle, 0x25B7}, // WHITE RIGHT-POINTING TRIANGLE |
| 598 {XK_emopencircle, 0x25CB}, // WHITE CIRCLE |
| 599 {XK_emopenrectangle, 0x25AF}, // WHITE VERTICAL RECTANGLE |
| 600 {XK_leftsinglequotemark, 0x2018}, // LEFT SINGLE QUOTATION MARK |
| 601 {XK_rightsinglequotemark, 0x2019}, // RIGHT SINGLE QUOTATION MARK |
| 602 {XK_leftdoublequotemark, 0x201C}, // LEFT DOUBLE QUOTATION MARK |
| 603 {XK_rightdoublequotemark, 0x201D}, // RIGHT DOUBLE QUOTATION MARK |
| 604 {XK_prescription, 0x211E}, // PRESCRIPTION TAKE |
| 605 {XK_minutes, 0x2032}, // PRIME |
| 606 {XK_seconds, 0x2033}, // DOUBLE PRIME |
| 607 {XK_latincross, 0x271D}, // LATIN CROSS |
| 608 {XK_filledrectbullet, 0x25AC}, // BLACK RECTANGLE |
| 609 {XK_filledlefttribullet, 0x25C0}, // BLACK LEFT-POINTING TRIANGLE |
| 610 {XK_filledrighttribullet, 0x25B6}, // BLACK RIGHT-POINTING TRIANGLE |
| 611 {XK_emfilledcircle, 0x25CF}, // BLACK CIRCLE |
| 612 {XK_emfilledrect, 0x25AE}, // BLACK VERTICAL RECTANGLE |
| 613 {XK_enopencircbullet, 0x25E6}, // WHITE BULLET |
| 614 {XK_enopensquarebullet, 0x25AB}, // WHITE SMALL SQUARE |
| 615 {XK_openrectbullet, 0x25AD}, // WHITE RECTANGLE |
| 616 {XK_opentribulletup, 0x25B3}, // WHITE UP-POINTING TRIANGLE |
| 617 {XK_opentribulletdown, 0x25BD}, // WHITE DOWN-POINTING TRIANGLE |
| 618 {XK_openstar, 0x2606}, // WHITE STAR |
| 619 {XK_enfilledcircbullet, 0x2022}, // BULLET |
| 620 {XK_enfilledsqbullet, 0x25AA}, // BLACK SMALL SQUARE |
| 621 {XK_filledtribulletup, 0x25B2}, // BLACK UP-POINTING TRIANGLE |
| 622 {XK_filledtribulletdown, 0x25BC}, // BLACK DOWN-POINTING TRIANGLE |
| 623 {XK_leftpointer, 0x261C}, // WHITE LEFT POINTING INDEX |
| 624 {XK_rightpointer, 0x261E}, // WHITE RIGHT POINTING INDEX |
| 625 {XK_club, 0x2663}, // BLACK CLUB SUIT |
| 626 {XK_diamond, 0x2666}, // BLACK DIAMOND SUIT |
| 627 {XK_heart, 0x2665}, // BLACK HEART SUIT |
| 628 {XK_maltesecross, 0x2720}, // MALTESE CROSS |
| 629 {XK_dagger, 0x2020}, // DAGGER |
| 630 {XK_doubledagger, 0x2021}, // DOUBLE DAGGER |
| 631 {XK_checkmark, 0x2713}, // CHECK MARK |
| 632 {XK_ballotcross, 0x2717}, // BALLOT X |
| 633 {XK_musicalsharp, 0x266F}, // MUSIC SHARP SIGN |
| 634 {XK_musicalflat, 0x266D}, // MUSIC FLAT SIGN |
| 635 {XK_malesymbol, 0x2642}, // MALE SIGN |
| 636 {XK_femalesymbol, 0x2640}, // FEMALE SIGN |
| 637 {XK_telephone, 0x260E}, // BLACK TELEPHONE |
| 638 {XK_telephonerecorder, 0x2315}, // TELEPHONE RECORDER |
| 639 {XK_phonographcopyright, 0x2117}, // SOUND RECORDING COPYRIGHT |
| 640 {XK_caret, 0x2038}, // CARET |
| 641 {XK_singlelowquotemark, 0x201A}, // SINGLE LOW-9 QUOTATION MARK |
| 642 {XK_doublelowquotemark, 0x201E}, // DOUBLE LOW-9 QUOTATION MARK |
| 643 |
| 644 // APL |
| 645 {XK_leftcaret, 0x003C}, // LESS-THAN SIGN |
| 646 {XK_rightcaret, 0x003E}, // GREATER-THAN SIGN |
| 647 {XK_downcaret, 0x2228}, // LOGICAL OR |
| 648 {XK_upcaret, 0x2227}, // LOGICAL AND |
| 649 {XK_overbar, 0x00AF}, // MACRON |
| 650 {XK_downtack, 0x22A4}, // DOWN TACK |
| 651 {XK_upshoe, 0x2229}, // INTERSECTION |
| 652 {XK_downstile, 0x230A}, // LEFT FLOOR |
| 653 {XK_underbar, 0x005F}, // LOW LINE |
| 654 {XK_jot, 0x2218}, // RING OPERATOR |
| 655 {XK_quad, 0x2395}, // APL FUNCTIONAL SYMBOL QUAD |
| 656 {XK_uptack, 0x22A5}, // UP TACK |
| 657 {XK_circle, 0x25CB}, // WHITE CIRCLE |
| 658 {XK_upstile, 0x2308}, // LEFT CEILING |
| 659 {XK_downshoe, 0x222A}, // UNION |
| 660 {XK_rightshoe, 0x2283}, // SUPERSET OF |
| 661 {XK_leftshoe, 0x2282}, // SUBSET OF |
| 662 {XK_lefttack, 0x22A3}, // LEFT TACK |
| 663 {XK_righttack, 0x22A2}, // RIGHT TACK |
| 664 |
| 665 // Hebrew |
| 666 {XK_hebrew_doublelowline, 0x2017}, // DOUBLE LOW LINE |
| 667 {XK_hebrew_aleph, 0x05D0}, // HEBREW LETTER ALEF |
| 668 {XK_hebrew_bet, 0x05D1}, // HEBREW LETTER BET |
| 669 {XK_hebrew_gimel, 0x05D2}, // HEBREW LETTER GIMEL |
| 670 {XK_hebrew_dalet, 0x05D3}, // HEBREW LETTER DALET |
| 671 {XK_hebrew_he, 0x05D4}, // HEBREW LETTER HE |
| 672 {XK_hebrew_waw, 0x05D5}, // HEBREW LETTER VAV |
| 673 {XK_hebrew_zain, 0x05D6}, // HEBREW LETTER ZAYIN |
| 674 {XK_hebrew_chet, 0x05D7}, // HEBREW LETTER HET |
| 675 {XK_hebrew_tet, 0x05D8}, // HEBREW LETTER TET |
| 676 {XK_hebrew_yod, 0x05D9}, // HEBREW LETTER YOD |
| 677 {XK_hebrew_finalkaph, 0x05DA}, // HEBREW LETTER FINAL KAF |
| 678 {XK_hebrew_kaph, 0x05DB}, // HEBREW LETTER KAF |
| 679 {XK_hebrew_lamed, 0x05DC}, // HEBREW LETTER LAMED |
| 680 {XK_hebrew_finalmem, 0x05DD}, // HEBREW LETTER FINAL MEM |
| 681 {XK_hebrew_mem, 0x05DE}, // HEBREW LETTER MEM |
| 682 {XK_hebrew_finalnun, 0x05DF}, // HEBREW LETTER FINAL NUN |
| 683 {XK_hebrew_nun, 0x05E0}, // HEBREW LETTER NUN |
| 684 {XK_hebrew_samech, 0x05E1}, // HEBREW LETTER SAMEKH |
| 685 {XK_hebrew_ayin, 0x05E2}, // HEBREW LETTER AYIN |
| 686 {XK_hebrew_finalpe, 0x05E3}, // HEBREW LETTER FINAL PE |
| 687 {XK_hebrew_pe, 0x05E4}, // HEBREW LETTER PE |
| 688 {XK_hebrew_finalzade, 0x05E5}, // HEBREW LETTER FINAL TSADI |
| 689 {XK_hebrew_zade, 0x05E6}, // HEBREW LETTER TSADI |
| 690 {XK_hebrew_qoph, 0x05E7}, // HEBREW LETTER QOF |
| 691 {XK_hebrew_resh, 0x05E8}, // HEBREW LETTER RESH |
| 692 {XK_hebrew_shin, 0x05E9}, // HEBREW LETTER SHIN |
| 693 {XK_hebrew_taw, 0x05EA}, // HEBREW LETTER TAV |
| 694 |
| 695 // Thai |
| 696 {XK_Thai_kokai, 0x0E01}, // THAI CHARACTER KO KAI |
| 697 {XK_Thai_khokhai, 0x0E02}, // THAI CHARACTER KHO KHAI |
| 698 {XK_Thai_khokhuat, 0x0E03}, // THAI CHARACTER KHO KHUAT |
| 699 {XK_Thai_khokhwai, 0x0E04}, // THAI CHARACTER KHO KHWAI |
| 700 {XK_Thai_khokhon, 0x0E05}, // THAI CHARACTER KHO KHON |
| 701 {XK_Thai_khorakhang, 0x0E06}, // THAI CHARACTER KHO RAKHANG |
| 702 {XK_Thai_ngongu, 0x0E07}, // THAI CHARACTER NGO NGU |
| 703 {XK_Thai_chochan, 0x0E08}, // THAI CHARACTER CHO CHAN |
| 704 {XK_Thai_choching, 0x0E09}, // THAI CHARACTER CHO CHING |
| 705 {XK_Thai_chochang, 0x0E0A}, // THAI CHARACTER CHO CHANG |
| 706 {XK_Thai_soso, 0x0E0B}, // THAI CHARACTER SO SO |
| 707 {XK_Thai_chochoe, 0x0E0C}, // THAI CHARACTER CHO CHOE |
| 708 {XK_Thai_yoying, 0x0E0D}, // THAI CHARACTER YO YING |
| 709 {XK_Thai_dochada, 0x0E0E}, // THAI CHARACTER DO CHADA |
| 710 {XK_Thai_topatak, 0x0E0F}, // THAI CHARACTER TO PATAK |
| 711 {XK_Thai_thothan, 0x0E10}, // THAI CHARACTER THO THAN |
| 712 {XK_Thai_thonangmontho, 0x0E11}, // THAI CHARACTER THO NANGMONTHO |
| 713 {XK_Thai_thophuthao, 0x0E12}, // THAI CHARACTER THO PHUTHAO |
| 714 {XK_Thai_nonen, 0x0E13}, // THAI CHARACTER NO NEN |
| 715 {XK_Thai_dodek, 0x0E14}, // THAI CHARACTER DO DEK |
| 716 {XK_Thai_totao, 0x0E15}, // THAI CHARACTER TO TAO |
| 717 {XK_Thai_thothung, 0x0E16}, // THAI CHARACTER THO THUNG |
| 718 {XK_Thai_thothahan, 0x0E17}, // THAI CHARACTER THO THAHAN |
| 719 {XK_Thai_thothong, 0x0E18}, // THAI CHARACTER THO THONG |
| 720 {XK_Thai_nonu, 0x0E19}, // THAI CHARACTER NO NU |
| 721 {XK_Thai_bobaimai, 0x0E1A}, // THAI CHARACTER BO BAIMAI |
| 722 {XK_Thai_popla, 0x0E1B}, // THAI CHARACTER PO PLA |
| 723 {XK_Thai_phophung, 0x0E1C}, // THAI CHARACTER PHO PHUNG |
| 724 {XK_Thai_fofa, 0x0E1D}, // THAI CHARACTER FO FA |
| 725 {XK_Thai_phophan, 0x0E1E}, // THAI CHARACTER PHO PHAN |
| 726 {XK_Thai_fofan, 0x0E1F}, // THAI CHARACTER FO FAN |
| 727 {XK_Thai_phosamphao, 0x0E20}, // THAI CHARACTER PHO SAMPHAO |
| 728 {XK_Thai_moma, 0x0E21}, // THAI CHARACTER MO MA |
| 729 {XK_Thai_yoyak, 0x0E22}, // THAI CHARACTER YO YAK |
| 730 {XK_Thai_rorua, 0x0E23}, // THAI CHARACTER RO RUA |
| 731 {XK_Thai_ru, 0x0E24}, // THAI CHARACTER RU |
| 732 {XK_Thai_loling, 0x0E25}, // THAI CHARACTER LO LING |
| 733 {XK_Thai_lu, 0x0E26}, // THAI CHARACTER LU |
| 734 {XK_Thai_wowaen, 0x0E27}, // THAI CHARACTER WO WAEN |
| 735 {XK_Thai_sosala, 0x0E28}, // THAI CHARACTER SO SALA |
| 736 {XK_Thai_sorusi, 0x0E29}, // THAI CHARACTER SO RUSI |
| 737 {XK_Thai_sosua, 0x0E2A}, // THAI CHARACTER SO SUA |
| 738 {XK_Thai_hohip, 0x0E2B}, // THAI CHARACTER HO HIP |
| 739 {XK_Thai_lochula, 0x0E2C}, // THAI CHARACTER LO CHULA |
| 740 {XK_Thai_oang, 0x0E2D}, // THAI CHARACTER O ANG |
| 741 {XK_Thai_honokhuk, 0x0E2E}, // THAI CHARACTER HO NOKHUK |
| 742 {XK_Thai_paiyannoi, 0x0E2F}, // THAI CHARACTER PAIYANNOI |
| 743 {XK_Thai_saraa, 0x0E30}, // THAI CHARACTER SARA A |
| 744 {XK_Thai_maihanakat, 0x0E31}, // THAI CHARACTER MAI HAN-AKAT |
| 745 {XK_Thai_saraaa, 0x0E32}, // THAI CHARACTER SARA AA |
| 746 {XK_Thai_saraam, 0x0E33}, // THAI CHARACTER SARA AM |
| 747 {XK_Thai_sarai, 0x0E34}, // THAI CHARACTER SARA I |
| 748 {XK_Thai_saraii, 0x0E35}, // THAI CHARACTER SARA II |
| 749 {XK_Thai_saraue, 0x0E36}, // THAI CHARACTER SARA UE |
| 750 {XK_Thai_sarauee, 0x0E37}, // THAI CHARACTER SARA UEE |
| 751 {XK_Thai_sarau, 0x0E38}, // THAI CHARACTER SARA U |
| 752 {XK_Thai_sarauu, 0x0E39}, // THAI CHARACTER SARA UU |
| 753 {XK_Thai_phinthu, 0x0E3A}, // THAI CHARACTER PHINTHU |
| 754 {XK_Thai_baht, 0x0E3F}, // THAI CURRENCY SYMBOL BAHT |
| 755 {XK_Thai_sarae, 0x0E40}, // THAI CHARACTER SARA E |
| 756 {XK_Thai_saraae, 0x0E41}, // THAI CHARACTER SARA AE |
| 757 {XK_Thai_sarao, 0x0E42}, // THAI CHARACTER SARA O |
| 758 {XK_Thai_saraaimaimuan, 0x0E43}, // THAI CHARACTER SARA AI MAIMUAN |
| 759 {XK_Thai_saraaimaimalai, 0x0E44}, // THAI CHARACTER SARA AI MAIMALAI |
| 760 {XK_Thai_lakkhangyao, 0x0E45}, // THAI CHARACTER LAKKHANGYAO |
| 761 {XK_Thai_maiyamok, 0x0E46}, // THAI CHARACTER MAIYAMOK |
| 762 {XK_Thai_maitaikhu, 0x0E47}, // THAI CHARACTER MAITAIKHU |
| 763 {XK_Thai_maiek, 0x0E48}, // THAI CHARACTER MAI EK |
| 764 {XK_Thai_maitho, 0x0E49}, // THAI CHARACTER MAI THO |
| 765 {XK_Thai_maitri, 0x0E4A}, // THAI CHARACTER MAI TRI |
| 766 {XK_Thai_maichattawa, 0x0E4B}, // THAI CHARACTER MAI CHATTAWA |
| 767 {XK_Thai_thanthakhat, 0x0E4C}, // THAI CHARACTER THANTHAKHAT |
| 768 {XK_Thai_nikhahit, 0x0E4D}, // THAI CHARACTER NIKHAHIT |
| 769 {XK_Thai_leksun, 0x0E50}, // THAI DIGIT ZERO |
| 770 {XK_Thai_leknung, 0x0E51}, // THAI DIGIT ONE |
| 771 {XK_Thai_leksong, 0x0E52}, // THAI DIGIT TWO |
| 772 {XK_Thai_leksam, 0x0E53}, // THAI DIGIT THREE |
| 773 {XK_Thai_leksi, 0x0E54}, // THAI DIGIT FOUR |
| 774 {XK_Thai_lekha, 0x0E55}, // THAI DIGIT FIVE |
| 775 {XK_Thai_lekhok, 0x0E56}, // THAI DIGIT SIX |
| 776 {XK_Thai_lekchet, 0x0E57}, // THAI DIGIT SEVEN |
| 777 {XK_Thai_lekpaet, 0x0E58}, // THAI DIGIT EIGHT |
| 778 {XK_Thai_lekkao, 0x0E59}, // THAI DIGIT NINE |
| 779 |
| 780 // Korean |
| 781 {XK_Korean_Won, 0x20A9}, // WON SIGN |
| 782 |
| 783 // Armenian KeySyms map 1:1 to Unicode |
| 784 |
| 785 // Georgian KeySyms map 1:1 to Unicode |
| 786 |
| 787 // Azeri KeySyms map 1:1 to Unicode |
| 788 |
| 789 // Vietnamese KeySyms map 1:1 to Unicode |
| 790 |
| 791 // Currency KeySyms partially map 1:1 to Unicode |
| 792 {XK_EuroSign, 0x20AC}, // EURO SIGN |
| 793 |
| 794 // Mathematical KeySyms map 1:1 to Unicode |
| 795 |
| 796 // Braille KeySyms map 1:1 to Unicode |
| 797 |
| 798 // Sinhala KeySyms map 1:1 to Unicode |
| 799 }; |
| 800 |
| 801 class KeySymToUnicode { |
| 802 public: |
| 803 KeySymToUnicode() |
| 804 : keysym_to_unicode_map(arraysize(g_keysym_to_unicode_table)) { |
| 805 for (size_t i = 0; i < arraysize(g_keysym_to_unicode_table); ++i) { |
| 806 keysym_to_unicode_map[g_keysym_to_unicode_table[i].keysym] = |
| 807 g_keysym_to_unicode_table[i].unicode; |
| 808 } |
| 809 } |
| 810 |
| 811 uint16_t UnicodeFromKeySym(KeySym keysym) const { |
| 812 // Latin-1 characters have the same representation. |
| 813 if ((0x0020 <= keysym && keysym <= 0x007e) || |
| 814 (0x00a0 <= keysym && keysym <= 0x00ff)) |
| 815 return static_cast<uint16_t>(keysym); |
| 816 |
| 817 // Unicode-style KeySyms. |
| 818 if ((keysym & 0xffe00000) == 0x01000000) { |
| 819 uint32_t unicode = static_cast<uint32_t>(keysym & 0x1fffff); |
| 820 if (unicode & ~0xffff) |
| 821 return 0; // We don't support characters outside the Basic Plane. |
| 822 return static_cast<uint16_t>(unicode); |
| 823 } |
| 824 |
| 825 // Other KeySyms which are not Unicode-style. |
| 826 KeySymToUnicodeMap::const_iterator i = |
| 827 keysym_to_unicode_map.find(keysym); |
| 828 return i != keysym_to_unicode_map.end() ? i->second : 0; |
| 829 } |
| 830 |
| 831 private: |
| 832 typedef std::unordered_map<KeySym, uint16_t> KeySymToUnicodeMap; |
| 833 KeySymToUnicodeMap keysym_to_unicode_map; |
| 834 }; |
| 835 |
| 836 static base::LazyInstance<KeySymToUnicode>::Leaky g_keysym_to_unicode = |
| 837 LAZY_INSTANCE_INITIALIZER; |
| 838 |
| 839 uint16_t GetUnicodeCharacterFromXKeySym(unsigned long keysym) { |
| 840 return g_keysym_to_unicode.Get().UnicodeFromKeySym( |
| 841 static_cast<KeySym>(keysym)); |
| 842 } |
| 843 |
| 844 } // namespace ui |
OLD | NEW |