diff options
author | Yuichiro Hanada <yhanada@google.com> | 2022-05-12 17:19:30 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-05-12 17:19:30 +0000 |
commit | 2b35cd0be02f793df417aede141ea079fbfda4ed (patch) | |
tree | 876958239f94fd3777080157f13d15f301cf52a2 | |
parent | 9ecd2e29e8c8b78eeaf7deb40386803f3d4c08bb (diff) | |
parent | a36f08b4c630d73b18a9ede0cf7bce70c628d400 (diff) | |
download | libxkbcommon-2b35cd0be02f793df417aede141ea079fbfda4ed.tar.gz |
Uprev libxkbcommon to 1.4.0. am: a36f08b4c6
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/libxkbcommon/+/17987629
Change-Id: I3751d72921a08896f656c44fe575816ed422f268
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
74 files changed, 18044 insertions, 4813 deletions
@@ -34,6 +34,7 @@ license { name: "external_libxkbcommon_license", visibility: [":__subpackages__"], license_kinds: [ + "SPDX-license-identifier-BSD-3-Clause", "SPDX-license-identifier-GPL", "SPDX-license-identifier-GPL-2.0", "SPDX-license-identifier-GPL-3.0", @@ -71,26 +72,38 @@ cc_library_static { "src/atom.c", "src/context.c", "src/context-priv.c", - "src/keysym.c", - "src/keysym-utf.c", "src/keymap.c", "src/keymap-priv.c", + "src/keysym.c", + "src/keysym-utf.c", + "src/registry.c", "src/state.c", "src/text.c", "src/utf8.c", + "src/util-list.c", "src/utils.c", ], cflags: [ - "-std=c99", + "-std=c11", + "-fno-strict-aliasing", + "-fsanitize-undefined-trap-on-error", "-Wall", "-Werror", + "-Wno-format", "-Wno-unused-parameter", "-Wno-missing-field-initializers", // Needed because libxkbcommon uses GNU extension asprintf(). "-D_GNU_SOURCE", ], - local_include_dirs: ["src", "config/libxkbcommon.so.0.0.0.p"], - export_include_dirs: ["."], + static_libs: [ + "libxml2" + ], + local_include_dirs: [ + "src", + "config", + "config/libxkbcommon.so.0.0.0.p" + ], + export_include_dirs: ["include"], vendor_available: true, host_supported: true, name: "libxkbcommon", @@ -7,14 +7,15 @@ third_party { } url { type: ARCHIVE - value: "https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-1.0.3.tar.gz" + value: "https://xkbcommon.org/download/libxkbcommon-1.4.0.tar.xz" } - version: "xkbcommon-1.0.3" + version: "xkbcommon-1.4.0" license_note: "would be NOTICE save for test/evdev-scancodes.h" license_type: RESTRICTED last_upgrade_date { - year: 2020 - month: 11 - day: 24 + year: 2022 + month: 4 + day: 22 } + local_modifications: "atom_intern() in atom.c is modified to suppress Wreturn-type warning." } @@ -1,3 +1,129 @@ +libxkbcommon 1.4.0 - 2022-02-04 +================== + +- Add `enable-tools` option to Meson build (on by default) to allow disabling + the `xkbcli` tools. + + Contributed by Alex Xu (Hello71). + +- In `xkbcli list`, fix "YAML Norway problem" in output. + + Contributed by Peter Hutterer. + +- In libxkbregistry, variants now inherit iso639, iso3166 and brief from parent + layout if omitted. + + Contributed by M Hickford. + +- In libxkbregistry, don't call `xmlCleanupParser()` - it's not supposed to + be called by libraries. + + Contributed by Peter Hutterer. + +- In libxkbregistry, skip over invalid ISO-639 or ISO-3166 entries. + + Contributed by Peter Hutterer. + +libxkbcommon 1.3.1 - 2021-09-10 +================== + +- In `xkbcli interactive-x11`, use the Esc keysym instead of the Esc keycode + for quitting. + + Contributed by Simon Ser. + +- In `xkbcli how-to-type`, add `--keysym` argugment for how to type a keysym + instead of a Unicode codepoint. + +- Fix a crash in `xkb_x11_keymap_new_from_device` error handling given some + invalid keymaps. Regressed in 1.2.0. + + Reported by Zack Weinberg. Tested by Uli Schlachter. + +libxkbcommon 1.3.0 - 2021-05-01 +================== + +- Change `xkbcli list` to output YAML, instead of the previous ad-hoc format. + + This allows to more easily process the information in a programmetic way, for + example + + xkbcli list | yq -r ".layouts[].layout" + + Contributed by Peter Hutterer. + +- Optimize a certain part of keymap compilation (atom interning). + +- Fix segmentation fault in case-insensitive `xkb_keysym_from_name` for certain + values like the empty string. + + Contributed by Isaac Freund. + +- Support building libxkbcommon as a meson subproject. + + Contributed by Adrian Perez de Castro. + +- Add `ftruncate` fallback for `posix_fallocate` in `xkbcli interactive-wayland` + for FreeBSD. + + Contributed by Evgeniy Khramtsov. + +- Properly export library symbols in MSVC. + + Contributed by Adrian Perez de Castro. + +libxkbcommon 1.2.1 - 2021-04-07 +================== + +- Fix `xkb_x11_keymap_new_from_device()` failing when the keymap contains key + types with missing level names, like the one used by the `numpad:mac` option + in xkeyboard-config. Regressed in 1.2.0. + +libxkbcommon 1.2.0 - 2021-04-03 +================== + +- `xkb_x11_keymap_new_from_device()` is much faster. It now performs only 2 + roundtrips to the X server, instead of dozens (in first-time calls). + + Contributed by Uli Schlachter. + +- Case-sensitive `xkb_keysym_from_name()` is much faster. + +- Keysym names of the form `0x12AB` and `U12AB` are parsed more strictly. + Previously the hexadecimal part was parsed with `strtoul()`, now only up + to 8 hexadecimal digits (0-9A-Fa-f) are allowed. + +- Compose files now have a size limit (65535 internal nodes). Further sequences + are discared and a warning is issued. + +- Compose table loading (`xkb_compose_table_new_from_locale()` and similar) is + much faster. + +- Use `poll()` instead of `epoll()` for `xlbcli interactive-evdev`, making it + portable to FreeBSD which provides evdev but not epoll. On FreeBSD, remember + to install the `evdev-proto` package to get the evdev headers. + +- The build now requires a C11 compiler (uses anonymous structs/unions). + +libxkbcommon 1.1.0 - 2021-02-27 +================== + +- Publish the `xkb-format-text-v1.md` file in the HTML documentation. This file + existed for a long time but only in the Git repository. + Link: https://xkbcommon.org/doc/current/md_doc_keymap_format_text_v1.html + +- Add partial documentation for xkb_symbols to xkb-format-text-v1.md. + + Contributed by Simon Zeni. + +- Update keysym definitions to latest xorgproto. In particular, this adds many + special keysyms corresponding to Linux evdev keycodes. + + Contributed by Peter Hutterer <@who-t.net>. + +- New API: + Too many XKB_KEY_* definitions to list here. + libxkbcommon 1.0.3 - 2020-11-23 ================== @@ -15,6 +15,7 @@ libxkbcommon is built with [Meson](http://mesonbuild.com/): meson setup build ninja -C build + ninja -C build test # Run the tests. To build for use with Wayland, you can disable X11 support while still using the X11 keyboard configuration resource files thusly: diff --git a/bench/.gitignore b/bench/.gitignore deleted file mode 100644 index cd32dfc..0000000 --- a/bench/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -key-proc -rules -rulescomp -compose diff --git a/bench/atom.c b/bench/atom.c new file mode 100644 index 0000000..7d78f64 --- /dev/null +++ b/bench/atom.c @@ -0,0 +1,93 @@ +/* + * Copyright © 2021 Ran Benita <ran@unusedvar.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <string.h> +#include <time.h> + +#include "atom.h" +#include "bench.h" +#include "darray.h" + +#define BENCHMARK_ITERATIONS 100 + +int +main(void) +{ + FILE *file; + char wordbuf[1024]; + darray(char *) words; + char **worditer; + struct atom_table *table; + xkb_atom_t atom; + const char *text; + struct bench bench; + char *elapsed; + + darray_init(words); + file = fopen("/usr/share/dict/words", "rb"); + if (file == NULL) { + perror("/usr/share/dict/words"); + return -1; + } + while (fgets(wordbuf, sizeof(wordbuf), file)) { + size_t len = strlen(wordbuf); + if (len > 0 && wordbuf[len - 1] == '\n') + wordbuf[len - 1] = '\0'; + darray_append(words, strdup(wordbuf)); + } + fclose(file); + + bench_start(&bench); + for (int i = 0; i < BENCHMARK_ITERATIONS; i++) { + table = atom_table_new(); + assert(table); + + darray_foreach(worditer, words) { + atom = atom_intern(table, *worditer, strlen(*worditer) - 1, true); + assert(atom != XKB_ATOM_NONE); + + text = atom_text(table, atom); + assert(text != NULL); + } + + atom_table_free(table); + } + bench_stop(&bench); + + elapsed = bench_elapsed_str(&bench); + fprintf(stderr, "%d iterations in %ss\n", + BENCHMARK_ITERATIONS, elapsed); + free(elapsed); + + darray_foreach(worditer, words) { + free(*worditer); + } + darray_free(words); + + return 0; +} diff --git a/bench/compose.c b/bench/compose.c index 7ff0798..4198e32 100644 --- a/bench/compose.c +++ b/bench/compose.c @@ -45,7 +45,7 @@ main(void) ctx = test_get_context(CONTEXT_NO_FLAG); assert(ctx); - path = test_get_path("compose/en_US.UTF-8/Compose"); + path = test_get_path("locale/en_US.UTF-8/Compose"); file = fopen(path, "rb"); if (file == NULL) { perror(path); diff --git a/bench/rules.c b/bench/rules.c index 3206583..1306dc4 100644 --- a/bench/rules.c +++ b/bench/rules.c @@ -40,7 +40,6 @@ main(int argc, char *argv[]) struct xkb_rule_names rmlvo = { "evdev", "pc105", "us,il", ",", "ctrl:nocaps,grp:menu_toggle", }; - struct xkb_component_names kccgst; struct bench bench; char *elapsed; @@ -52,6 +51,8 @@ main(int argc, char *argv[]) bench_start(&bench); for (i = 0; i < BENCHMARK_ITERATIONS; i++) { + struct xkb_component_names kccgst; + assert(xkb_components_from_rules(ctx, &rmlvo, &kccgst)); free(kccgst.keycodes); free(kccgst.types); diff --git a/bench/rulescomp.c b/bench/rulescomp.c index 3972a7b..0da4d3c 100644 --- a/bench/rulescomp.c +++ b/bench/rulescomp.c @@ -28,7 +28,7 @@ #include "../test/test.h" #include "bench.h" -#define BENCHMARK_ITERATIONS 2500 +#define BENCHMARK_ITERATIONS 1000 int main(int argc, char *argv[]) diff --git a/config.h b/config.h deleted file mode 120000 index 2d4dea9..0000000 --- a/config.h +++ /dev/null @@ -1 +0,0 @@ -config/config.h
\ No newline at end of file diff --git a/config/config.h b/config/config.h index 76ab62a..1ac39f3 100644 --- a/config/config.h +++ b/config/config.h @@ -45,7 +45,7 @@ #define LIBXKBCOMMON_TOOL_PATH "/usr/local/libexec/xkbcommon" -#define LIBXKBCOMMON_VERSION "1.0.3" +#define LIBXKBCOMMON_VERSION "1.4.0" #define WIN32_LEAN_AND_MEAN 1 diff --git a/config/libxkbcommon.so.0.0.0.p/parser.c b/config/libxkbcommon.so.0.0.0.p/parser.c index 921673f..bbb4c1e 100644 --- a/config/libxkbcommon.so.0.0.0.p/parser.c +++ b/config/libxkbcommon.so.0.0.0.p/parser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.2. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Bison version. */ -#define YYBISON_VERSION "3.7.2" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -334,6 +334,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -431,17 +443,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -655,7 +673,7 @@ static const yytype_int8 yytranslate[] = }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 254, 254, 256, 258, 262, 268, 269, 270, 273, @@ -727,21 +745,6 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, - 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, - 73, 74, 75, 76, 77 -}; -#endif - #define YYPACT_NINF (-182) #define yypact_value_is_default(Yyn) \ @@ -752,8 +755,8 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, @@ -792,9 +795,9 @@ static const yytype_int16 yypact[] = -182, -182, -182, -182 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, @@ -833,7 +836,7 @@ static const yytype_uint8 yydefact[] = 97, 95, 90, 92 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, @@ -846,10 +849,10 @@ static const yytype_int16 yypgoto[] = 420, -182 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, + 0, 10, 11, 25, 34, 12, 26, 36, 14, 15, 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, @@ -859,9 +862,9 @@ static const yytype_int16 yydefgoto[] = 29, 30 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, @@ -1018,8 +1021,8 @@ static const yytype_int16 yycheck[] = -1, -1, 55, -1, -1, 58 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, @@ -1058,7 +1061,7 @@ static const yytype_uint8 yystos[] = 105, 42, 49, 102 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_uint8 yyr1[] = { 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, @@ -1082,7 +1085,7 @@ static const yytype_uint8 yyr1[] = 133, 134, 135, 135, 136 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, @@ -1115,6 +1118,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -1155,10 +1159,7 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif + # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -1182,16 +1183,12 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct parser_param *param) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (param); + YY_USE (yyoutput); + YY_USE (param); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1305,8 +1302,8 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct parser_param *param) { - YYUSE (yyvaluep); - YYUSE (param); + YY_USE (yyvaluep); + YY_USE (param); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); @@ -1317,247 +1314,247 @@ yydestruct (const char *yymsg, case YYSYMBOL_STRING: /* STRING */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1321 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1318 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_IDENT: /* IDENT */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1327 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1324 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_XkbFile: /* XkbFile */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1333 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1330 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_XkbCompositeMap: /* XkbCompositeMap */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1339 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1336 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_XkbMapConfigList: /* XkbMapConfigList */ #line 237 "../src/xkbcomp/parser.y" { FreeXkbFile(((*yyvaluep).fileList).head); } -#line 1345 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1342 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_XkbMapConfig: /* XkbMapConfig */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1351 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1348 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_DeclList: /* DeclList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).anyList).head); } -#line 1357 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1354 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Decl: /* Decl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } -#line 1363 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1360 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_VarDecl: /* VarDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -#line 1369 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1366 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_KeyNameDecl: /* KeyNameDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } -#line 1375 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1372 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_KeyAliasDecl: /* KeyAliasDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } -#line 1381 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1378 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_VModDecl: /* VModDecl */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } -#line 1387 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1384 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_VModDefList: /* VModDefList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } -#line 1393 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1390 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_VModDef: /* VModDef */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } -#line 1399 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1396 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_InterpretDecl: /* InterpretDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -#line 1405 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1402 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_InterpretMatch: /* InterpretMatch */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -#line 1411 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1408 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_VarDeclList: /* VarDeclList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } -#line 1417 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1414 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_KeyTypeDecl: /* KeyTypeDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } -#line 1423 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1420 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_SymbolsDecl: /* SymbolsDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } -#line 1429 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1426 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_SymbolsBody: /* SymbolsBody */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } -#line 1435 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1432 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_SymbolsVarDecl: /* SymbolsVarDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -#line 1441 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1438 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_ArrayInit: /* ArrayInit */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1447 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1444 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_GroupCompatDecl: /* GroupCompatDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } -#line 1453 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1450 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_ModMapDecl: /* ModMapDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } -#line 1459 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1456 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_LedMapDecl: /* LedMapDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } -#line 1465 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1462 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_LedNameDecl: /* LedNameDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } -#line 1471 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1468 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_CoordList: /* CoordList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1477 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1474 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Coord: /* Coord */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1483 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1480 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_OptExprList: /* OptExprList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1489 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1486 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_ExprList: /* ExprList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1495 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1492 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Expr: /* Expr */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1501 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1498 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Term: /* Term */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1507 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1504 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_ActionList: /* ActionList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1513 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1510 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Action: /* Action */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1519 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1516 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Lhs: /* Lhs */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1525 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1522 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_Terminal: /* Terminal */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1531 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1528 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_OptKeySymList: /* OptKeySymList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1537 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1534 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_KeySymList: /* KeySymList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1543 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1540 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_KeySyms: /* KeySyms */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1549 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1546 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_OptMapName: /* OptMapName */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1555 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1552 "libxkbcommon.so.0.0.0.p/parser.c" break; case YYSYMBOL_MapName: /* MapName */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1561 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1558 "libxkbcommon.so.0.0.0.p/parser.c" break; default: @@ -1631,6 +1628,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -1656,7 +1654,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -1684,7 +1682,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -1695,7 +1693,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -1717,6 +1715,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -1831,55 +1830,55 @@ yyreduce: case 2: /* XkbFile: XkbCompositeMap */ #line 255 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; } -#line 1835 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1834 "libxkbcommon.so.0.0.0.p/parser.c" break; case 3: /* XkbFile: XkbMapConfig */ #line 257 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; YYACCEPT; } -#line 1841 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1840 "libxkbcommon.so.0.0.0.p/parser.c" break; case 4: /* XkbFile: END_OF_FILE */ #line 259 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } -#line 1847 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1846 "libxkbcommon.so.0.0.0.p/parser.c" break; case 5: /* XkbCompositeMap: OptFlags XkbCompositeType OptMapName OBRACE XkbMapConfigList CBRACE SEMI */ #line 265 "../src/xkbcomp/parser.y" { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].fileList).head, (yyvsp[-6].mapFlags)); } -#line 1853 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1852 "libxkbcommon.so.0.0.0.p/parser.c" break; case 6: /* XkbCompositeType: XKB_KEYMAP */ #line 268 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 1859 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1858 "libxkbcommon.so.0.0.0.p/parser.c" break; case 7: /* XkbCompositeType: XKB_SEMANTICS */ #line 269 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 1865 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1864 "libxkbcommon.so.0.0.0.p/parser.c" break; case 8: /* XkbCompositeType: XKB_LAYOUT */ #line 270 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 1871 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1870 "libxkbcommon.so.0.0.0.p/parser.c" break; case 9: /* XkbMapConfigList: XkbMapConfigList XkbMapConfig */ #line 274 "../src/xkbcomp/parser.y" { (yyval.fileList).head = (yyvsp[-1].fileList).head; (yyval.fileList).last->common.next = &(yyvsp[0].file)->common; (yyval.fileList).last = (yyvsp[0].file); } -#line 1877 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1876 "libxkbcommon.so.0.0.0.p/parser.c" break; case 10: /* XkbMapConfigList: XkbMapConfig */ #line 276 "../src/xkbcomp/parser.y" { (yyval.fileList).head = (yyval.fileList).last = (yyvsp[0].file); } -#line 1883 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1882 "libxkbcommon.so.0.0.0.p/parser.c" break; case 11: /* XkbMapConfig: OptFlags FileType OptMapName OBRACE DeclList CBRACE SEMI */ @@ -1887,109 +1886,109 @@ yyreduce: { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].anyList).head, (yyvsp[-6].mapFlags)); } -#line 1891 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1890 "libxkbcommon.so.0.0.0.p/parser.c" break; case 12: /* FileType: XKB_KEYCODES */ #line 287 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYCODES; } -#line 1897 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1896 "libxkbcommon.so.0.0.0.p/parser.c" break; case 13: /* FileType: XKB_TYPES */ #line 288 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_TYPES; } -#line 1903 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1902 "libxkbcommon.so.0.0.0.p/parser.c" break; case 14: /* FileType: XKB_COMPATMAP */ #line 289 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_COMPAT; } -#line 1909 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1908 "libxkbcommon.so.0.0.0.p/parser.c" break; case 15: /* FileType: XKB_SYMBOLS */ #line 290 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_SYMBOLS; } -#line 1915 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1914 "libxkbcommon.so.0.0.0.p/parser.c" break; case 16: /* FileType: XKB_GEOMETRY */ #line 291 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_GEOMETRY; } -#line 1921 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1920 "libxkbcommon.so.0.0.0.p/parser.c" break; case 17: /* OptFlags: Flags */ #line 294 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -#line 1927 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1926 "libxkbcommon.so.0.0.0.p/parser.c" break; case 18: /* OptFlags: %empty */ #line 295 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = 0; } -#line 1933 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1932 "libxkbcommon.so.0.0.0.p/parser.c" break; case 19: /* Flags: Flags Flag */ #line 298 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } -#line 1939 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1938 "libxkbcommon.so.0.0.0.p/parser.c" break; case 20: /* Flags: Flag */ #line 299 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -#line 1945 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1944 "libxkbcommon.so.0.0.0.p/parser.c" break; case 21: /* Flag: PARTIAL */ #line 302 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_PARTIAL; } -#line 1951 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1950 "libxkbcommon.so.0.0.0.p/parser.c" break; case 22: /* Flag: DEFAULT */ #line 303 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_DEFAULT; } -#line 1957 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1956 "libxkbcommon.so.0.0.0.p/parser.c" break; case 23: /* Flag: HIDDEN */ #line 304 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_HIDDEN; } -#line 1963 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1962 "libxkbcommon.so.0.0.0.p/parser.c" break; case 24: /* Flag: ALPHANUMERIC_KEYS */ #line 305 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } -#line 1969 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1968 "libxkbcommon.so.0.0.0.p/parser.c" break; case 25: /* Flag: MODIFIER_KEYS */ #line 306 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_MODIFIER; } -#line 1975 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1974 "libxkbcommon.so.0.0.0.p/parser.c" break; case 26: /* Flag: KEYPAD_KEYS */ #line 307 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_KEYPAD; } -#line 1981 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1980 "libxkbcommon.so.0.0.0.p/parser.c" break; case 27: /* Flag: FUNCTION_KEYS */ #line 308 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_FN; } -#line 1987 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1986 "libxkbcommon.so.0.0.0.p/parser.c" break; case 28: /* Flag: ALTERNATE_GROUP */ #line 309 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_ALTGR; } -#line 1993 "libxkbcommon.so.0.0.0.p/parser.c" +#line 1992 "libxkbcommon.so.0.0.0.p/parser.c" break; case 29: /* DeclList: DeclList Decl */ @@ -2003,7 +2002,7 @@ yyreduce: } } } -#line 2007 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2006 "libxkbcommon.so.0.0.0.p/parser.c" break; case 30: /* DeclList: DeclList OptMergeMode VModDecl */ @@ -2017,13 +2016,13 @@ yyreduce: (yyval.anyList).head = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; } } -#line 2021 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2020 "libxkbcommon.so.0.0.0.p/parser.c" break; case 31: /* DeclList: %empty */ #line 337 "../src/xkbcomp/parser.y" { (yyval.anyList).head = (yyval.anyList).last = NULL; } -#line 2027 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2026 "libxkbcommon.so.0.0.0.p/parser.c" break; case 32: /* Decl: OptMergeMode VarDecl */ @@ -2032,7 +2031,7 @@ yyreduce: (yyvsp[0].var)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].var); } -#line 2036 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2035 "libxkbcommon.so.0.0.0.p/parser.c" break; case 33: /* Decl: OptMergeMode InterpretDecl */ @@ -2041,7 +2040,7 @@ yyreduce: (yyvsp[0].interp)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].interp); } -#line 2045 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2044 "libxkbcommon.so.0.0.0.p/parser.c" break; case 34: /* Decl: OptMergeMode KeyNameDecl */ @@ -2050,7 +2049,7 @@ yyreduce: (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); } -#line 2054 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2053 "libxkbcommon.so.0.0.0.p/parser.c" break; case 35: /* Decl: OptMergeMode KeyAliasDecl */ @@ -2059,7 +2058,7 @@ yyreduce: (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); } -#line 2063 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2062 "libxkbcommon.so.0.0.0.p/parser.c" break; case 36: /* Decl: OptMergeMode KeyTypeDecl */ @@ -2068,7 +2067,7 @@ yyreduce: (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); } -#line 2072 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2071 "libxkbcommon.so.0.0.0.p/parser.c" break; case 37: /* Decl: OptMergeMode SymbolsDecl */ @@ -2077,7 +2076,7 @@ yyreduce: (yyvsp[0].syms)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].syms); } -#line 2081 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2080 "libxkbcommon.so.0.0.0.p/parser.c" break; case 38: /* Decl: OptMergeMode ModMapDecl */ @@ -2086,7 +2085,7 @@ yyreduce: (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); } -#line 2090 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2089 "libxkbcommon.so.0.0.0.p/parser.c" break; case 39: /* Decl: OptMergeMode GroupCompatDecl */ @@ -2095,7 +2094,7 @@ yyreduce: (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); } -#line 2099 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2098 "libxkbcommon.so.0.0.0.p/parser.c" break; case 40: /* Decl: OptMergeMode LedMapDecl */ @@ -2104,7 +2103,7 @@ yyreduce: (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); } -#line 2108 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2107 "libxkbcommon.so.0.0.0.p/parser.c" break; case 41: /* Decl: OptMergeMode LedNameDecl */ @@ -2113,25 +2112,25 @@ yyreduce: (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); } -#line 2117 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2116 "libxkbcommon.so.0.0.0.p/parser.c" break; case 42: /* Decl: OptMergeMode ShapeDecl */ #line 391 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2123 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2122 "libxkbcommon.so.0.0.0.p/parser.c" break; case 43: /* Decl: OptMergeMode SectionDecl */ #line 392 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2129 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2128 "libxkbcommon.so.0.0.0.p/parser.c" break; case 44: /* Decl: OptMergeMode DoodadDecl */ #line 393 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2135 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2134 "libxkbcommon.so.0.0.0.p/parser.c" break; case 45: /* Decl: MergeMode STRING */ @@ -2140,523 +2139,523 @@ yyreduce: (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); free((yyvsp[0].str)); } -#line 2144 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2143 "libxkbcommon.so.0.0.0.p/parser.c" break; case 46: /* VarDecl: Lhs EQUALS Expr SEMI */ #line 402 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 2150 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2149 "libxkbcommon.so.0.0.0.p/parser.c" break; case 47: /* VarDecl: Ident SEMI */ #line 404 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } -#line 2156 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2155 "libxkbcommon.so.0.0.0.p/parser.c" break; case 48: /* VarDecl: EXCLAM Ident SEMI */ #line 406 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } -#line 2162 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2161 "libxkbcommon.so.0.0.0.p/parser.c" break; case 49: /* KeyNameDecl: KEYNAME EQUALS KeyCode SEMI */ #line 410 "../src/xkbcomp/parser.y" { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } -#line 2168 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2167 "libxkbcommon.so.0.0.0.p/parser.c" break; case 50: /* KeyAliasDecl: ALIAS KEYNAME EQUALS KEYNAME SEMI */ #line 414 "../src/xkbcomp/parser.y" { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } -#line 2174 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2173 "libxkbcommon.so.0.0.0.p/parser.c" break; case 51: /* VModDecl: VIRTUAL_MODS VModDefList SEMI */ #line 418 "../src/xkbcomp/parser.y" { (yyval.vmodList) = (yyvsp[-1].vmodList); } -#line 2180 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2179 "libxkbcommon.so.0.0.0.p/parser.c" break; case 52: /* VModDefList: VModDefList COMMA VModDef */ #line 422 "../src/xkbcomp/parser.y" { (yyval.vmodList).head = (yyvsp[-2].vmodList).head; (yyval.vmodList).last->common.next = &(yyvsp[0].vmod)->common; (yyval.vmodList).last = (yyvsp[0].vmod); } -#line 2186 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2185 "libxkbcommon.so.0.0.0.p/parser.c" break; case 53: /* VModDefList: VModDef */ #line 424 "../src/xkbcomp/parser.y" { (yyval.vmodList).head = (yyval.vmodList).last = (yyvsp[0].vmod); } -#line 2192 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2191 "libxkbcommon.so.0.0.0.p/parser.c" break; case 54: /* VModDef: Ident */ #line 428 "../src/xkbcomp/parser.y" { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } -#line 2198 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2197 "libxkbcommon.so.0.0.0.p/parser.c" break; case 55: /* VModDef: Ident EQUALS Expr */ #line 430 "../src/xkbcomp/parser.y" { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } -#line 2204 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2203 "libxkbcommon.so.0.0.0.p/parser.c" break; case 56: /* InterpretDecl: INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI */ #line 436 "../src/xkbcomp/parser.y" { (yyvsp[-4].interp)->def = (yyvsp[-2].varList).head; (yyval.interp) = (yyvsp[-4].interp); } -#line 2210 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2209 "libxkbcommon.so.0.0.0.p/parser.c" break; case 57: /* InterpretMatch: KeySym PLUS Expr */ #line 440 "../src/xkbcomp/parser.y" { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } -#line 2216 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2215 "libxkbcommon.so.0.0.0.p/parser.c" break; case 58: /* InterpretMatch: KeySym */ #line 442 "../src/xkbcomp/parser.y" { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } -#line 2222 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2221 "libxkbcommon.so.0.0.0.p/parser.c" break; case 59: /* VarDeclList: VarDeclList VarDecl */ #line 446 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyvsp[-1].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } -#line 2228 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2227 "libxkbcommon.so.0.0.0.p/parser.c" break; case 60: /* VarDeclList: VarDecl */ #line 448 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } -#line 2234 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2233 "libxkbcommon.so.0.0.0.p/parser.c" break; case 61: /* KeyTypeDecl: TYPE String OBRACE VarDeclList CBRACE SEMI */ #line 454 "../src/xkbcomp/parser.y" { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } -#line 2240 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2239 "libxkbcommon.so.0.0.0.p/parser.c" break; case 62: /* SymbolsDecl: KEY KEYNAME OBRACE SymbolsBody CBRACE SEMI */ #line 460 "../src/xkbcomp/parser.y" { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } -#line 2246 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2245 "libxkbcommon.so.0.0.0.p/parser.c" break; case 63: /* SymbolsBody: SymbolsBody COMMA SymbolsVarDecl */ #line 464 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyvsp[-2].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } -#line 2252 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2251 "libxkbcommon.so.0.0.0.p/parser.c" break; case 64: /* SymbolsBody: SymbolsVarDecl */ #line 466 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } -#line 2258 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2257 "libxkbcommon.so.0.0.0.p/parser.c" break; case 65: /* SymbolsBody: %empty */ #line 467 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = NULL; } -#line 2264 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2263 "libxkbcommon.so.0.0.0.p/parser.c" break; case 66: /* SymbolsVarDecl: Lhs EQUALS Expr */ #line 470 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2270 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2269 "libxkbcommon.so.0.0.0.p/parser.c" break; case 67: /* SymbolsVarDecl: Lhs EQUALS ArrayInit */ #line 471 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2276 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2275 "libxkbcommon.so.0.0.0.p/parser.c" break; case 68: /* SymbolsVarDecl: Ident */ #line 472 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } -#line 2282 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2281 "libxkbcommon.so.0.0.0.p/parser.c" break; case 69: /* SymbolsVarDecl: EXCLAM Ident */ #line 473 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } -#line 2288 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2287 "libxkbcommon.so.0.0.0.p/parser.c" break; case 70: /* SymbolsVarDecl: ArrayInit */ #line 474 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } -#line 2294 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2293 "libxkbcommon.so.0.0.0.p/parser.c" break; case 71: /* ArrayInit: OBRACKET OptKeySymList CBRACKET */ #line 478 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 2300 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2299 "libxkbcommon.so.0.0.0.p/parser.c" break; case 72: /* ArrayInit: OBRACKET ActionList CBRACKET */ #line 480 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateActionList((yyvsp[-1].exprList).head); } -#line 2306 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2305 "libxkbcommon.so.0.0.0.p/parser.c" break; case 73: /* GroupCompatDecl: GROUP Integer EQUALS Expr SEMI */ #line 484 "../src/xkbcomp/parser.y" { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].num), (yyvsp[-1].expr)); } -#line 2312 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2311 "libxkbcommon.so.0.0.0.p/parser.c" break; case 74: /* ModMapDecl: MODIFIER_MAP Ident OBRACE ExprList CBRACE SEMI */ #line 488 "../src/xkbcomp/parser.y" { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].exprList).head); } -#line 2318 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2317 "libxkbcommon.so.0.0.0.p/parser.c" break; case 75: /* LedMapDecl: INDICATOR String OBRACE VarDeclList CBRACE SEMI */ #line 492 "../src/xkbcomp/parser.y" { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } -#line 2324 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2323 "libxkbcommon.so.0.0.0.p/parser.c" break; case 76: /* LedNameDecl: INDICATOR Integer EQUALS Expr SEMI */ #line 496 "../src/xkbcomp/parser.y" { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), false); } -#line 2330 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2329 "libxkbcommon.so.0.0.0.p/parser.c" break; case 77: /* LedNameDecl: VIRTUAL INDICATOR Integer EQUALS Expr SEMI */ #line 498 "../src/xkbcomp/parser.y" { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), true); } -#line 2336 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2335 "libxkbcommon.so.0.0.0.p/parser.c" break; case 78: /* ShapeDecl: SHAPE String OBRACE OutlineList CBRACE SEMI */ #line 502 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2342 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2341 "libxkbcommon.so.0.0.0.p/parser.c" break; case 79: /* ShapeDecl: SHAPE String OBRACE CoordList CBRACE SEMI */ #line 504 "../src/xkbcomp/parser.y" { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } -#line 2348 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2347 "libxkbcommon.so.0.0.0.p/parser.c" break; case 80: /* SectionDecl: SECTION String OBRACE SectionBody CBRACE SEMI */ #line 508 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2354 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2353 "libxkbcommon.so.0.0.0.p/parser.c" break; case 81: /* SectionBody: SectionBody SectionBodyItem */ #line 511 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2360 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2359 "libxkbcommon.so.0.0.0.p/parser.c" break; case 82: /* SectionBody: SectionBodyItem */ #line 512 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2366 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2365 "libxkbcommon.so.0.0.0.p/parser.c" break; case 83: /* SectionBodyItem: ROW OBRACE RowBody CBRACE SEMI */ #line 516 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2372 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2371 "libxkbcommon.so.0.0.0.p/parser.c" break; case 84: /* SectionBodyItem: VarDecl */ #line 518 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -#line 2378 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2377 "libxkbcommon.so.0.0.0.p/parser.c" break; case 85: /* SectionBodyItem: DoodadDecl */ #line 520 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2384 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2383 "libxkbcommon.so.0.0.0.p/parser.c" break; case 86: /* SectionBodyItem: LedMapDecl */ #line 522 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } -#line 2390 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2389 "libxkbcommon.so.0.0.0.p/parser.c" break; case 87: /* SectionBodyItem: OverlayDecl */ #line 524 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2396 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2395 "libxkbcommon.so.0.0.0.p/parser.c" break; case 88: /* RowBody: RowBody RowBodyItem */ #line 527 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2402 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2401 "libxkbcommon.so.0.0.0.p/parser.c" break; case 89: /* RowBody: RowBodyItem */ #line 528 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2408 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2407 "libxkbcommon.so.0.0.0.p/parser.c" break; case 90: /* RowBodyItem: KEYS OBRACE Keys CBRACE SEMI */ #line 531 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2414 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2413 "libxkbcommon.so.0.0.0.p/parser.c" break; case 91: /* RowBodyItem: VarDecl */ #line 533 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -#line 2420 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2419 "libxkbcommon.so.0.0.0.p/parser.c" break; case 92: /* Keys: Keys COMMA Key */ #line 536 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2426 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2425 "libxkbcommon.so.0.0.0.p/parser.c" break; case 93: /* Keys: Key */ #line 537 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2432 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2431 "libxkbcommon.so.0.0.0.p/parser.c" break; case 94: /* Key: KEYNAME */ #line 541 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2438 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2437 "libxkbcommon.so.0.0.0.p/parser.c" break; case 95: /* Key: OBRACE ExprList CBRACE */ #line 543 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[-1].exprList).head); (yyval.geom) = NULL; } -#line 2444 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2443 "libxkbcommon.so.0.0.0.p/parser.c" break; case 96: /* OverlayDecl: OVERLAY String OBRACE OverlayKeyList CBRACE SEMI */ #line 547 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2450 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2449 "libxkbcommon.so.0.0.0.p/parser.c" break; case 97: /* OverlayKeyList: OverlayKeyList COMMA OverlayKey */ #line 550 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2456 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2455 "libxkbcommon.so.0.0.0.p/parser.c" break; case 98: /* OverlayKeyList: OverlayKey */ #line 551 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2462 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2461 "libxkbcommon.so.0.0.0.p/parser.c" break; case 99: /* OverlayKey: KEYNAME EQUALS KEYNAME */ #line 554 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2468 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2467 "libxkbcommon.so.0.0.0.p/parser.c" break; case 100: /* OutlineList: OutlineList COMMA OutlineInList */ #line 558 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2474 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2473 "libxkbcommon.so.0.0.0.p/parser.c" break; case 101: /* OutlineList: OutlineInList */ #line 560 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2480 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2479 "libxkbcommon.so.0.0.0.p/parser.c" break; case 102: /* OutlineInList: OBRACE CoordList CBRACE */ #line 564 "../src/xkbcomp/parser.y" { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -#line 2486 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2485 "libxkbcommon.so.0.0.0.p/parser.c" break; case 103: /* OutlineInList: Ident EQUALS OBRACE CoordList CBRACE */ #line 566 "../src/xkbcomp/parser.y" { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -#line 2492 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2491 "libxkbcommon.so.0.0.0.p/parser.c" break; case 104: /* OutlineInList: Ident EQUALS Expr */ #line 568 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } -#line 2498 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2497 "libxkbcommon.so.0.0.0.p/parser.c" break; case 105: /* CoordList: CoordList COMMA Coord */ #line 572 "../src/xkbcomp/parser.y" { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -#line 2504 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2503 "libxkbcommon.so.0.0.0.p/parser.c" break; case 106: /* CoordList: Coord */ #line 574 "../src/xkbcomp/parser.y" { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -#line 2510 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2509 "libxkbcommon.so.0.0.0.p/parser.c" break; case 107: /* Coord: OBRACKET SignedNumber COMMA SignedNumber CBRACKET */ #line 578 "../src/xkbcomp/parser.y" { (yyval.expr) = NULL; } -#line 2516 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2515 "libxkbcommon.so.0.0.0.p/parser.c" break; case 108: /* DoodadDecl: DoodadType String OBRACE VarDeclList CBRACE SEMI */ #line 582 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[-2].varList).head); (yyval.geom) = NULL; } -#line 2522 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2521 "libxkbcommon.so.0.0.0.p/parser.c" break; case 109: /* DoodadType: TEXT */ #line 585 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2528 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2527 "libxkbcommon.so.0.0.0.p/parser.c" break; case 110: /* DoodadType: OUTLINE */ #line 586 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2534 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2533 "libxkbcommon.so.0.0.0.p/parser.c" break; case 111: /* DoodadType: SOLID */ #line 587 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2540 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2539 "libxkbcommon.so.0.0.0.p/parser.c" break; case 112: /* DoodadType: LOGO */ #line 588 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2546 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2545 "libxkbcommon.so.0.0.0.p/parser.c" break; case 113: /* FieldSpec: Ident */ #line 591 "../src/xkbcomp/parser.y" { (yyval.atom) = (yyvsp[0].atom); } -#line 2552 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2551 "libxkbcommon.so.0.0.0.p/parser.c" break; case 114: /* FieldSpec: Element */ #line 592 "../src/xkbcomp/parser.y" { (yyval.atom) = (yyvsp[0].atom); } -#line 2558 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2557 "libxkbcommon.so.0.0.0.p/parser.c" break; case 115: /* Element: ACTION_TOK */ #line 596 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } -#line 2564 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2563 "libxkbcommon.so.0.0.0.p/parser.c" break; case 116: /* Element: INTERPRET */ #line 598 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } -#line 2570 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2569 "libxkbcommon.so.0.0.0.p/parser.c" break; case 117: /* Element: TYPE */ #line 600 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } -#line 2576 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2575 "libxkbcommon.so.0.0.0.p/parser.c" break; case 118: /* Element: KEY */ #line 602 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } -#line 2582 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2581 "libxkbcommon.so.0.0.0.p/parser.c" break; case 119: /* Element: GROUP */ #line 604 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } -#line 2588 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2587 "libxkbcommon.so.0.0.0.p/parser.c" break; case 120: /* Element: MODIFIER_MAP */ #line 606 "../src/xkbcomp/parser.y" {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} -#line 2594 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2593 "libxkbcommon.so.0.0.0.p/parser.c" break; case 121: /* Element: INDICATOR */ #line 608 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } -#line 2600 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2599 "libxkbcommon.so.0.0.0.p/parser.c" break; case 122: /* Element: SHAPE */ #line 610 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "shape"); } -#line 2606 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2605 "libxkbcommon.so.0.0.0.p/parser.c" break; case 123: /* Element: ROW */ #line 612 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "row"); } -#line 2612 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2611 "libxkbcommon.so.0.0.0.p/parser.c" break; case 124: /* Element: SECTION */ #line 614 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "section"); } -#line 2618 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2617 "libxkbcommon.so.0.0.0.p/parser.c" break; case 125: /* Element: TEXT */ #line 616 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "text"); } -#line 2624 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2623 "libxkbcommon.so.0.0.0.p/parser.c" break; case 126: /* OptMergeMode: MergeMode */ #line 619 "../src/xkbcomp/parser.y" { (yyval.merge) = (yyvsp[0].merge); } -#line 2630 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2629 "libxkbcommon.so.0.0.0.p/parser.c" break; case 127: /* OptMergeMode: %empty */ #line 620 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_DEFAULT; } -#line 2636 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2635 "libxkbcommon.so.0.0.0.p/parser.c" break; case 128: /* MergeMode: INCLUDE */ #line 623 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_DEFAULT; } -#line 2642 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2641 "libxkbcommon.so.0.0.0.p/parser.c" break; case 129: /* MergeMode: AUGMENT */ #line 624 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_AUGMENT; } -#line 2648 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2647 "libxkbcommon.so.0.0.0.p/parser.c" break; case 130: /* MergeMode: OVERRIDE */ #line 625 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_OVERRIDE; } -#line 2654 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2653 "libxkbcommon.so.0.0.0.p/parser.c" break; case 131: /* MergeMode: REPLACE */ #line 626 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_REPLACE; } -#line 2660 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2659 "libxkbcommon.so.0.0.0.p/parser.c" break; case 132: /* MergeMode: ALTERNATE */ @@ -2668,223 +2667,223 @@ yyreduce: */ (yyval.merge) = MERGE_DEFAULT; } -#line 2672 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2671 "libxkbcommon.so.0.0.0.p/parser.c" break; case 133: /* OptExprList: ExprList */ #line 637 "../src/xkbcomp/parser.y" { (yyval.exprList) = (yyvsp[0].exprList); } -#line 2678 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2677 "libxkbcommon.so.0.0.0.p/parser.c" break; case 134: /* OptExprList: %empty */ #line 638 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = NULL; } -#line 2684 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2683 "libxkbcommon.so.0.0.0.p/parser.c" break; case 135: /* ExprList: ExprList COMMA Expr */ #line 642 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } -#line 2690 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2689 "libxkbcommon.so.0.0.0.p/parser.c" break; case 136: /* ExprList: Expr */ #line 644 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } -#line 2696 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2695 "libxkbcommon.so.0.0.0.p/parser.c" break; case 137: /* Expr: Expr DIVIDE Expr */ #line 648 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2702 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2701 "libxkbcommon.so.0.0.0.p/parser.c" break; case 138: /* Expr: Expr PLUS Expr */ #line 650 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2708 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2707 "libxkbcommon.so.0.0.0.p/parser.c" break; case 139: /* Expr: Expr MINUS Expr */ #line 652 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2714 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2713 "libxkbcommon.so.0.0.0.p/parser.c" break; case 140: /* Expr: Expr TIMES Expr */ #line 654 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2720 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2719 "libxkbcommon.so.0.0.0.p/parser.c" break; case 141: /* Expr: Lhs EQUALS Expr */ #line 656 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2726 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2725 "libxkbcommon.so.0.0.0.p/parser.c" break; case 142: /* Expr: Term */ #line 658 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2732 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2731 "libxkbcommon.so.0.0.0.p/parser.c" break; case 143: /* Term: MINUS Term */ #line 662 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -#line 2738 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2737 "libxkbcommon.so.0.0.0.p/parser.c" break; case 144: /* Term: PLUS Term */ #line 664 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -#line 2744 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2743 "libxkbcommon.so.0.0.0.p/parser.c" break; case 145: /* Term: EXCLAM Term */ #line 666 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } -#line 2750 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2749 "libxkbcommon.so.0.0.0.p/parser.c" break; case 146: /* Term: INVERT Term */ #line 668 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } -#line 2756 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2755 "libxkbcommon.so.0.0.0.p/parser.c" break; case 147: /* Term: Lhs */ #line 670 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2762 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2761 "libxkbcommon.so.0.0.0.p/parser.c" break; case 148: /* Term: FieldSpec OPAREN OptExprList CPAREN */ #line 672 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } -#line 2768 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2767 "libxkbcommon.so.0.0.0.p/parser.c" break; case 149: /* Term: Terminal */ #line 674 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2774 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2773 "libxkbcommon.so.0.0.0.p/parser.c" break; case 150: /* Term: OPAREN Expr CPAREN */ #line 676 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 2780 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2779 "libxkbcommon.so.0.0.0.p/parser.c" break; case 151: /* ActionList: ActionList COMMA Action */ #line 680 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } -#line 2786 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2785 "libxkbcommon.so.0.0.0.p/parser.c" break; case 152: /* ActionList: Action */ #line 682 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } -#line 2792 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2791 "libxkbcommon.so.0.0.0.p/parser.c" break; case 153: /* Action: FieldSpec OPAREN OptExprList CPAREN */ #line 686 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } -#line 2798 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2797 "libxkbcommon.so.0.0.0.p/parser.c" break; case 154: /* Lhs: FieldSpec */ #line 690 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } -#line 2804 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2803 "libxkbcommon.so.0.0.0.p/parser.c" break; case 155: /* Lhs: FieldSpec DOT FieldSpec */ #line 692 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } -#line 2810 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2809 "libxkbcommon.so.0.0.0.p/parser.c" break; case 156: /* Lhs: FieldSpec OBRACKET Expr CBRACKET */ #line 694 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } -#line 2816 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2815 "libxkbcommon.so.0.0.0.p/parser.c" break; case 157: /* Lhs: FieldSpec DOT FieldSpec OBRACKET Expr CBRACKET */ #line 696 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } -#line 2822 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2821 "libxkbcommon.so.0.0.0.p/parser.c" break; case 158: /* Terminal: String */ #line 700 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } -#line 2828 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2827 "libxkbcommon.so.0.0.0.p/parser.c" break; case 159: /* Terminal: Integer */ #line 702 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateInteger((yyvsp[0].num)); } -#line 2834 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2833 "libxkbcommon.so.0.0.0.p/parser.c" break; case 160: /* Terminal: Float */ #line 704 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateFloat(/* Discard $1 */); } -#line 2840 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2839 "libxkbcommon.so.0.0.0.p/parser.c" break; case 161: /* Terminal: KEYNAME */ #line 706 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } -#line 2846 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2845 "libxkbcommon.so.0.0.0.p/parser.c" break; case 162: /* OptKeySymList: KeySymList */ #line 709 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2852 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2851 "libxkbcommon.so.0.0.0.p/parser.c" break; case 163: /* OptKeySymList: %empty */ #line 710 "../src/xkbcomp/parser.y" { (yyval.expr) = NULL; } -#line 2858 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2857 "libxkbcommon.so.0.0.0.p/parser.c" break; case 164: /* KeySymList: KeySymList COMMA KeySym */ #line 714 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } -#line 2864 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2863 "libxkbcommon.so.0.0.0.p/parser.c" break; case 165: /* KeySymList: KeySymList COMMA KeySyms */ #line 716 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2870 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2869 "libxkbcommon.so.0.0.0.p/parser.c" break; case 166: /* KeySymList: KeySym */ #line 718 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } -#line 2876 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2875 "libxkbcommon.so.0.0.0.p/parser.c" break; case 167: /* KeySymList: KeySyms */ #line 720 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } -#line 2882 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2881 "libxkbcommon.so.0.0.0.p/parser.c" break; case 168: /* KeySyms: OBRACE KeySymList CBRACE */ #line 724 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 2888 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2887 "libxkbcommon.so.0.0.0.p/parser.c" break; case 169: /* KeySym: IDENT */ @@ -2896,13 +2895,13 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2900 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2899 "libxkbcommon.so.0.0.0.p/parser.c" break; case 170: /* KeySym: SECTION */ #line 735 "../src/xkbcomp/parser.y" { (yyval.keysym) = XKB_KEY_section; } -#line 2906 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2905 "libxkbcommon.so.0.0.0.p/parser.c" break; case 171: /* KeySym: Integer */ @@ -2924,89 +2923,89 @@ yyreduce: } } } -#line 2928 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2927 "libxkbcommon.so.0.0.0.p/parser.c" break; case 172: /* SignedNumber: MINUS Number */ #line 756 "../src/xkbcomp/parser.y" { (yyval.num) = -(yyvsp[0].num); } -#line 2934 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2933 "libxkbcommon.so.0.0.0.p/parser.c" break; case 173: /* SignedNumber: Number */ #line 757 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 2940 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2939 "libxkbcommon.so.0.0.0.p/parser.c" break; case 174: /* Number: FLOAT */ #line 760 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 2946 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2945 "libxkbcommon.so.0.0.0.p/parser.c" break; case 175: /* Number: INTEGER */ #line 761 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 2952 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2951 "libxkbcommon.so.0.0.0.p/parser.c" break; case 176: /* Float: FLOAT */ #line 764 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2958 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2957 "libxkbcommon.so.0.0.0.p/parser.c" break; case 177: /* Integer: INTEGER */ #line 767 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 2964 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2963 "libxkbcommon.so.0.0.0.p/parser.c" break; case 178: /* KeyCode: INTEGER */ #line 770 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 2970 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2969 "libxkbcommon.so.0.0.0.p/parser.c" break; case 179: /* Ident: IDENT */ #line 773 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } -#line 2976 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2975 "libxkbcommon.so.0.0.0.p/parser.c" break; case 180: /* Ident: DEFAULT */ #line 774 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } -#line 2982 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2981 "libxkbcommon.so.0.0.0.p/parser.c" break; case 181: /* String: STRING */ #line 777 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } -#line 2988 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2987 "libxkbcommon.so.0.0.0.p/parser.c" break; case 182: /* OptMapName: MapName */ #line 780 "../src/xkbcomp/parser.y" { (yyval.str) = (yyvsp[0].str); } -#line 2994 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2993 "libxkbcommon.so.0.0.0.p/parser.c" break; case 183: /* OptMapName: %empty */ #line 781 "../src/xkbcomp/parser.y" { (yyval.str) = NULL; } -#line 3000 "libxkbcommon.so.0.0.0.p/parser.c" +#line 2999 "libxkbcommon.so.0.0.0.p/parser.c" break; case 184: /* MapName: STRING */ #line 784 "../src/xkbcomp/parser.y" { (yyval.str) = (yyvsp[0].str); } -#line 3006 "libxkbcommon.so.0.0.0.p/parser.c" +#line 3005 "libxkbcommon.so.0.0.0.p/parser.c" break; -#line 3010 "libxkbcommon.so.0.0.0.p/parser.c" +#line 3009 "libxkbcommon.so.0.0.0.p/parser.c" default: break; } @@ -3088,6 +3087,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -3148,7 +3148,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -3156,24 +3156,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (param, YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at diff --git a/config/libxkbcommon.so.0.0.0.p/parser.h b/config/libxkbcommon.so.0.0.0.p/parser.h index 3d9dcaf..dfa0954 100644 --- a/config/libxkbcommon.so.0.0.0.p/parser.h +++ b/config/libxkbcommon.so.0.0.0.p/parser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.2. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ + along with this program. If not, see <https://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -164,6 +164,8 @@ typedef union YYSTYPE YYSTYPE; + int _xkbcommon_parse (struct parser_param *param); + #endif /* !YY__XKBCOMMON_LIBXKBCOMMON_SO_0_0_0_P_PARSER_H_INCLUDED */ diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 63b767d..0000000 --- a/doc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Doxyfile -html/ diff --git a/doc/keymap-format-text-v1.md b/doc/keymap-format-text-v1.md index eda6ebb..8726947 100644 --- a/doc/keymap-format-text-v1.md +++ b/doc/keymap-format-text-v1.md @@ -3,6 +3,12 @@ This document describes the `XKB_KEYMAP_FORMAT_TEXT_V1` keymap format, as implemented by libxkbcommon. +NOTE: This document is ever incomplete. Some additional resources are: + +- [Ivan Pascal's XKB documentation](https://web.archive.org/web/20190724015820/http://pascal.tsu.ru/en/xkb/) +- [An Unreliable Guide to XKB Configuration](https://www.charvolant.org/doug/xkb/html/index.html) +- [ArchWiki XKB page](https://wiki.archlinux.org/index.php/X_keyboard_extension) + A keymap consists of a single top-level `xkb_keymap` block, underwhich are nested the following sections. @@ -26,7 +32,7 @@ assign them the names `TLDE` and `AE01` respectively. The format `<WXYZ>` is always used to refer to a key by name. [The naming convention `<AE01>` just denotes the position of the key -in the main alphanumric section of a standard QWERTY keyboard, with +in the main alphanumeric section of a standard QWERTY keyboard, with the two letters specifying the row and the two digits specifying the column, from the bottom left.] @@ -69,7 +75,7 @@ section and by the user. ## The `xkb_types` section -This section is the second to be processesed, after `xkb_keycodes`. +This section is the second to be processed, after `xkb_keycodes`. However, it is completely independent and could have been the first to be processed (it does not refer to specific keys as specified in the `xkb_keycodes` section). @@ -299,7 +305,7 @@ statements: If the given modifiers are in the required state (see below), the LED is lit. -#### `whichModState` statment +#### `whichModState` statement whichModState = Latched+Locked; @@ -351,11 +357,109 @@ satisfied the LED is lit. ## The `xkb_symbols` section -This section is the fourth to be processed, after `xkb_keycodes`, -`xkb_types` and `xkb_compat`. +NOTE: The documentation of this section is incomplete. -TODO +This section is the fourth to be processed, after `xkb_keycodes`, `xkb_types` +and `xkb_compat`. + +Statements of the form: + + xkb_symbols "basic" { + ... + } + +Declare a symbols map named `basic`. Statements inside the curly braces only +affect the symbols map. + +A map can have various flags applied to it above the statement, separated by +whitespace: + + partial alphanumeric_keys + xkb_symbols "basic" { + ... + } + +The possible flags are: + + * `partial` - Indicates that the map doesn't cover a complete keyboard. + * `default` - Marks the symbol map as the default map in the file when no + explicit map is specified. If no map is marked as a default, the first map + in the file is the default. + * `hidden` - Variant that can only be used internally + * `alphanumeric_keys` - Indicates that the map contains alphanumeric keys + * `modifier_keys` - Indicates that the map contains modifier keys + * `keypad_keys` - Indicates that the map contains keypad keys + * `function_keys` - Indicates that the map contains function keys + * `alternate_group` - Indicates that the map contains keys for an alternate + group + +If no `*_keys` flags are supplied, then the map is assumed to cover a complete +keyboard. + +At present, except for `default`, none of the flags affect key processing in +libxkbcommon, and only serve as metadata. + +### Name statements + +Statements of the form: + + name[Group1] = "US/ASCII"; + groupName[1] = "US/ASCII"; + +Gives the name "US/ASCII" to the first group of symbols. Other groups can be +named using a different group index (ex: `Group2`), and with a different name. +A group must be named. + +`group` and `groupName` mean the same thing, and the `Group` in `Group1` is +optional. + +### Include statements + +Statements of the form: + + include "nokia_vndr/rx-51(nordic_base) + +Will include data from another `xkb_symbols` section, possibly located in +another file. Here it would include the `xkb_symbols` section called +`nordic_base`, from the file `rx-51` located in the `nokia_vndr` folder, itself +located in an XKB include path. + +### Key statement + +Statements of the form: + + key <AD01> { [ q, Q ] }; + +Describes the mapping of a keycode `<AD01>` to a given group of symbols. The +possible keycodes are the keycodes defined in the `xkb_keycodes` section. + +Symbols are named using the symbolic names from the +`xkbcommon/xkbcommon-keysyms.h` file. A group of symbols is enclosed in brackets +and separated by commas. Each element of the symbol arrays corresponds to a +different modifier level. In this example, the symbol (keysym) `XKB_KEY_q` for +level 1 and `XKB_KEY_Q` for level 2. + +#### Groups + +Each group represents a list of symbols mapped to a keycode: + + name[Group1]= "US/ASCII"; + name[Group2]= "Russian"; + ... + key <AD01> { [ q, Q ], + [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + +A long-form syntax can also be used: + + key <AD01> { + symbols[Group1]= [ q, Q ], + symbols[Group2]= [ Cyrillic_shorti, Cyrillic_SHORTI ] + }; + +Groups can also be omitted, but the brackets must be present. The following +statement only defines the Group3 of a mapping: + key <AD01> { [], [], [ q, Q ] }; ## Virtual modifier statements diff --git a/doc/user-configuration.md b/doc/user-configuration.md index 2146599..40f7f77 100644 --- a/doc/user-configuration.md +++ b/doc/user-configuration.md @@ -197,8 +197,10 @@ $ cat $XDG_CONFIG_HOME/xkb/rules/evdev.xml <name>orange</name> <shortDescription>or</shortDescription> <description>Orange (Banana)</description> - </variant> + </configItem> + </variant> </variantList> + </layout> </layoutList> <optionList> <group allowMultipleSelection="true"> diff --git a/fuzz/.gitignore b/fuzz/.gitignore deleted file mode 100644 index 413910a..0000000 --- a/fuzz/.gitignore +++ /dev/null @@ -1 +0,0 @@ -findings/ diff --git a/xkbcommon/xkbcommon-compat.h b/include/xkbcommon/xkbcommon-compat.h index 299732f..299732f 100644 --- a/xkbcommon/xkbcommon-compat.h +++ b/include/xkbcommon/xkbcommon-compat.h diff --git a/xkbcommon/xkbcommon-compose.h b/include/xkbcommon/xkbcommon-compose.h index 8b41b98..8b41b98 100644 --- a/xkbcommon/xkbcommon-compose.h +++ b/include/xkbcommon/xkbcommon-compose.h diff --git a/xkbcommon/xkbcommon-keysyms.h b/include/xkbcommon/xkbcommon-keysyms.h index 540704e..7c75c29 100644 --- a/xkbcommon/xkbcommon-keysyms.h +++ b/include/xkbcommon/xkbcommon-keysyms.h @@ -93,8 +93,8 @@ SOFTWARE. * Mnemonic names for keysyms are defined in this file with lines * that match one of these Perl regular expressions: * - * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/ - * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/ + * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U\+([0-9A-F]{4,6}) (.*) \*\/\s*$/ + * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U\+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/ * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/ * * Before adding new keysyms, please do consider the following: In @@ -1431,9 +1431,9 @@ SOFTWARE. #define XKB_KEY_fivesixths 0x0ab7 /* U+215A VULGAR FRACTION FIVE SIXTHS */ #define XKB_KEY_careof 0x0ab8 /* U+2105 CARE OF */ #define XKB_KEY_figdash 0x0abb /* U+2012 FIGURE DASH */ -#define XKB_KEY_leftanglebracket 0x0abc /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/ +#define XKB_KEY_leftanglebracket 0x0abc /*(U+2329 LEFT-POINTING ANGLE BRACKET)*/ #define XKB_KEY_decimalpoint 0x0abd /*(U+002E FULL STOP)*/ -#define XKB_KEY_rightanglebracket 0x0abe /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/ +#define XKB_KEY_rightanglebracket 0x0abe /*(U+232A RIGHT-POINTING ANGLE BRACKET)*/ #define XKB_KEY_marker 0x0abf #define XKB_KEY_oneeighth 0x0ac3 /* U+215B VULGAR FRACTION ONE EIGHTH */ #define XKB_KEY_threeeighths 0x0ac4 /* U+215C VULGAR FRACTION THREE EIGHTHS */ @@ -1678,106 +1678,106 @@ SOFTWARE. #define XKB_KEY_Hangul_switch 0xff7e /* Alias for mode_switch */ /* Hangul Consonant Characters */ -#define XKB_KEY_Hangul_Kiyeog 0x0ea1 -#define XKB_KEY_Hangul_SsangKiyeog 0x0ea2 -#define XKB_KEY_Hangul_KiyeogSios 0x0ea3 -#define XKB_KEY_Hangul_Nieun 0x0ea4 -#define XKB_KEY_Hangul_NieunJieuj 0x0ea5 -#define XKB_KEY_Hangul_NieunHieuh 0x0ea6 -#define XKB_KEY_Hangul_Dikeud 0x0ea7 -#define XKB_KEY_Hangul_SsangDikeud 0x0ea8 -#define XKB_KEY_Hangul_Rieul 0x0ea9 -#define XKB_KEY_Hangul_RieulKiyeog 0x0eaa -#define XKB_KEY_Hangul_RieulMieum 0x0eab -#define XKB_KEY_Hangul_RieulPieub 0x0eac -#define XKB_KEY_Hangul_RieulSios 0x0ead -#define XKB_KEY_Hangul_RieulTieut 0x0eae -#define XKB_KEY_Hangul_RieulPhieuf 0x0eaf -#define XKB_KEY_Hangul_RieulHieuh 0x0eb0 -#define XKB_KEY_Hangul_Mieum 0x0eb1 -#define XKB_KEY_Hangul_Pieub 0x0eb2 -#define XKB_KEY_Hangul_SsangPieub 0x0eb3 -#define XKB_KEY_Hangul_PieubSios 0x0eb4 -#define XKB_KEY_Hangul_Sios 0x0eb5 -#define XKB_KEY_Hangul_SsangSios 0x0eb6 -#define XKB_KEY_Hangul_Ieung 0x0eb7 -#define XKB_KEY_Hangul_Jieuj 0x0eb8 -#define XKB_KEY_Hangul_SsangJieuj 0x0eb9 -#define XKB_KEY_Hangul_Cieuc 0x0eba -#define XKB_KEY_Hangul_Khieuq 0x0ebb -#define XKB_KEY_Hangul_Tieut 0x0ebc -#define XKB_KEY_Hangul_Phieuf 0x0ebd -#define XKB_KEY_Hangul_Hieuh 0x0ebe +#define XKB_KEY_Hangul_Kiyeog 0x0ea1 /* U+3131 HANGUL LETTER KIYEOK */ +#define XKB_KEY_Hangul_SsangKiyeog 0x0ea2 /* U+3132 HANGUL LETTER SSANGKIYEOK */ +#define XKB_KEY_Hangul_KiyeogSios 0x0ea3 /* U+3133 HANGUL LETTER KIYEOK-SIOS */ +#define XKB_KEY_Hangul_Nieun 0x0ea4 /* U+3134 HANGUL LETTER NIEUN */ +#define XKB_KEY_Hangul_NieunJieuj 0x0ea5 /* U+3135 HANGUL LETTER NIEUN-CIEUC */ +#define XKB_KEY_Hangul_NieunHieuh 0x0ea6 /* U+3136 HANGUL LETTER NIEUN-HIEUH */ +#define XKB_KEY_Hangul_Dikeud 0x0ea7 /* U+3137 HANGUL LETTER TIKEUT */ +#define XKB_KEY_Hangul_SsangDikeud 0x0ea8 /* U+3138 HANGUL LETTER SSANGTIKEUT */ +#define XKB_KEY_Hangul_Rieul 0x0ea9 /* U+3139 HANGUL LETTER RIEUL */ +#define XKB_KEY_Hangul_RieulKiyeog 0x0eaa /* U+313A HANGUL LETTER RIEUL-KIYEOK */ +#define XKB_KEY_Hangul_RieulMieum 0x0eab /* U+313B HANGUL LETTER RIEUL-MIEUM */ +#define XKB_KEY_Hangul_RieulPieub 0x0eac /* U+313C HANGUL LETTER RIEUL-PIEUP */ +#define XKB_KEY_Hangul_RieulSios 0x0ead /* U+313D HANGUL LETTER RIEUL-SIOS */ +#define XKB_KEY_Hangul_RieulTieut 0x0eae /* U+313E HANGUL LETTER RIEUL-THIEUTH */ +#define XKB_KEY_Hangul_RieulPhieuf 0x0eaf /* U+313F HANGUL LETTER RIEUL-PHIEUPH */ +#define XKB_KEY_Hangul_RieulHieuh 0x0eb0 /* U+3140 HANGUL LETTER RIEUL-HIEUH */ +#define XKB_KEY_Hangul_Mieum 0x0eb1 /* U+3141 HANGUL LETTER MIEUM */ +#define XKB_KEY_Hangul_Pieub 0x0eb2 /* U+3142 HANGUL LETTER PIEUP */ +#define XKB_KEY_Hangul_SsangPieub 0x0eb3 /* U+3143 HANGUL LETTER SSANGPIEUP */ +#define XKB_KEY_Hangul_PieubSios 0x0eb4 /* U+3144 HANGUL LETTER PIEUP-SIOS */ +#define XKB_KEY_Hangul_Sios 0x0eb5 /* U+3145 HANGUL LETTER SIOS */ +#define XKB_KEY_Hangul_SsangSios 0x0eb6 /* U+3146 HANGUL LETTER SSANGSIOS */ +#define XKB_KEY_Hangul_Ieung 0x0eb7 /* U+3147 HANGUL LETTER IEUNG */ +#define XKB_KEY_Hangul_Jieuj 0x0eb8 /* U+3148 HANGUL LETTER CIEUC */ +#define XKB_KEY_Hangul_SsangJieuj 0x0eb9 /* U+3149 HANGUL LETTER SSANGCIEUC */ +#define XKB_KEY_Hangul_Cieuc 0x0eba /* U+314A HANGUL LETTER CHIEUCH */ +#define XKB_KEY_Hangul_Khieuq 0x0ebb /* U+314B HANGUL LETTER KHIEUKH */ +#define XKB_KEY_Hangul_Tieut 0x0ebc /* U+314C HANGUL LETTER THIEUTH */ +#define XKB_KEY_Hangul_Phieuf 0x0ebd /* U+314D HANGUL LETTER PHIEUPH */ +#define XKB_KEY_Hangul_Hieuh 0x0ebe /* U+314E HANGUL LETTER HIEUH */ /* Hangul Vowel Characters */ -#define XKB_KEY_Hangul_A 0x0ebf -#define XKB_KEY_Hangul_AE 0x0ec0 -#define XKB_KEY_Hangul_YA 0x0ec1 -#define XKB_KEY_Hangul_YAE 0x0ec2 -#define XKB_KEY_Hangul_EO 0x0ec3 -#define XKB_KEY_Hangul_E 0x0ec4 -#define XKB_KEY_Hangul_YEO 0x0ec5 -#define XKB_KEY_Hangul_YE 0x0ec6 -#define XKB_KEY_Hangul_O 0x0ec7 -#define XKB_KEY_Hangul_WA 0x0ec8 -#define XKB_KEY_Hangul_WAE 0x0ec9 -#define XKB_KEY_Hangul_OE 0x0eca -#define XKB_KEY_Hangul_YO 0x0ecb -#define XKB_KEY_Hangul_U 0x0ecc -#define XKB_KEY_Hangul_WEO 0x0ecd -#define XKB_KEY_Hangul_WE 0x0ece -#define XKB_KEY_Hangul_WI 0x0ecf -#define XKB_KEY_Hangul_YU 0x0ed0 -#define XKB_KEY_Hangul_EU 0x0ed1 -#define XKB_KEY_Hangul_YI 0x0ed2 -#define XKB_KEY_Hangul_I 0x0ed3 +#define XKB_KEY_Hangul_A 0x0ebf /* U+314F HANGUL LETTER A */ +#define XKB_KEY_Hangul_AE 0x0ec0 /* U+3150 HANGUL LETTER AE */ +#define XKB_KEY_Hangul_YA 0x0ec1 /* U+3151 HANGUL LETTER YA */ +#define XKB_KEY_Hangul_YAE 0x0ec2 /* U+3152 HANGUL LETTER YAE */ +#define XKB_KEY_Hangul_EO 0x0ec3 /* U+3153 HANGUL LETTER EO */ +#define XKB_KEY_Hangul_E 0x0ec4 /* U+3154 HANGUL LETTER E */ +#define XKB_KEY_Hangul_YEO 0x0ec5 /* U+3155 HANGUL LETTER YEO */ +#define XKB_KEY_Hangul_YE 0x0ec6 /* U+3156 HANGUL LETTER YE */ +#define XKB_KEY_Hangul_O 0x0ec7 /* U+3157 HANGUL LETTER O */ +#define XKB_KEY_Hangul_WA 0x0ec8 /* U+3158 HANGUL LETTER WA */ +#define XKB_KEY_Hangul_WAE 0x0ec9 /* U+3159 HANGUL LETTER WAE */ +#define XKB_KEY_Hangul_OE 0x0eca /* U+315A HANGUL LETTER OE */ +#define XKB_KEY_Hangul_YO 0x0ecb /* U+315B HANGUL LETTER YO */ +#define XKB_KEY_Hangul_U 0x0ecc /* U+315C HANGUL LETTER U */ +#define XKB_KEY_Hangul_WEO 0x0ecd /* U+315D HANGUL LETTER WEO */ +#define XKB_KEY_Hangul_WE 0x0ece /* U+315E HANGUL LETTER WE */ +#define XKB_KEY_Hangul_WI 0x0ecf /* U+315F HANGUL LETTER WI */ +#define XKB_KEY_Hangul_YU 0x0ed0 /* U+3160 HANGUL LETTER YU */ +#define XKB_KEY_Hangul_EU 0x0ed1 /* U+3161 HANGUL LETTER EU */ +#define XKB_KEY_Hangul_YI 0x0ed2 /* U+3162 HANGUL LETTER YI */ +#define XKB_KEY_Hangul_I 0x0ed3 /* U+3163 HANGUL LETTER I */ /* Hangul syllable-final (JongSeong) Characters */ -#define XKB_KEY_Hangul_J_Kiyeog 0x0ed4 -#define XKB_KEY_Hangul_J_SsangKiyeog 0x0ed5 -#define XKB_KEY_Hangul_J_KiyeogSios 0x0ed6 -#define XKB_KEY_Hangul_J_Nieun 0x0ed7 -#define XKB_KEY_Hangul_J_NieunJieuj 0x0ed8 -#define XKB_KEY_Hangul_J_NieunHieuh 0x0ed9 -#define XKB_KEY_Hangul_J_Dikeud 0x0eda -#define XKB_KEY_Hangul_J_Rieul 0x0edb -#define XKB_KEY_Hangul_J_RieulKiyeog 0x0edc -#define XKB_KEY_Hangul_J_RieulMieum 0x0edd -#define XKB_KEY_Hangul_J_RieulPieub 0x0ede -#define XKB_KEY_Hangul_J_RieulSios 0x0edf -#define XKB_KEY_Hangul_J_RieulTieut 0x0ee0 -#define XKB_KEY_Hangul_J_RieulPhieuf 0x0ee1 -#define XKB_KEY_Hangul_J_RieulHieuh 0x0ee2 -#define XKB_KEY_Hangul_J_Mieum 0x0ee3 -#define XKB_KEY_Hangul_J_Pieub 0x0ee4 -#define XKB_KEY_Hangul_J_PieubSios 0x0ee5 -#define XKB_KEY_Hangul_J_Sios 0x0ee6 -#define XKB_KEY_Hangul_J_SsangSios 0x0ee7 -#define XKB_KEY_Hangul_J_Ieung 0x0ee8 -#define XKB_KEY_Hangul_J_Jieuj 0x0ee9 -#define XKB_KEY_Hangul_J_Cieuc 0x0eea -#define XKB_KEY_Hangul_J_Khieuq 0x0eeb -#define XKB_KEY_Hangul_J_Tieut 0x0eec -#define XKB_KEY_Hangul_J_Phieuf 0x0eed -#define XKB_KEY_Hangul_J_Hieuh 0x0eee +#define XKB_KEY_Hangul_J_Kiyeog 0x0ed4 /* U+11A8 HANGUL JONGSEONG KIYEOK */ +#define XKB_KEY_Hangul_J_SsangKiyeog 0x0ed5 /* U+11A9 HANGUL JONGSEONG SSANGKIYEOK */ +#define XKB_KEY_Hangul_J_KiyeogSios 0x0ed6 /* U+11AA HANGUL JONGSEONG KIYEOK-SIOS */ +#define XKB_KEY_Hangul_J_Nieun 0x0ed7 /* U+11AB HANGUL JONGSEONG NIEUN */ +#define XKB_KEY_Hangul_J_NieunJieuj 0x0ed8 /* U+11AC HANGUL JONGSEONG NIEUN-CIEUC */ +#define XKB_KEY_Hangul_J_NieunHieuh 0x0ed9 /* U+11AD HANGUL JONGSEONG NIEUN-HIEUH */ +#define XKB_KEY_Hangul_J_Dikeud 0x0eda /* U+11AE HANGUL JONGSEONG TIKEUT */ +#define XKB_KEY_Hangul_J_Rieul 0x0edb /* U+11AF HANGUL JONGSEONG RIEUL */ +#define XKB_KEY_Hangul_J_RieulKiyeog 0x0edc /* U+11B0 HANGUL JONGSEONG RIEUL-KIYEOK */ +#define XKB_KEY_Hangul_J_RieulMieum 0x0edd /* U+11B1 HANGUL JONGSEONG RIEUL-MIEUM */ +#define XKB_KEY_Hangul_J_RieulPieub 0x0ede /* U+11B2 HANGUL JONGSEONG RIEUL-PIEUP */ +#define XKB_KEY_Hangul_J_RieulSios 0x0edf /* U+11B3 HANGUL JONGSEONG RIEUL-SIOS */ +#define XKB_KEY_Hangul_J_RieulTieut 0x0ee0 /* U+11B4 HANGUL JONGSEONG RIEUL-THIEUTH */ +#define XKB_KEY_Hangul_J_RieulPhieuf 0x0ee1 /* U+11B5 HANGUL JONGSEONG RIEUL-PHIEUPH */ +#define XKB_KEY_Hangul_J_RieulHieuh 0x0ee2 /* U+11B6 HANGUL JONGSEONG RIEUL-HIEUH */ +#define XKB_KEY_Hangul_J_Mieum 0x0ee3 /* U+11B7 HANGUL JONGSEONG MIEUM */ +#define XKB_KEY_Hangul_J_Pieub 0x0ee4 /* U+11B8 HANGUL JONGSEONG PIEUP */ +#define XKB_KEY_Hangul_J_PieubSios 0x0ee5 /* U+11B9 HANGUL JONGSEONG PIEUP-SIOS */ +#define XKB_KEY_Hangul_J_Sios 0x0ee6 /* U+11BA HANGUL JONGSEONG SIOS */ +#define XKB_KEY_Hangul_J_SsangSios 0x0ee7 /* U+11BB HANGUL JONGSEONG SSANGSIOS */ +#define XKB_KEY_Hangul_J_Ieung 0x0ee8 /* U+11BC HANGUL JONGSEONG IEUNG */ +#define XKB_KEY_Hangul_J_Jieuj 0x0ee9 /* U+11BD HANGUL JONGSEONG CIEUC */ +#define XKB_KEY_Hangul_J_Cieuc 0x0eea /* U+11BE HANGUL JONGSEONG CHIEUCH */ +#define XKB_KEY_Hangul_J_Khieuq 0x0eeb /* U+11BF HANGUL JONGSEONG KHIEUKH */ +#define XKB_KEY_Hangul_J_Tieut 0x0eec /* U+11C0 HANGUL JONGSEONG THIEUTH */ +#define XKB_KEY_Hangul_J_Phieuf 0x0eed /* U+11C1 HANGUL JONGSEONG PHIEUPH */ +#define XKB_KEY_Hangul_J_Hieuh 0x0eee /* U+11C2 HANGUL JONGSEONG HIEUH */ /* Ancient Hangul Consonant Characters */ -#define XKB_KEY_Hangul_RieulYeorinHieuh 0x0eef -#define XKB_KEY_Hangul_SunkyeongeumMieum 0x0ef0 -#define XKB_KEY_Hangul_SunkyeongeumPieub 0x0ef1 -#define XKB_KEY_Hangul_PanSios 0x0ef2 -#define XKB_KEY_Hangul_KkogjiDalrinIeung 0x0ef3 -#define XKB_KEY_Hangul_SunkyeongeumPhieuf 0x0ef4 -#define XKB_KEY_Hangul_YeorinHieuh 0x0ef5 +#define XKB_KEY_Hangul_RieulYeorinHieuh 0x0eef /* U+316D HANGUL LETTER RIEUL-YEORINHIEUH */ +#define XKB_KEY_Hangul_SunkyeongeumMieum 0x0ef0 /* U+3171 HANGUL LETTER KAPYEOUNMIEUM */ +#define XKB_KEY_Hangul_SunkyeongeumPieub 0x0ef1 /* U+3178 HANGUL LETTER KAPYEOUNPIEUP */ +#define XKB_KEY_Hangul_PanSios 0x0ef2 /* U+317F HANGUL LETTER PANSIOS */ +#define XKB_KEY_Hangul_KkogjiDalrinIeung 0x0ef3 /* U+3181 HANGUL LETTER YESIEUNG */ +#define XKB_KEY_Hangul_SunkyeongeumPhieuf 0x0ef4 /* U+3184 HANGUL LETTER KAPYEOUNPHIEUPH */ +#define XKB_KEY_Hangul_YeorinHieuh 0x0ef5 /* U+3186 HANGUL LETTER YEORINHIEUH */ /* Ancient Hangul Vowel Characters */ -#define XKB_KEY_Hangul_AraeA 0x0ef6 -#define XKB_KEY_Hangul_AraeAE 0x0ef7 +#define XKB_KEY_Hangul_AraeA 0x0ef6 /* U+318D HANGUL LETTER ARAEA */ +#define XKB_KEY_Hangul_AraeAE 0x0ef7 /* U+318E HANGUL LETTER ARAEAE */ /* Ancient Hangul syllable-final (JongSeong) Characters */ -#define XKB_KEY_Hangul_J_PanSios 0x0ef8 -#define XKB_KEY_Hangul_J_KkogjiDalrinIeung 0x0ef9 -#define XKB_KEY_Hangul_J_YeorinHieuh 0x0efa +#define XKB_KEY_Hangul_J_PanSios 0x0ef8 /* U+11EB HANGUL JONGSEONG PANSIOS */ +#define XKB_KEY_Hangul_J_KkogjiDalrinIeung 0x0ef9 /* U+11F0 HANGUL JONGSEONG YESIEUNG */ +#define XKB_KEY_Hangul_J_YeorinHieuh 0x0efa /* U+11F9 HANGUL JONGSEONG YEORINHIEUH */ /* Korean currency symbol */ #define XKB_KEY_Korean_Won 0x0eff /*(U+20A9 WON SIGN)*/ @@ -2044,6 +2044,11 @@ SOFTWARE. #define XKB_KEY_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */ #define XKB_KEY_Uhorn 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */ #define XKB_KEY_uhorn 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */ +#define XKB_KEY_combining_tilde 0x1000303 /* U+0303 COMBINING TILDE */ +#define XKB_KEY_combining_grave 0x1000300 /* U+0300 COMBINING GRAVE ACCENT */ +#define XKB_KEY_combining_acute 0x1000301 /* U+0301 COMBINING ACUTE ACCENT */ +#define XKB_KEY_combining_hook 0x1000309 /* U+0309 COMBINING HOOK ABOVE */ +#define XKB_KEY_combining_belowdot 0x1000323 /* U+0323 COMBINING DOT BELOW */ #define XKB_KEY_EcuSign 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */ @@ -2089,8 +2094,8 @@ SOFTWARE. #define XKB_KEY_dintegral 0x100222C /* U+222C DOUBLE INTEGRAL */ #define XKB_KEY_tintegral 0x100222D /* U+222D TRIPLE INTEGRAL */ #define XKB_KEY_because 0x1002235 /* U+2235 BECAUSE */ -#define XKB_KEY_approxeq 0x1002248 /* U+2245 ALMOST EQUAL TO */ -#define XKB_KEY_notapproxeq 0x1002247 /* U+2247 NOT ALMOST EQUAL TO */ +#define XKB_KEY_approxeq 0x1002248 /*(U+2248 ALMOST EQUAL TO)*/ +#define XKB_KEY_notapproxeq 0x1002247 /*(U+2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO)*/ #define XKB_KEY_notidentical 0x1002262 /* U+2262 NOT IDENTICAL TO */ #define XKB_KEY_stricteq 0x1002263 /* U+2263 STRICTLY EQUIVALENT TO */ @@ -2451,8 +2456,10 @@ SOFTWARE. * * The XFree86 keysym range is 0x10080001 - 0x1008FFFF. * - * X.Org will not be adding to the XF86 set of keysyms, though they have - * been adopted and are considered a "standard" part of X keysym definitions. + * The XF86 set of keysyms is a catch-all set of defines for keysyms found + * on various multimedia keyboards. Originally specific to XFree86 they have + * been been adopted over time and are considered a "standard" part of X + * keysym definitions. * XFree86 never properly commented these keysyms, so we have done our * best to explain the semantic meaning of these keys. * @@ -2678,6 +2685,238 @@ SOFTWARE. #define XKB_KEY_XF86Prev_VMode 0x1008FE23 /* prev. video mode available */ #define XKB_KEY_XF86LogWindowTree 0x1008FE24 /* print window tree to log */ #define XKB_KEY_XF86LogGrabInfo 0x1008FE25 /* print all active grabs to log */ + + +/* + * Reserved range for evdev symbols: 0x10081000-0x10081FFF + * + * Key syms within this range must match the Linux kernel + * input-event-codes.h file in the format: + * XF86XK_CamelCaseKernelName _EVDEVK(kernel value) + * For example, the kernel + * #define KEY_MACRO_RECORD_START 0x2b0 + * effectively ends up as: + * #define XKB_KEY_XF86MacroRecordStart 0x100812b0 + * + * For historical reasons, some keysyms within the reserved range will be + * missing, most notably all "normal" keys that are mapped through default + * XKB layouts (e.g. KEY_Q). + * + * CamelCasing is done with a human control as last authority, e.g. see VOD + * instead of Vod for the Video on Demand key. + * + * The format for #defines is strict: + * + * #define XKB_KEY_XF86FOO<tab...>_EVDEVK(0xABC)<tab><tab> |* kver KEY_FOO *| + * + * Where + * - alignment by tabs + * - the _EVDEVK macro must be used + * - the hex code must be in uppercase hex + * - the kernel version (kver) is in the form v5.10 + * - kver and key name are within a slash-star comment (a pipe is used in + * this example for technical reasons) + * These #defines are parsed by scripts. Do not stray from the given format. + * + * Where the evdev keycode is mapped to a different symbol, please add a + * comment line starting with Use: but otherwise the same format, e.g. + * Use: XF86XK_RotationLockToggle _EVDEVK(0x231) v4.16 KEY_ROTATE_LOCK_TOGGLE + * + */ +/* Use: XF86XK_Eject _EVDEVK(0x0A2) KEY_EJECTCLOSECD */ +/* Use: XF86XK_New _EVDEVK(0x0B5) v2.6.14 KEY_NEW */ +/* Use: XK_Redo _EVDEVK(0x0B6) v2.6.14 KEY_REDO */ +/* KEY_DASHBOARD has been mapped to LaunchB in xkeyboard-config since 2011 */ +/* Use: XF86XK_LaunchB _EVDEVK(0x0CC) v2.6.28 KEY_DASHBOARD */ +/* Use: XF86XK_Display _EVDEVK(0x0E3) v2.6.12 KEY_SWITCHVIDEOMODE */ +/* Use: XF86XK_KbdLightOnOff _EVDEVK(0x0E4) v2.6.12 KEY_KBDILLUMTOGGLE */ +/* Use: XF86XK_KbdBrightnessDown _EVDEVK(0x0E5) v2.6.12 KEY_KBDILLUMDOWN */ +/* Use: XF86XK_KbdBrightnessUp _EVDEVK(0x0E6) v2.6.12 KEY_KBDILLUMUP */ +/* Use: XF86XK_Send _EVDEVK(0x0E7) v2.6.14 KEY_SEND */ +/* Use: XF86XK_Reply _EVDEVK(0x0E8) v2.6.14 KEY_REPLY */ +/* Use: XF86XK_MailForward _EVDEVK(0x0E9) v2.6.14 KEY_FORWARDMAIL */ +/* Use: XF86XK_Save _EVDEVK(0x0EA) v2.6.14 KEY_SAVE */ +/* Use: XF86XK_Documents _EVDEVK(0x0EB) v2.6.14 KEY_DOCUMENTS */ +/* Use: XF86XK_Battery _EVDEVK(0x0EC) v2.6.17 KEY_BATTERY */ +/* Use: XF86XK_Bluetooth _EVDEVK(0x0ED) v2.6.19 KEY_BLUETOOTH */ +/* Use: XF86XK_WLAN _EVDEVK(0x0EE) v2.6.19 KEY_WLAN */ +/* Use: XF86XK_UWB _EVDEVK(0x0EF) v2.6.24 KEY_UWB */ +/* Use: XF86XK_Next_VMode _EVDEVK(0x0F1) v2.6.23 KEY_VIDEO_NEXT */ +/* Use: XF86XK_Prev_VMode _EVDEVK(0x0F2) v2.6.23 KEY_VIDEO_PREV */ +/* Use: XF86XK_MonBrightnessCycle _EVDEVK(0x0F3) v2.6.23 KEY_BRIGHTNESS_CYCLE */ +#define XKB_KEY_XF86BrightnessAuto 0x100810f4 /* v3.16 KEY_BRIGHTNESS_AUTO */ +#define XKB_KEY_XF86DisplayOff 0x100810f5 /* v2.6.23 KEY_DISPLAY_OFF */ +/* Use: XF86XK_WWAN _EVDEVK(0x0F6) v3.13 KEY_WWAN */ +/* Use: XF86XK_RFKill _EVDEVK(0x0F7) v2.6.33 KEY_RFKILL */ +/* Use: XF86XK_AudioMicMute _EVDEVK(0x0F8) v3.1 KEY_MICMUTE */ +#define XKB_KEY_XF86Info 0x10081166 /* KEY_INFO */ +/* Use: XF86XK_CycleAngle _EVDEVK(0x173) KEY_ANGLE */ +/* Use: XF86XK_FullScreen _EVDEVK(0x174) v5.1 KEY_FULL_SCREEN */ +#define XKB_KEY_XF86AspectRatio 0x10081177 /* v5.1 KEY_ASPECT_RATIO */ +#define XKB_KEY_XF86DVD 0x10081185 /* KEY_DVD */ +#define XKB_KEY_XF86Audio 0x10081188 /* KEY_AUDIO */ +/* Use: XF86XK_Video _EVDEVK(0x189) KEY_VIDEO */ +/* Use: XF86XK_Calendar _EVDEVK(0x18D) KEY_CALENDAR */ +#define XKB_KEY_XF86ChannelUp 0x10081192 /* KEY_CHANNELUP */ +#define XKB_KEY_XF86ChannelDown 0x10081193 /* KEY_CHANNELDOWN */ +/* Use: XF86XK_AudioRandomPlay _EVDEVK(0x19A) KEY_SHUFFLE */ +#define XKB_KEY_XF86Break 0x1008119b /* KEY_BREAK */ +#define XKB_KEY_XF86VideoPhone 0x100811a0 /* v2.6.20 KEY_VIDEOPHONE */ +/* Use: XF86XK_Game _EVDEVK(0x1A1) v2.6.20 KEY_GAMES */ +/* Use: XF86XK_ZoomIn _EVDEVK(0x1A2) v2.6.20 KEY_ZOOMIN */ +/* Use: XF86XK_ZoomOut _EVDEVK(0x1A3) v2.6.20 KEY_ZOOMOUT */ +#define XKB_KEY_XF86ZoomReset 0x100811a4 /* v2.6.20 KEY_ZOOMRESET */ +/* Use: XF86XK_Word _EVDEVK(0x1A5) v2.6.20 KEY_WORDPROCESSOR */ +#define XKB_KEY_XF86Editor 0x100811a6 /* v2.6.20 KEY_EDITOR */ +/* Use: XF86XK_Excel _EVDEVK(0x1A7) v2.6.20 KEY_SPREADSHEET */ +#define XKB_KEY_XF86GraphicsEditor 0x100811a8 /* v2.6.20 KEY_GRAPHICSEDITOR */ +#define XKB_KEY_XF86Presentation 0x100811a9 /* v2.6.20 KEY_PRESENTATION */ +#define XKB_KEY_XF86Database 0x100811aa /* v2.6.20 KEY_DATABASE */ +/* Use: XF86XK_News _EVDEVK(0x1AB) v2.6.20 KEY_NEWS */ +#define XKB_KEY_XF86Voicemail 0x100811ac /* v2.6.20 KEY_VOICEMAIL */ +#define XKB_KEY_XF86Addressbook 0x100811ad /* v2.6.20 KEY_ADDRESSBOOK */ +/* Use: XF86XK_Messenger _EVDEVK(0x1AE) v2.6.20 KEY_MESSENGER */ +#define XKB_KEY_XF86DisplayToggle 0x100811af /* v2.6.20 KEY_DISPLAYTOGGLE */ +#define XKB_KEY_XF86SpellCheck 0x100811b0 /* v2.6.24 KEY_SPELLCHECK */ +/* Use: XF86XK_LogOff _EVDEVK(0x1B1) v2.6.24 KEY_LOGOFF */ +/* Use: XK_dollar _EVDEVK(0x1B2) v2.6.24 KEY_DOLLAR */ +/* Use: XK_EuroSign _EVDEVK(0x1B3) v2.6.24 KEY_EURO */ +/* Use: XF86XK_FrameBack _EVDEVK(0x1B4) v2.6.24 KEY_FRAMEBACK */ +/* Use: XF86XK_FrameForward _EVDEVK(0x1B5) v2.6.24 KEY_FRAMEFORWARD */ +#define XKB_KEY_XF86ContextMenu 0x100811b6 /* v2.6.24 KEY_CONTEXT_MENU */ +#define XKB_KEY_XF86MediaRepeat 0x100811b7 /* v2.6.26 KEY_MEDIA_REPEAT */ +#define XKB_KEY_XF8610ChannelsUp 0x100811b8 /* v2.6.38 KEY_10CHANNELSUP */ +#define XKB_KEY_XF8610ChannelsDown 0x100811b9 /* v2.6.38 KEY_10CHANNELSDOWN */ +#define XKB_KEY_XF86Images 0x100811ba /* v2.6.39 KEY_IMAGES */ +#define XKB_KEY_XF86NotificationCenter 0x100811bc /* v5.10 KEY_NOTIFICATION_CENTER */ +#define XKB_KEY_XF86PickupPhone 0x100811bd /* v5.10 KEY_PICKUP_PHONE */ +#define XKB_KEY_XF86HangupPhone 0x100811be /* v5.10 KEY_HANGUP_PHONE */ +#define XKB_KEY_XF86Fn 0x100811d0 /* KEY_FN */ +#define XKB_KEY_XF86Fn_Esc 0x100811d1 /* KEY_FN_ESC */ +#define XKB_KEY_XF86FnRightShift 0x100811e5 /* v5.10 KEY_FN_RIGHT_SHIFT */ +/* Use: XK_braille_dot_1 _EVDEVK(0x1F1) v2.6.17 KEY_BRL_DOT1 */ +/* Use: XK_braille_dot_2 _EVDEVK(0x1F2) v2.6.17 KEY_BRL_DOT2 */ +/* Use: XK_braille_dot_3 _EVDEVK(0x1F3) v2.6.17 KEY_BRL_DOT3 */ +/* Use: XK_braille_dot_4 _EVDEVK(0x1F4) v2.6.17 KEY_BRL_DOT4 */ +/* Use: XK_braille_dot_5 _EVDEVK(0x1F5) v2.6.17 KEY_BRL_DOT5 */ +/* Use: XK_braille_dot_6 _EVDEVK(0x1F6) v2.6.17 KEY_BRL_DOT6 */ +/* Use: XK_braille_dot_7 _EVDEVK(0x1F7) v2.6.17 KEY_BRL_DOT7 */ +/* Use: XK_braille_dot_8 _EVDEVK(0x1F8) v2.6.17 KEY_BRL_DOT8 */ +/* Use: XK_braille_dot_9 _EVDEVK(0x1F9) v2.6.23 KEY_BRL_DOT9 */ +/* Use: XK_braille_dot_1 _EVDEVK(0x1FA) v2.6.23 KEY_BRL_DOT10 */ +#define XKB_KEY_XF86Numeric0 0x10081200 /* v2.6.28 KEY_NUMERIC_0 */ +#define XKB_KEY_XF86Numeric1 0x10081201 /* v2.6.28 KEY_NUMERIC_1 */ +#define XKB_KEY_XF86Numeric2 0x10081202 /* v2.6.28 KEY_NUMERIC_2 */ +#define XKB_KEY_XF86Numeric3 0x10081203 /* v2.6.28 KEY_NUMERIC_3 */ +#define XKB_KEY_XF86Numeric4 0x10081204 /* v2.6.28 KEY_NUMERIC_4 */ +#define XKB_KEY_XF86Numeric5 0x10081205 /* v2.6.28 KEY_NUMERIC_5 */ +#define XKB_KEY_XF86Numeric6 0x10081206 /* v2.6.28 KEY_NUMERIC_6 */ +#define XKB_KEY_XF86Numeric7 0x10081207 /* v2.6.28 KEY_NUMERIC_7 */ +#define XKB_KEY_XF86Numeric8 0x10081208 /* v2.6.28 KEY_NUMERIC_8 */ +#define XKB_KEY_XF86Numeric9 0x10081209 /* v2.6.28 KEY_NUMERIC_9 */ +#define XKB_KEY_XF86NumericStar 0x1008120a /* v2.6.28 KEY_NUMERIC_STAR */ +#define XKB_KEY_XF86NumericPound 0x1008120b /* v2.6.28 KEY_NUMERIC_POUND */ +#define XKB_KEY_XF86NumericA 0x1008120c /* v4.1 KEY_NUMERIC_A */ +#define XKB_KEY_XF86NumericB 0x1008120d /* v4.1 KEY_NUMERIC_B */ +#define XKB_KEY_XF86NumericC 0x1008120e /* v4.1 KEY_NUMERIC_C */ +#define XKB_KEY_XF86NumericD 0x1008120f /* v4.1 KEY_NUMERIC_D */ +#define XKB_KEY_XF86CameraFocus 0x10081210 /* v2.6.33 KEY_CAMERA_FOCUS */ +#define XKB_KEY_XF86WPSButton 0x10081211 /* v2.6.34 KEY_WPS_BUTTON */ +/* Use: XF86XK_TouchpadToggle _EVDEVK(0x212) v2.6.37 KEY_TOUCHPAD_TOGGLE */ +/* Use: XF86XK_TouchpadOn _EVDEVK(0x213) v2.6.37 KEY_TOUCHPAD_ON */ +/* Use: XF86XK_TouchpadOff _EVDEVK(0x214) v2.6.37 KEY_TOUCHPAD_OFF */ +#define XKB_KEY_XF86CameraZoomIn 0x10081215 /* v2.6.39 KEY_CAMERA_ZOOMIN */ +#define XKB_KEY_XF86CameraZoomOut 0x10081216 /* v2.6.39 KEY_CAMERA_ZOOMOUT */ +#define XKB_KEY_XF86CameraUp 0x10081217 /* v2.6.39 KEY_CAMERA_UP */ +#define XKB_KEY_XF86CameraDown 0x10081218 /* v2.6.39 KEY_CAMERA_DOWN */ +#define XKB_KEY_XF86CameraLeft 0x10081219 /* v2.6.39 KEY_CAMERA_LEFT */ +#define XKB_KEY_XF86CameraRight 0x1008121a /* v2.6.39 KEY_CAMERA_RIGHT */ +#define XKB_KEY_XF86AttendantOn 0x1008121b /* v3.10 KEY_ATTENDANT_ON */ +#define XKB_KEY_XF86AttendantOff 0x1008121c /* v3.10 KEY_ATTENDANT_OFF */ +#define XKB_KEY_XF86AttendantToggle 0x1008121d /* v3.10 KEY_ATTENDANT_TOGGLE */ +#define XKB_KEY_XF86LightsToggle 0x1008121e /* v3.10 KEY_LIGHTS_TOGGLE */ +#define XKB_KEY_XF86ALSToggle 0x10081230 /* v3.13 KEY_ALS_TOGGLE */ +/* Use: XF86XK_RotationLockToggle _EVDEVK(0x231) v4.16 KEY_ROTATE_LOCK_TOGGLE */ +#define XKB_KEY_XF86Buttonconfig 0x10081240 /* v3.16 KEY_BUTTONCONFIG */ +#define XKB_KEY_XF86Taskmanager 0x10081241 /* v3.16 KEY_TASKMANAGER */ +#define XKB_KEY_XF86Journal 0x10081242 /* v3.16 KEY_JOURNAL */ +#define XKB_KEY_XF86ControlPanel 0x10081243 /* v3.16 KEY_CONTROLPANEL */ +#define XKB_KEY_XF86AppSelect 0x10081244 /* v3.16 KEY_APPSELECT */ +#define XKB_KEY_XF86Screensaver 0x10081245 /* v3.16 KEY_SCREENSAVER */ +#define XKB_KEY_XF86VoiceCommand 0x10081246 /* v3.16 KEY_VOICECOMMAND */ +#define XKB_KEY_XF86Assistant 0x10081247 /* v4.13 KEY_ASSISTANT */ +/* Use: XK_ISO_Next_Group _EVDEVK(0x248) v5.2 KEY_KBD_LAYOUT_NEXT */ +#define XKB_KEY_XF86BrightnessMin 0x10081250 /* v3.16 KEY_BRIGHTNESS_MIN */ +#define XKB_KEY_XF86BrightnessMax 0x10081251 /* v3.16 KEY_BRIGHTNESS_MAX */ +#define XKB_KEY_XF86KbdInputAssistPrev 0x10081260 /* v3.18 KEY_KBDINPUTASSIST_PREV */ +#define XKB_KEY_XF86KbdInputAssistNext 0x10081261 /* v3.18 KEY_KBDINPUTASSIST_NEXT */ +#define XKB_KEY_XF86KbdInputAssistPrevgroup 0x10081262 /* v3.18 KEY_KBDINPUTASSIST_PREVGROUP */ +#define XKB_KEY_XF86KbdInputAssistNextgroup 0x10081263 /* v3.18 KEY_KBDINPUTASSIST_NEXTGROUP */ +#define XKB_KEY_XF86KbdInputAssistAccept 0x10081264 /* v3.18 KEY_KBDINPUTASSIST_ACCEPT */ +#define XKB_KEY_XF86KbdInputAssistCancel 0x10081265 /* v3.18 KEY_KBDINPUTASSIST_CANCEL */ +#define XKB_KEY_XF86RightUp 0x10081266 /* v4.7 KEY_RIGHT_UP */ +#define XKB_KEY_XF86RightDown 0x10081267 /* v4.7 KEY_RIGHT_DOWN */ +#define XKB_KEY_XF86LeftUp 0x10081268 /* v4.7 KEY_LEFT_UP */ +#define XKB_KEY_XF86LeftDown 0x10081269 /* v4.7 KEY_LEFT_DOWN */ +#define XKB_KEY_XF86RootMenu 0x1008126a /* v4.7 KEY_ROOT_MENU */ +#define XKB_KEY_XF86MediaTopMenu 0x1008126b /* v4.7 KEY_MEDIA_TOP_MENU */ +#define XKB_KEY_XF86Numeric11 0x1008126c /* v4.7 KEY_NUMERIC_11 */ +#define XKB_KEY_XF86Numeric12 0x1008126d /* v4.7 KEY_NUMERIC_12 */ +#define XKB_KEY_XF86AudioDesc 0x1008126e /* v4.7 KEY_AUDIO_DESC */ +#define XKB_KEY_XF863DMode 0x1008126f /* v4.7 KEY_3D_MODE */ +#define XKB_KEY_XF86NextFavorite 0x10081270 /* v4.7 KEY_NEXT_FAVORITE */ +#define XKB_KEY_XF86StopRecord 0x10081271 /* v4.7 KEY_STOP_RECORD */ +#define XKB_KEY_XF86PauseRecord 0x10081272 /* v4.7 KEY_PAUSE_RECORD */ +#define XKB_KEY_XF86VOD 0x10081273 /* v4.7 KEY_VOD */ +#define XKB_KEY_XF86Unmute 0x10081274 /* v4.7 KEY_UNMUTE */ +#define XKB_KEY_XF86FastReverse 0x10081275 /* v4.7 KEY_FASTREVERSE */ +#define XKB_KEY_XF86SlowReverse 0x10081276 /* v4.7 KEY_SLOWREVERSE */ +#define XKB_KEY_XF86Data 0x10081277 /* v4.7 KEY_DATA */ +#define XKB_KEY_XF86OnScreenKeyboard 0x10081278 /* v4.12 KEY_ONSCREEN_KEYBOARD */ +#define XKB_KEY_XF86PrivacyScreenToggle 0x10081279 /* v5.5 KEY_PRIVACY_SCREEN_TOGGLE */ +#define XKB_KEY_XF86SelectiveScreenshot 0x1008127a /* v5.6 KEY_SELECTIVE_SCREENSHOT */ +#define XKB_KEY_XF86Macro1 0x10081290 /* v5.5 KEY_MACRO1 */ +#define XKB_KEY_XF86Macro2 0x10081291 /* v5.5 KEY_MACRO2 */ +#define XKB_KEY_XF86Macro3 0x10081292 /* v5.5 KEY_MACRO3 */ +#define XKB_KEY_XF86Macro4 0x10081293 /* v5.5 KEY_MACRO4 */ +#define XKB_KEY_XF86Macro5 0x10081294 /* v5.5 KEY_MACRO5 */ +#define XKB_KEY_XF86Macro6 0x10081295 /* v5.5 KEY_MACRO6 */ +#define XKB_KEY_XF86Macro7 0x10081296 /* v5.5 KEY_MACRO7 */ +#define XKB_KEY_XF86Macro8 0x10081297 /* v5.5 KEY_MACRO8 */ +#define XKB_KEY_XF86Macro9 0x10081298 /* v5.5 KEY_MACRO9 */ +#define XKB_KEY_XF86Macro10 0x10081299 /* v5.5 KEY_MACRO10 */ +#define XKB_KEY_XF86Macro11 0x1008129a /* v5.5 KEY_MACRO11 */ +#define XKB_KEY_XF86Macro12 0x1008129b /* v5.5 KEY_MACRO12 */ +#define XKB_KEY_XF86Macro13 0x1008129c /* v5.5 KEY_MACRO13 */ +#define XKB_KEY_XF86Macro14 0x1008129d /* v5.5 KEY_MACRO14 */ +#define XKB_KEY_XF86Macro15 0x1008129e /* v5.5 KEY_MACRO15 */ +#define XKB_KEY_XF86Macro16 0x1008129f /* v5.5 KEY_MACRO16 */ +#define XKB_KEY_XF86Macro17 0x100812a0 /* v5.5 KEY_MACRO17 */ +#define XKB_KEY_XF86Macro18 0x100812a1 /* v5.5 KEY_MACRO18 */ +#define XKB_KEY_XF86Macro19 0x100812a2 /* v5.5 KEY_MACRO19 */ +#define XKB_KEY_XF86Macro20 0x100812a3 /* v5.5 KEY_MACRO20 */ +#define XKB_KEY_XF86Macro21 0x100812a4 /* v5.5 KEY_MACRO21 */ +#define XKB_KEY_XF86Macro22 0x100812a5 /* v5.5 KEY_MACRO22 */ +#define XKB_KEY_XF86Macro23 0x100812a6 /* v5.5 KEY_MACRO23 */ +#define XKB_KEY_XF86Macro24 0x100812a7 /* v5.5 KEY_MACRO24 */ +#define XKB_KEY_XF86Macro25 0x100812a8 /* v5.5 KEY_MACRO25 */ +#define XKB_KEY_XF86Macro26 0x100812a9 /* v5.5 KEY_MACRO26 */ +#define XKB_KEY_XF86Macro27 0x100812aa /* v5.5 KEY_MACRO27 */ +#define XKB_KEY_XF86Macro28 0x100812ab /* v5.5 KEY_MACRO28 */ +#define XKB_KEY_XF86Macro29 0x100812ac /* v5.5 KEY_MACRO29 */ +#define XKB_KEY_XF86Macro30 0x100812ad /* v5.5 KEY_MACRO30 */ +#define XKB_KEY_XF86MacroRecordStart 0x100812b0 /* v5.5 KEY_MACRO_RECORD_START */ +#define XKB_KEY_XF86MacroRecordStop 0x100812b1 /* v5.5 KEY_MACRO_RECORD_STOP */ +#define XKB_KEY_XF86MacroPresetCycle 0x100812b2 /* v5.5 KEY_MACRO_PRESET_CYCLE */ +#define XKB_KEY_XF86MacroPreset1 0x100812b3 /* v5.5 KEY_MACRO_PRESET1 */ +#define XKB_KEY_XF86MacroPreset2 0x100812b4 /* v5.5 KEY_MACRO_PRESET2 */ +#define XKB_KEY_XF86MacroPreset3 0x100812b5 /* v5.5 KEY_MACRO_PRESET3 */ +#define XKB_KEY_XF86KbdLcdMenu1 0x100812b8 /* v5.5 KEY_KBD_LCD_MENU1 */ +#define XKB_KEY_XF86KbdLcdMenu2 0x100812b9 /* v5.5 KEY_KBD_LCD_MENU2 */ +#define XKB_KEY_XF86KbdLcdMenu3 0x100812ba /* v5.5 KEY_KBD_LCD_MENU3 */ +#define XKB_KEY_XF86KbdLcdMenu4 0x100812bb /* v5.5 KEY_KBD_LCD_MENU4 */ +#define XKB_KEY_XF86KbdLcdMenu5 0x100812bc /* v5.5 KEY_KBD_LCD_MENU5 */ +#undef _EVDEVK /* * Copyright (c) 1991, Oracle and/or its affiliates. All rights reserved. * @@ -2897,7 +3136,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD -TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +TO THIS SOFTWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Hewlett-Packard shall not be liable for errors contained herein or direct, indirect, special, incidental or diff --git a/xkbcommon/xkbcommon-names.h b/include/xkbcommon/xkbcommon-names.h index ecb551f..ecb551f 100644 --- a/xkbcommon/xkbcommon-names.h +++ b/include/xkbcommon/xkbcommon-names.h diff --git a/xkbcommon/xkbcommon-x11.h b/include/xkbcommon/xkbcommon-x11.h index 4eb716a..4eb716a 100644 --- a/xkbcommon/xkbcommon-x11.h +++ b/include/xkbcommon/xkbcommon-x11.h diff --git a/xkbcommon/xkbcommon.h b/include/xkbcommon/xkbcommon.h index ee7143c..f52dcfa 100644 --- a/xkbcommon/xkbcommon.h +++ b/include/xkbcommon/xkbcommon.h @@ -355,6 +355,9 @@ struct xkb_rule_names { * A comma separated list of variants, one per layout, which may * modify or augment the respective layout in various ways. * + * Generally, should either be empty or have the same number of values + * as the number of layouts. You may use empty values as in "intl,,neo". + * * If NULL or the empty string "", and a default value is also used * for the layout, a default value is used. Otherwise no variant is * used. @@ -562,7 +565,7 @@ xkb_keysym_to_lower(xkb_keysym_t ks); * * The user may set some environment variables which affect the library: * - * - `XKB_CONFIG_ROOT`, `XKB_EXTRA_PATH`, `XDG_CONFIG_DIR`, `HOME` - see @ref include-path. + * - `XKB_CONFIG_ROOT`, `XKB_CONFIG_EXTRA_PATH`, `XDG_CONFIG_DIR`, `HOME` - see @ref include-path. * - `XKB_LOG_LEVEL` - see xkb_context_set_log_level(). * - `XKB_LOG_VERBOSITY` - see xkb_context_set_log_verbosity(). * - `XKB_DEFAULT_RULES`, `XKB_DEFAULT_MODEL`, `XKB_DEFAULT_LAYOUT`, @@ -653,7 +656,7 @@ xkb_context_get_user_data(struct xkb_context *context); * fallback to `$HOME/.config/` if unset. * - The path `$HOME/.xkb`, where $HOME is the value of the environment * variable `HOME`. - * - The `XKB_EXTRA_PATH` environment variable, if defined, otherwise the + * - The `XKB_CONFIG_EXTRA_PATH` environment variable, if defined, otherwise the * system configuration directory, defined at library configuration time * (usually `/etc/xkb`). * - The `XKB_CONFIG_ROOT` environment variable, if defined, otherwise diff --git a/xkbcommon/xkbregistry.h b/include/xkbcommon/xkbregistry.h index 4e7e926..4e7e926 100644 --- a/xkbcommon/xkbregistry.h +++ b/include/xkbcommon/xkbregistry.h diff --git a/meson.build b/meson.build index 47c436f..fb77185 100644 --- a/meson.build +++ b/meson.build @@ -1,9 +1,9 @@ project( 'libxkbcommon', 'c', - version: '1.0.3', + version: '1.4.0', default_options: [ - 'c_std=c99', + 'c_std=c11', 'warning_level=2', 'b_lundef=true', ], @@ -49,7 +49,7 @@ endif XKBCONFIGEXTRAPATH = get_option('xkb-config-extra-path') if XKBCONFIGEXTRAPATH == '' - XKBCONFIGEXTRAPATH = join_paths(get_option('prefix'), get_option('sysconfdir'), 'xkb') + XKBCONFIGEXTRAPATH = get_option('prefix')/get_option('sysconfdir')/'xkb' endif # The X locale directory for compose. @@ -125,8 +125,6 @@ elif cc.has_header_symbol('stdlib.h', '__secure_getenv', prefix: system_ext_defi else message('C library does not support secure_getenv, using getenv instead') endif -have_getopt_long = cc.has_header_symbol('getopt.h', 'getopt_long', - prefix: '#define _GNU_SOURCE') if not cc.has_header_symbol('limits.h', 'PATH_MAX', prefix: system_ext_define) if host_machine.system() == 'windows' # see https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation @@ -152,6 +150,7 @@ have_version_script = cc.links( name: '-Wl,--version-script', ) +map_to_def = find_program('scripts/map-to-def') # libxkbcommon. # Note: we use some yacc extensions, which work with either GNU bison @@ -231,30 +230,42 @@ libxkbcommon_sources = [ 'src/utils.h', ] libxkbcommon_link_args = [] +libxkbcommon_link_deps = [] if have_version_script libxkbcommon_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon.map' + libxkbcommon_link_deps += 'xkbcommon.map' +elif cc.get_argument_syntax() == 'msvc' + libxkbcommon_def = custom_target('xkbcommon.def', + command: [map_to_def, '@INPUT@', '@OUTPUT@'], + input: 'xkbcommon.map', + output: 'kxbcommon.def', + ) + libxkbcommon_link_deps += libxkbcommon_def + libxkbcommon_link_args += '/DEF:' + libxkbcommon_def.full_path() endif libxkbcommon = library( 'xkbcommon', - 'xkbcommon/xkbcommon.h', + 'include/xkbcommon/xkbcommon.h', libxkbcommon_sources, link_args: libxkbcommon_link_args, - link_depends: 'xkbcommon.map', + link_depends: libxkbcommon_link_deps, gnu_symbol_visibility: 'hidden', version: '0.0.0', install: true, - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), ) install_headers( - 'xkbcommon/xkbcommon.h', - 'xkbcommon/xkbcommon-compat.h', - 'xkbcommon/xkbcommon-compose.h', - 'xkbcommon/xkbcommon-keysyms.h', - 'xkbcommon/xkbcommon-names.h', + 'include/xkbcommon/xkbcommon.h', + 'include/xkbcommon/xkbcommon-compat.h', + 'include/xkbcommon/xkbcommon-compose.h', + 'include/xkbcommon/xkbcommon-keysyms.h', + 'include/xkbcommon/xkbcommon-names.h', subdir: 'xkbcommon', ) -libxkbcommon_dep = declare_dependency( + +dep_libxkbcommon = declare_dependency( link_with: libxkbcommon, + include_directories: include_directories('include'), ) pkgconfig.generate( libxkbcommon, @@ -287,19 +298,29 @@ You can disable X11 support with -Denable-x11=false.''') 'src/atom.c', ] libxkbcommon_x11_link_args = [] + libxkbcommon_x11_link_deps = [] if have_version_script libxkbcommon_x11_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon-x11.map' + libxkbcommon_x11_link_deps += 'xkbcommon-x11.map' + elif cc.get_argument_syntax() == 'msvc' + libxkbcommon_x11_def = custom_target('xkbcommon-x11.def', + command: [map_to_def, '@INPUT@', '@OUTPUT@'], + input: 'xkbcommon-x11.map', + output: 'xkbcommon-x11.def', + ) + libxkbcommon_x11_link_deps += libxkbcommon_x11_def + libxkbcommon_x11_link_args += '/DEF:' + libxkbcommon_x11_def.full_path() endif libxkbcommon_x11 = library( 'xkbcommon-x11', - 'xkbcommon/xkbcommon-x11.h', + 'include/xkbcommon/xkbcommon-x11.h', libxkbcommon_x11_sources, link_args: libxkbcommon_x11_link_args, - link_depends: 'xkbcommon-x11.map', + link_depends: libxkbcommon_x11_link_deps, gnu_symbol_visibility: 'hidden', version: '0.0.0', install: true, - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), link_with: libxkbcommon, dependencies: [ xcb_dep, @@ -307,11 +328,12 @@ You can disable X11 support with -Denable-x11=false.''') ], ) install_headers( - 'xkbcommon/xkbcommon-x11.h', + 'include/xkbcommon/xkbcommon-x11.h', subdir: 'xkbcommon', ) - libxkbcommon_x11_dep = declare_dependency( + dep_libxkbcommon_x11 = declare_dependency( link_with: libxkbcommon_x11, + include_directories: include_directories('include'), ) pkgconfig.generate( libxkbcommon_x11, @@ -336,23 +358,33 @@ if get_option('enable-xkbregistry') 'src/util-list.c', ] libxkbregistry_link_args = [] + libxkbregistry_link_deps = [] if have_version_script libxkbregistry_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbregistry.map' + libxkbregistry_link_deps += 'xkbregistry.map' + elif cc.get_argument_syntax() == 'msvc' + libxkbregistry_def = custom_target('xkbregistry.def', + command: [map_to_def, '@INPUT@', '@OUTPUT@'], + input: 'xkbregistry.map', + output: 'xkbregistry.def', + ) + libxkbregistry_link_deps += libxkbregistry_def + libxkbregistry_link_args += '/DEF:' + libxkbregistry_def.full_path() endif libxkbregistry = library( 'xkbregistry', - 'xkbcommon/xkbregistry.h', + 'include/xkbcommon/xkbregistry.h', libxkbregistry_sources, link_args: libxkbregistry_link_args, - link_depends: 'xkbregistry.map', + link_depends: libxkbregistry_link_deps, gnu_symbol_visibility: 'hidden', dependencies: deps_libxkbregistry, version: '0.0.0', install: true, - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), ) install_headers( - 'xkbcommon/xkbregistry.h', + 'include/xkbcommon/xkbregistry.h', subdir: 'xkbcommon', ) pkgconfig.generate( @@ -364,24 +396,24 @@ if get_option('enable-xkbregistry') ) dep_libxkbregistry = declare_dependency( - include_directories: include_directories('xkbcommon'), - link_with: libxkbregistry - ) + link_with: libxkbregistry, + include_directories: include_directories('include'), + ) endif man_pages = [] # Tools -build_tools = have_getopt_long +build_tools = get_option('enable-tools') and cc.has_header_symbol('getopt.h', 'getopt_long', prefix: '#define _GNU_SOURCE') if build_tools libxkbcommon_tools_internal = static_library( 'tools-internal', 'tools/tools-common.h', 'tools/tools-common.c', - dependencies: libxkbcommon_dep, + dependencies: dep_libxkbcommon, ) tools_dep = declare_dependency( - include_directories: [include_directories('tools')], + include_directories: [include_directories('tools', 'include')], link_with: libxkbcommon_tools_internal, ) @@ -389,11 +421,11 @@ if build_tools dependencies: tools_dep, install: true) install_man('tools/xkbcli.1') - executable('xkbcli-compile-keymap', - 'tools/compile-keymap.c', - dependencies: tools_dep, - install: true, - install_dir: dir_libexec) + xkbcli_compile_keymap = executable('xkbcli-compile-keymap', + 'tools/compile-keymap.c', + dependencies: tools_dep, + install: true, + install_dir: dir_libexec) install_man('tools/xkbcli-compile-keymap.1') # The same tool again, but with access to some private APIs. executable('compile-keymap', @@ -401,7 +433,12 @@ if build_tools libxkbcommon_sources, dependencies: [tools_dep], c_args: ['-DENABLE_PRIVATE_APIS'], - include_directories: [include_directories('src')], + include_directories: [include_directories('src', 'include')], + install: false) + executable('compose', + 'tools/compose.c', + dependencies: tools_dep, + include_directories: [include_directories('src', 'include')], install: false) configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true) executable('xkbcli-how-to-type', @@ -518,17 +555,17 @@ libxkbcommon_test_internal = static_library( 'bench/bench.c', 'bench/bench.h', libxkbcommon_sources, - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), ) test_dep = declare_dependency( - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), link_with: libxkbcommon_test_internal, ) if get_option('enable-x11') libxkbcommon_x11_internal = static_library( 'xkbcommon-x11-internal', libxkbcommon_x11_sources, - include_directories: include_directories('src'), + include_directories: include_directories('src', 'include'), link_with: libxkbcommon_test_internal, dependencies: [ xcb_dep, @@ -657,6 +694,22 @@ if build_tools find_program('test/tool-option-parsing.py'), env: test_env, suite: ['python-tests']) + + # A set of keysyms to test for. Add one or two symbols to this array + # whenever the xorgproto gets updated to make sure we resolve them. + keysyms_to_test = [ + 'XF86Macro23', + ] + + env = environment() + env.set('XKB_CONFIG_ROOT', meson.source_root()/'test'/'data') + foreach keysym: keysyms_to_test + test('keysym-test-@0@'.format(keysym), + find_program('test/test-keysym.py'), + env: env, + args: [keysym, '--tool', xkbcli_compile_keymap], + suite: ['python-tests']) + endforeach endif valgrind = find_program('valgrind', required: false) @@ -701,6 +754,11 @@ benchmark( executable('bench-compose', 'bench/compose.c', dependencies: test_dep), env: bench_env, ) +benchmark( + 'atom', + executable('bench-atom', 'bench/atom.c', dependencies: test_dep), + env: bench_env, +) if get_option('enable-x11') benchmark( 'x11', @@ -726,11 +784,12 @@ You can disable the documentation with -Denable-docs=false.''') 'doc/compat.md', 'doc/user-configuration.md', 'doc/rules-format.md', - 'xkbcommon/xkbcommon.h', - 'xkbcommon/xkbcommon-names.h', - 'xkbcommon/xkbcommon-x11.h', - 'xkbcommon/xkbcommon-compose.h', - 'xkbcommon/xkbregistry.h', + 'doc/keymap-format-text-v1.md', + 'include/xkbcommon/xkbcommon.h', + 'include/xkbcommon/xkbcommon-names.h', + 'include/xkbcommon/xkbcommon-x11.h', + 'include/xkbcommon/xkbcommon-compose.h', + 'include/xkbcommon/xkbregistry.h', ] doxygen_data = configuration_data() doxygen_data.set('PACKAGE_NAME', meson.project_name()) @@ -756,3 +815,14 @@ You can disable the documentation with -Denable-docs=false.''') endif configure_file(output: 'config.h', configuration: configh_data) + + +# Stable variables for projects using xkbcommon as a subproject. +# These variables should not be renamed. +libxkbcommon_dep = dep_libxkbcommon +if get_option('enable-x11') + libxkbcommon_x11_dep = dep_libxkbcommon_x11 +endif +if get_option('enable-xkbregistry') + libxkbregistry_dep = dep_libxkbregistry +endif diff --git a/meson_options.txt b/meson_options.txt index 04982c6..69850b8 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -44,6 +44,12 @@ option( description: 'Default XKB options', ) option( + 'enable-tools', + type: 'boolean', + value: true, + description: 'Enable building tools', +) +option( 'enable-x11', type: 'boolean', value: true, @@ -59,7 +65,7 @@ option( 'enable-wayland', type: 'boolean', value: true, - description: 'Enable support for Wayland utility programs', + description: 'Enable support for Wayland utility programs (requires enable-tools)', ) option( 'enable-xkbregistry', diff --git a/scripts/makeheader b/scripts/makeheader index 600b565..52d1375 100755 --- a/scripts/makeheader +++ b/scripts/makeheader @@ -3,6 +3,9 @@ from __future__ import print_function import re import os +# expected format: +# #define XF86XK_FooBar _EVDEVK(0x123) /* some optional comment */ +evdev_pattern = re.compile(r'^#define\s+XF86XK_(?P<name>\w+)\s+_EVDEVK\((?P<value>0x[0-9A-Fa-f]+)\)') prefix = os.environ.get('X11_HEADERS_PREFIX', '/usr') HEADERS = [ @@ -35,6 +38,14 @@ for path in HEADERS: if 'XK_Ydiaeresis' in line and '0x100000ee' in line: continue + # Replace the xorgproto _EVDEVK macro with the actual value + # 0x10081000 is the base, the evdev hex code is added to that. + # We replace to make parsing of the keys later easier. + match = re.match(evdev_pattern, line) + if match: + value = 0x10081000 + int(match.group('value'), 16) + line = re.sub(r'_EVDEVK\(0x([0-9A-Fa-f]+)\)', '{:#x}'.format(value), line) + line = re.sub(r'#define\s*(\w*)XK_', r'#define XKB_KEY_\1', line) print(line, end='') diff --git a/scripts/makekeys b/scripts/makekeys index f6a0280..fe30067 100755 --- a/scripts/makekeys +++ b/scripts/makekeys @@ -2,10 +2,15 @@ import re, sys, itertools +import perfect_hash + pattern = re.compile(r'^#define\s+XKB_KEY_(?P<name>\w+)\s+(?P<value>0x[0-9a-fA-F]+)\s') matches = [pattern.match(line) for line in open(sys.argv[1])] entries = [(m.group("name"), int(m.group("value"), 16)) for m in matches if m] +entries_isorted = sorted(entries, key=lambda e: e[0].lower()) +entries_kssorted = sorted(entries, key=lambda e: e[1]) + print(''' /** * This file comes from libxkbcommon and was generated by makekeys.py @@ -24,7 +29,7 @@ print(''' static const char *keysym_names = '''.strip()) offs = 0 -for (name, _) in sorted(entries, key=lambda e: e[0].lower()): +for (name, _) in entries_isorted: entry_offsets[name] = offs print(' "{name}\\0"'.format(name=name)) offs += len(name) + 1 @@ -35,6 +40,35 @@ print(''' #endif '''.strip()) + +template = r''' +static const uint16_t keysym_name_G[] = { + $G +}; + +static size_t +keysym_name_hash_f(const char *key, const char *T) +{ + size_t sum = 0; + for (size_t i = 0; key[i] != '\0'; i++) + sum += T[i % $NS] * key[i]; + return sum % $NG; +} + +static size_t +keysym_name_perfect_hash(const char *key) +{ + return ( + keysym_name_G[keysym_name_hash_f(key, "$S1")] + + keysym_name_G[keysym_name_hash_f(key, "$S2")] + ) % $NG; +} +''' +print(perfect_hash.generate_code( + keys=[name for name, value in entries_isorted], + template=template, +)) + print(''' struct name_keysym { xkb_keysym_t keysym; @@ -46,10 +80,10 @@ def print_entries(x): print(' {{ 0x{value:08x}, {offs} }}, /* {name} */'.format(offs=entry_offsets[name], value=value, name=name)) print('static const struct name_keysym name_to_keysym[] = {') -print_entries(sorted(entries, key=lambda e: e[0].lower())) +print_entries(entries_isorted) print('};\n') # *.sort() is stable so we always get the first keysym for duplicate print('static const struct name_keysym keysym_to_name[] = {') -print_entries(next(g[1]) for g in itertools.groupby(sorted(entries, key=lambda e: e[1]), key=lambda e: e[1])) +print_entries(next(g[1]) for g in itertools.groupby(entries_kssorted, key=lambda e: e[1])) print('};') diff --git a/scripts/map-to-def b/scripts/map-to-def new file mode 100755 index 0000000..63b566e --- /dev/null +++ b/scripts/map-to-def @@ -0,0 +1,30 @@ +#!/usr/bin/env python + +"""A script to generate MSVC Module-Definition files from version-script +files (which are maintained manually).""" + +import re +import sys +import pathlib + + +def symbols_from_map(path): + return re.findall(r'^\s+(r?xkb_.*);', path.read_text('utf-8'), re.MULTILINE) + + +if 2 > len(sys.argv) > 3: + raise SystemExit("Usage: {} file.map [file.def]".format(sys.argv[0])) + + +map_file = pathlib.Path(sys.argv[1]) +map_symbols = set(symbols_from_map(map_file)) + +if len(sys.argv) == 3: + def_file = open(sys.argv[2], "w", encoding="utf-8") +else: + def_file = sys.stdout + +def_file.write("LIBRARY {}\n".format(map_file.stem)) +def_file.write("EXPORTS\n") +for symbol in sorted(map_symbols): + def_file.write("\t{}\n".format(symbol)) diff --git a/scripts/meson-junit-report.py b/scripts/meson-junit-report.py deleted file mode 100644 index a6cbb0b..0000000 --- a/scripts/meson-junit-report.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import json -import sys -import unicodedata -import xml.etree.ElementTree as ET -from datetime import datetime - - -aparser = argparse.ArgumentParser( - description='Convert Meson test log into JUnit report') -aparser.add_argument('--project-name', metavar='NAME', - help='The project name', - default='unknown') -aparser.add_argument('--job-id', metavar='ID', - help='The job ID for the report', - default='Unknown') -aparser.add_argument('--branch', metavar='NAME', - help='Branch of the project being tested', - default='master') -aparser.add_argument('--output', metavar='FILE', - help='The output file, stdout by default', - type=argparse.FileType('w', encoding='UTF-8'), - default=sys.stdout) -aparser.add_argument('infile', metavar='FILE', - help='The input testlog.json, stdin by default', - type=argparse.FileType('r', encoding='UTF-8'), - default=sys.stdin) -args = aparser.parse_args() - -outfile = args.output - -testsuites = ET.Element('testsuites') -testsuites.set('id', '{}/{}'.format(args.job_id, args.branch)) -testsuites.set('package', args.project_name) -testsuites.set('timestamp', datetime.utcnow().isoformat(timespec='minutes')) - -testsuite = ET.SubElement(testsuites, 'testsuite') -testsuite.set('name', args.project_name) - -successes = 0 -failures = 0 -skips = 0 - - -def escape_control_chars(text): - return "".join(c if unicodedata.category(c)[0] != "C" else - "<{:02x}>".format(ord(c)) for c in text) - - -for line in args.infile: - unit = json.loads(line) - - testcase = ET.SubElement(testsuite, 'testcase') - testcase.set('classname', '{}/{}'.format(args.project_name, unit['name'])) - testcase.set('name', unit['name']) - testcase.set('time', str(unit['duration'])) - - stdout = escape_control_chars(unit.get('stdout', '')) - stderr = escape_control_chars(unit.get('stderr', '')) - if stdout: - ET.SubElement(testcase, 'system-out').text = stdout - if stderr: - ET.SubElement(testcase, 'system-out').text = stderr - - result = unit['result'].lower() - if result == 'skip': - skips += 1 - ET.SubElement(testcase, 'skipped') - elif result == 'fail': - failures += 1 - failure = ET.SubElement(testcase, 'failure') - failure.set('message', "{} failed".format(unit['name'])) - failure.text = "### stdout\n{}\n### stderr\n{}\n".format(stdout, - stderr) - else: - successes += 1 - assert unit['returncode'] == 0 - -testsuite.set('tests', str(successes + failures + skips)) -testsuite.set('skipped', str(skips)) -testsuite.set('errors', str(failures)) -testsuite.set('failures', str(failures)) - -print('{}: {} pass, {} fail, {} skip'.format(args.project_name, - successes, - failures, - skips)) - -output = ET.tostring(testsuites, encoding='unicode') -outfile.write(output) diff --git a/scripts/perfect_hash.py b/scripts/perfect_hash.py new file mode 100644 index 0000000..95c6156 --- /dev/null +++ b/scripts/perfect_hash.py @@ -0,0 +1,674 @@ +# Derived from: https://github.com/ilanschnell/perfect-hash +# Commit: 6b7dd80a525dbd4349ea2c69f04a9c96f3c2fd54 + +# BSD 3-Clause License +# +# Copyright (c) 2019 - 2021, Ilan Schnell +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the Ilan Schnell nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ILAN SCHNELL BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +Generate a minimal perfect hash function for the keys in a file, +desired hash values may be specified within this file as well. +A given code template is filled with parameters, such that the +output is code which implements the hash function. +Templates can easily be constructed for any programming language. + +The code is based on an a program A.M. Kuchling wrote: +http://www.amk.ca/python/code/perfect-hash + +The algorithm the program uses is described in the paper +'Optimal algorithms for minimal perfect hashing', +Z. J. Czech, G. Havas and B.S. Majewski. +http://citeseer.ist.psu.edu/122364.html + +The algorithm works like this: + +1. You have K keys, that you want to perfectly hash against some + desired hash values. + +2. Choose a number N larger than K. This is the number of + vertices in a graph G, and also the size of the resulting table G. + +3. Pick two random hash functions f1, f2, that return values from 0..N-1. + +4. Now, for all keys, you draw an edge between vertices f1(key) and f2(key) + of the graph G, and associate the desired hash value with that edge. + +5. If G is cyclic, go back to step 2. + +6. Assign values to each vertex such that, for each edge, you can add + the values for the two vertices and get the desired (hash) value + for that edge. This task is easy, because the graph is acyclic. + This is done by picking a vertex, and assigning it a value of 0. + Then do a depth-first search, assigning values to new vertices so that + they sum up properly. + +7. f1, f2, and vertex values of G now make up a perfect hash function. + + +For simplicity, the implementation of the algorithm combines steps 5 and 6. +That is, we check for loops in G and assign the vertex values in one procedure. +If this procedure succeeds, G is acyclic and the vertex values are assigned. +If the procedure fails, G is cyclic, and we go back to step 2, replacing G +with a new graph, and thereby discarding the vertex values from the failed +attempt. +""" +from __future__ import absolute_import, division, print_function + +import sys +import random +import string +import subprocess +import shutil +import tempfile +from collections import defaultdict +from os.path import join + +if sys.version_info[0] == 2: + from cStringIO import StringIO +else: + from io import StringIO + + +__version__ = '0.4.2' + + +verbose = False +trials = 150 + + +class Graph(object): + """ + Implements a graph with 'N' vertices. First, you connect the graph with + edges, which have a desired value associated. Then the vertex values + are assigned, which will fail if the graph is cyclic. The vertex values + are assigned such that the two values corresponding to an edge add up to + the desired edge value (mod N). + """ + def __init__(self, N): + self.N = N # number of vertices + + # maps a vertex number to the list of tuples (vertex, edge value) + # to which it is connected by edges. + self.adjacent = defaultdict(list) + + def connect(self, vertex1, vertex2, edge_value): + """ + Connect 'vertex1' and 'vertex2' with an edge, with associated + value 'value' + """ + # Add vertices to each other's adjacent list + self.adjacent[vertex1].append((vertex2, edge_value)) + self.adjacent[vertex2].append((vertex1, edge_value)) + + def assign_vertex_values(self): + """ + Try to assign the vertex values, such that, for each edge, you can + add the values for the two vertices involved and get the desired + value for that edge, i.e. the desired hash key. + This will fail when the graph is cyclic. + + This is done by a Depth-First Search of the graph. If the search + finds a vertex that was visited before, there's a loop and False is + returned immediately, i.e. the assignment is terminated. + On success (when the graph is acyclic) True is returned. + """ + self.vertex_values = self.N * [-1] # -1 means unassigned + + visited = self.N * [False] + + # Loop over all vertices, taking unvisited ones as roots. + for root in range(self.N): + if visited[root]: + continue + + # explore tree starting at 'root' + self.vertex_values[root] = 0 # set arbitrarily to zero + + # Stack of vertices to visit, a list of tuples (parent, vertex) + tovisit = [(None, root)] + while tovisit: + parent, vertex = tovisit.pop() + visited[vertex] = True + + # Loop over adjacent vertices, but skip the vertex we arrived + # here from the first time it is encountered. + skip = True + for neighbor, edge_value in self.adjacent[vertex]: + if skip and neighbor == parent: + skip = False + continue + + if visited[neighbor]: + # We visited here before, so the graph is cyclic. + return False + + tovisit.append((vertex, neighbor)) + + # Set new vertex's value to the desired edge value, + # minus the value of the vertex we came here from. + self.vertex_values[neighbor] = ( + edge_value - self.vertex_values[vertex]) % self.N + + # check if all vertices have a valid value + for vertex in range(self.N): + assert self.vertex_values[vertex] >= 0 + + # We got though, so the graph is acyclic, + # and all values are now assigned. + return True + + +class StrSaltHash(object): + """ + Random hash function generator. + Simple byte level hashing: each byte is multiplied to another byte from + a random string of characters, summed up, and finally modulo NG is + taken. + """ + chars = string.ascii_letters + string.digits + + def __init__(self, N): + self.N = N + self.salt = '' + + def __call__(self, key): + # XXX: xkbcommon modification: make the salt length a power of 2 + # so that the % operation in the hash is fast. + while len(self.salt) < max(len(key), 32): # add more salt as necessary + self.salt += random.choice(self.chars) + + return sum(ord(self.salt[i]) * ord(c) + for i, c in enumerate(key)) % self.N + + template = """ +def hash_f(key, T): + return sum(ord(T[i % $NS]) * ord(c) for i, c in enumerate(key)) % $NG + +def perfect_hash(key): + return (G[hash_f(key, "$S1")] + + G[hash_f(key, "$S2")]) % $NG +""" + +class IntSaltHash(object): + """ + Random hash function generator. + Simple byte level hashing, each byte is multiplied in sequence to a table + containing random numbers, summed tp, and finally modulo NG is taken. + """ + def __init__(self, N): + self.N = N + self.salt = [] + + def __call__(self, key): + while len(self.salt) < len(key): # add more salt as necessary + self.salt.append(random.randint(1, self.N - 1)) + + return sum(self.salt[i] * ord(c) + for i, c in enumerate(key)) % self.N + + template = """ +S1 = [$S1] +S2 = [$S2] +assert len(S1) == len(S2) == $NS + +def hash_f(key, T): + return sum(T[i % $NS] * ord(c) for i, c in enumerate(key)) % $NG + +def perfect_hash(key): + return (G[hash_f(key, S1)] + G[hash_f(key, S2)]) % $NG +""" + +def builtin_template(Hash): + return """\ +# ======================================================================= +# ================= Python code for perfect hash function =============== +# ======================================================================= + +G = [$G] +""" + Hash.template + """ +# ============================ Sanity check ============================= + +K = [$K] +assert len(K) == $NK + +for h, k in enumerate(K): + assert perfect_hash(k) == h +""" + + +class TooManyInterationsError(Exception): + pass + + +def generate_hash(keys, Hash=StrSaltHash): + """ + Return hash functions f1 and f2, and G for a perfect minimal hash. + Input is an iterable of 'keys', whos indicies are the desired hash values. + 'Hash' is a random hash function generator, that means Hash(N) returns a + returns a random hash function which returns hash values from 0..N-1. + """ + if not isinstance(keys, (list, tuple)): + raise TypeError("list or tuple expected") + NK = len(keys) + if NK != len(set(keys)): + raise ValueError("duplicate keys") + for key in keys: + if not isinstance(key, str): + raise TypeError("key a not string: %r" % key) + if NK > 10000 and Hash == StrSaltHash: + print("""\ +WARNING: You have %d keys. + Using --hft=1 is likely to fail for so many keys. + Please use --hft=2 instead. +""" % NK) + + # the number of vertices in the graph G + NG = NK + 1 + if verbose: + print('NG = %d' % NG) + + trial = 0 # Number of trial graphs so far + while True: + if (trial % trials) == 0: # trials failures, increase NG slightly + if trial > 0: + NG = max(NG + 1, int(1.05 * NG)) + if verbose: + sys.stdout.write('\nGenerating graphs NG = %d ' % NG) + trial += 1 + + if NG > 100 * (NK + 1): + raise TooManyInterationsError("%d keys" % NK) + + if verbose: + sys.stdout.write('.') + sys.stdout.flush() + + G = Graph(NG) # Create graph with NG vertices + f1 = Hash(NG) # Create 2 random hash functions + f2 = Hash(NG) + + # Connect vertices given by the values of the two hash functions + # for each key. Associate the desired hash value with each edge. + for hashval, key in enumerate(keys): + G.connect(f1(key), f2(key), hashval) + + # Try to assign the vertex values. This will fail when the graph + # is cyclic. But when the graph is acyclic it will succeed and we + # break out, because we're done. + if G.assign_vertex_values(): + break + + if verbose: + print('\nAcyclic graph found after %d trials.' % trial) + print('NG = %d' % NG) + + # Sanity check the result by actually verifying that all the keys + # hash to the right value. + for hashval, key in enumerate(keys): + assert hashval == ( + G.vertex_values[f1(key)] + G.vertex_values[f2(key)] + ) % NG + + if verbose: + print('OK') + + return f1, f2, G.vertex_values + + +class Format(object): + + def __init__(self, width=76, indent=4, delimiter=', '): + self.width = width + self.indent = indent + self.delimiter = delimiter + + def print_format(self): + print("Format options:") + for name in 'width', 'indent', 'delimiter': + print(' %s: %r' % (name, getattr(self, name))) + + def __call__(self, data, quote=False): + if not isinstance(data, (list, tuple)): + return str(data) + + lendel = len(self.delimiter) + aux = StringIO() + pos = 20 + for i, elt in enumerate(data): + last = bool(i == len(data) - 1) + + s = ('"%s"' if quote else '%s') % elt + + if pos + len(s) + lendel > self.width: + aux.write('\n' + (self.indent * ' ')) + pos = self.indent + + aux.write(s) + pos += len(s) + if not last: + aux.write(self.delimiter) + pos += lendel + + return '\n'.join(l.rstrip() for l in aux.getvalue().split('\n')) + + +def generate_code(keys, Hash=StrSaltHash, template=None, options=None): + """ + Takes a list of key value pairs and inserts the generated parameter + lists into the 'template' string. 'Hash' is the random hash function + generator, and the optional keywords are formating options. + The return value is the substituted code template. + """ + f1, f2, G = generate_hash(keys, Hash) + + assert f1.N == f2.N == len(G) + try: + salt_len = len(f1.salt) + assert salt_len == len(f2.salt) + except TypeError: + salt_len = None + + if template is None: + template = builtin_template(Hash) + + if options is None: + fmt = Format() + else: + fmt = Format(width=options.width, indent=options.indent, + delimiter=options.delimiter) + + if verbose: + fmt.print_format() + + return string.Template(template).substitute( + NS = salt_len, + S1 = fmt(f1.salt), + S2 = fmt(f2.salt), + NG = len(G), + G = fmt(G), + NK = len(keys), + K = fmt(list(keys), quote=True)) + + +def read_table(filename, options): + """ + Reads keys and desired hash value pairs from a file. If no column + for the hash value is specified, a sequence of hash values is generated, + from 0 to N-1, where N is the number of rows found in the file. + """ + if verbose: + print("Reading table from file `%s' to extract keys." % filename) + try: + fi = open(filename) + except IOError: + sys.exit("Error: Could not open `%s' for reading." % filename) + + keys = [] + + if verbose: + print("Reader options:") + for name in 'comment', 'splitby', 'keycol': + print(' %s: %r' % (name, getattr(options, name))) + + for n, line in enumerate(fi): + line = line.strip() + if not line or line.startswith(options.comment): + continue + + if line.count(options.comment): # strip content after comment + line = line.split(options.comment)[0].strip() + + row = [col.strip() for col in line.split(options.splitby)] + + try: + key = row[options.keycol - 1] + except IndexError: + sys.exit("%s:%d: Error: Cannot read key, not enough columns." % + (filename, n + 1)) + + keys.append(key) + + fi.close() + + if not keys: + exit("Error: no keys found in file `%s'." % filename) + + return keys + + +def read_template(filename): + if verbose: + print("Reading template from file `%s'" % filename) + try: + with open(filename, 'r') as fi: + return fi.read() + except IOError: + sys.exit("Error: Could not open `%s' for reading." % filename) + + +def run_code(code): + tmpdir = tempfile.mkdtemp() + path = join(tmpdir, 't.py') + with open(path, 'w') as fo: + fo.write(code) + try: + subprocess.check_call([sys.executable, path]) + except subprocess.CalledProcessError as e: + raise AssertionError(e) + finally: + shutil.rmtree(tmpdir) + + +def main(): + from optparse import OptionParser + + usage = "usage: %prog [options] KEYS_FILE [TMPL_FILE]" + + description = """\ +Generates code for perfect hash functions from +a file with keywords and a code template. +If no template file is provided, a small built-in Python template +is processed and the output code is written to stdout. +""" + + parser = OptionParser(usage = usage, + description = description, + prog = sys.argv[0], + version = "%prog: " + __version__) + + parser.add_option("--delimiter", + action = "store", + default = ", ", + help = "Delimiter for list items used in output, " + "the default delimiter is '%default'", + metavar = "STR") + + parser.add_option("--indent", + action = "store", + default = 4, + type = "int", + help = "Make INT spaces at the beginning of a " + "new line when generated list is wrapped. " + "Default is %default", + metavar = "INT") + + parser.add_option("--width", + action = "store", + default = 76, + type = "int", + help = "Maximal width of generated list when " + "wrapped. Default width is %default", + metavar = "INT") + + parser.add_option("--comment", + action = "store", + default = "#", + help = "STR is the character, or sequence of " + "characters, which marks the beginning " + "of a comment (which runs till " + "the end of the line), in the input " + "KEYS_FILE. " + "Default is '%default'", + metavar = "STR") + + parser.add_option("--splitby", + action = "store", + default = ",", + help = "STR is the character by which the columns " + "in the input KEYS_FILE are split. " + "Default is '%default'", + metavar = "STR") + + parser.add_option("--keycol", + action = "store", + default = 1, + type = "int", + help = "Specifies the column INT in the input " + "KEYS_FILE which contains the keys. " + "Default is %default, i.e. the first column.", + metavar = "INT") + + parser.add_option("--trials", + action = "store", + default = 5, + type = "int", + help = "Specifies the number of trials before " + "NG is increased. A small INT will give " + "compute faster, but the array G will be " + "large. A large INT will take longer to " + "compute but G will be smaller. " + "Default is %default", + metavar = "INT") + + parser.add_option("--hft", + action = "store", + default = 1, + type = "int", + help = "Hash function type INT. Possible values " + "are 1 (StrSaltHash) and 2 (IntSaltHash). " + "The default is %default", + metavar = "INT") + + parser.add_option("-e", "--execute", + action = "store_true", + help = "Execute the generated code within " + "the Python interpreter.") + + parser.add_option("-o", "--output", + action = "store", + help = "Specify output FILE explicitly. " + "`-o std' means standard output. " + "`-o no' means no output. " + "By default, the file name is obtained " + "from the name of the template file by " + "substituting `tmpl' to `code'.", + metavar = "FILE") + + parser.add_option("-v", "--verbose", + action = "store_true", + help = "verbosity") + + options, args = parser.parse_args() + + if options.trials <= 0: + parser.error("trials before increasing N has to be larger than zero") + + global trials + trials = options.trials + + global verbose + verbose = options.verbose + + if len(args) not in (1, 2): + parser.error("incorrect number of arguments") + + if len(args) == 2 and not args[1].count('tmpl'): + parser.error("template filename does not contain 'tmpl'") + + if options.hft == 1: + Hash = StrSaltHash + elif options.hft == 2: + Hash = IntSaltHash + else: + parser.error("Hash function %s not implemented." % options.hft) + + # --------------------- end parsing and checking -------------- + + keys_file = args[0] + + if verbose: + print("keys_file = %r" % keys_file) + + keys = read_table(keys_file, options) + + if verbose: + print("Number os keys: %d" % len(keys)) + + tmpl_file = args[1] if len(args) == 2 else None + + if verbose: + print("tmpl_file = %r" % tmpl_file) + + template = read_template(tmpl_file) if tmpl_file else None + + if options.output: + outname = options.output + else: + if tmpl_file: + if 'tmpl' not in tmpl_file: + sys.exit("Hmm, template filename does not contain 'tmpl'") + outname = tmpl_file.replace('tmpl', 'code') + else: + outname = 'std' + + if verbose: + print("outname = %r\n" % outname) + + if outname == 'std': + outstream = sys.stdout + elif outname == 'no': + outstream = None + else: + try: + outstream = open(outname, 'w') + except IOError: + sys.exit("Error: Could not open `%s' for writing." % outname) + + code = generate_code(keys, Hash, template, options) + + if options.execute or template == builtin_template(Hash): + if verbose: + print('Executing code...\n') + run_code(code) + + if outstream: + outstream.write(code) + if not outname == 'std': + outstream.close() + + +if __name__ == '__main__': + main() diff --git a/scripts/update-keysyms b/scripts/update-keysyms index 3356a35..5410474 100755 --- a/scripts/update-keysyms +++ b/scripts/update-keysyms @@ -2,5 +2,5 @@ # Run this to regenerate xkbcommon-keysyms.h from the X11 headers # defining the keysyms and update the name <-> keysym mapping. export LC_CTYPE=C -scripts/makeheader > xkbcommon/xkbcommon-keysyms.h -scripts/makekeys xkbcommon/xkbcommon-keysyms.h > src/ks_tables.h +scripts/makeheader > include/xkbcommon/xkbcommon-keysyms.h +scripts/makekeys include/xkbcommon/xkbcommon-keysyms.h > src/ks_tables.h @@ -72,8 +72,14 @@ #include "config.h" -#include "utils.h" +#include <assert.h> +#include <inttypes.h> +#include <stdbool.h> +#include <string.h> + #include "atom.h" +#include "darray.h" +#include "utils.h" /* FNV-1a (http://www.isthe.com/chongo/tech/comp/fnv/). */ static inline uint32_t @@ -90,31 +96,14 @@ hash_buf(const char *string, size_t len) } /* - * The atom table is a insert-only unbalanced binary search tree - * mapping strings to atoms. - * - * The tree nodes are kept contiguously in the `table` array. - * - * The atom value is the index of the tree node in the array. - * - * As an optimization, strings are not compared by value directly, - * s1 < s2 - * instead, they are compared by fingerprint (hash) and the value - * is only used to resolve collisions: - * (fingerprint(s1), s1) < (fingerprint(s2), s2) - * Fingerprint are pre-calculated and saved in the tree nodes. - * - * Why is this not just a hash table? Who knows! + * The atom table is an insert-only linear probing hash table + * mapping strings to atoms. Another array maps the atoms to + * strings. The atom value is the position in the strings array. */ -struct atom_node { - xkb_atom_t left, right; - uint32_t fingerprint; - char *string; -}; - struct atom_table { - xkb_atom_t root; - darray(struct atom_node) table; + xkb_atom_t *index; + size_t index_size; + darray(char *) strings; }; struct atom_table * @@ -124,9 +113,10 @@ atom_table_new(void) if (!table) return NULL; - darray_init(table->table); - /* The original throw-away root is here, at the illegal atom 0. */ - darray_resize0(table->table, 1); + darray_init(table->strings); + darray_append(table->strings, NULL); + table->index_size = 4; + table->index = calloc(table->index_size, sizeof(*table->index)); return table; } @@ -137,61 +127,68 @@ atom_table_free(struct atom_table *table) if (!table) return; - struct atom_node *node; - darray_foreach(node, table->table) - free(node->string); - darray_free(table->table); + char **string; + darray_foreach(string, table->strings) + free(*string); + darray_free(table->strings); + free(table->index); free(table); } const char * atom_text(struct atom_table *table, xkb_atom_t atom) { - assert(atom < darray_size(table->table)); - return darray_item(table->table, atom).string; + assert(atom < darray_size(table->strings)); + return darray_item(table->strings, atom); } xkb_atom_t atom_intern(struct atom_table *table, const char *string, size_t len, bool add) { - uint32_t fingerprint = hash_buf(string, len); - - xkb_atom_t *atomp = &table->root; - while (*atomp != XKB_ATOM_NONE) { - struct atom_node *node = &darray_item(table->table, *atomp); - - if (fingerprint > node->fingerprint) { - atomp = &node->right; - } - else if (fingerprint < node->fingerprint) { - atomp = &node->left; - } - else { - /* Now start testing the strings. */ - const int cmp = strncmp(string, node->string, len); - if (likely(cmp == 0 && node->string[len] == '\0')) { - return *atomp; - } - else if (cmp > 0) { - atomp = &node->right; + if (darray_size(table->strings) > 0.80 * table->index_size) { + table->index_size *= 2; + table->index = realloc(table->index, table->index_size * sizeof(*table->index)); + memset(table->index, 0, table->index_size * sizeof(*table->index)); + for (size_t j = 1; j < darray_size(table->strings); j++) { + const char *s = darray_item(table->strings, j); + uint32_t hash = hash_buf(s, strlen(s)); + for (size_t i = 0; i < table->index_size; i++) { + size_t index_pos = (hash + i) & (table->index_size - 1); + if (index_pos == 0) + continue; + + xkb_atom_t atom = table->index[index_pos]; + if (atom == XKB_ATOM_NONE) { + table->index[index_pos] = j; + break; + } } - else { - atomp = &node->left; + } + } + + uint32_t hash = hash_buf(string, len); + for (size_t i = 0; i < table->index_size; i++) { + size_t index_pos = (hash + i) & (table->index_size - 1); + if (index_pos == 0) + continue; + + xkb_atom_t existing_atom = table->index[index_pos]; + if (existing_atom == XKB_ATOM_NONE) { + if (add) { + xkb_atom_t new_atom = darray_size(table->strings); + darray_append(table->strings, strndup(string, len)); + table->index[index_pos] = new_atom; + return new_atom; + } else { + return XKB_ATOM_NONE; } } + + const char *existing_value = darray_item(table->strings, existing_atom); + if (strncmp(existing_value, string, len) == 0 && existing_value[len] == '\0') + return existing_atom; } - if (!add) - return XKB_ATOM_NONE; - - struct atom_node node; - node.string = strndup(string, len); - assert(node.string != NULL); - node.left = node.right = XKB_ATOM_NONE; - node.fingerprint = fingerprint; - xkb_atom_t atom = darray_size(table->table); - /* Do this before the append, as it may realloc and change the offsets. */ - *atomp = atom; - darray_append(table->table, node); - return atom; + assert(!"couldn't find an empty slot during probing"); + return XKB_ATOM_NONE; } diff --git a/src/compose/parser.c b/src/compose/parser.c index 0f85a92..08018f2 100644 --- a/src/compose/parser.c +++ b/src/compose/parser.c @@ -327,109 +327,108 @@ struct production { xkb_mod_mask_t mods; }; -static uint32_t -add_node(struct xkb_compose_table *table, xkb_keysym_t keysym) -{ - struct compose_node new = { - .keysym = keysym, - .next = 0, - .is_leaf = true, - }; - darray_append(table->nodes, new); - return darray_size(table->nodes) - 1; -} - static void add_production(struct xkb_compose_table *table, struct scanner *s, const struct production *production) { - unsigned lhs_pos; - uint32_t curr; - struct compose_node *node; - - curr = 0; - node = &darray_item(table->nodes, curr); + unsigned lhs_pos = 0; + uint16_t curr = darray_size(table->nodes) == 1 ? 0 : 1; + uint16_t *pptr = NULL; + struct compose_node *node = NULL; + + /* Warn before potentially going over the limit, discard silently after. */ + if (darray_size(table->nodes) + production->len + MAX_LHS_LEN > MAX_COMPOSE_NODES) + scanner_warn(s, "too many sequences for one Compose file; will ignore further lines"); + if (darray_size(table->nodes) + production->len >= MAX_COMPOSE_NODES) + return; /* - * Insert the sequence to the trie, creating new nodes as needed. + * Insert the sequence to the ternary search tree, creating new nodes as + * needed. * - * TODO: This can be sped up a bit by first trying the path that the - * previous production took, and only then doing the linear search - * through the trie levels. This will work because sequences in the - * Compose files are often clustered by a common prefix; especially - * in the 1st and 2nd keysyms, which is where the largest variation - * (thus, longest search) is. + * TODO: We insert in the order given, this means some inputs can create + * long O(n) chains, which results in total O(n^2) parsing time. We should + * ensure the tree is reasonably balanced somehow. */ - for (lhs_pos = 0; lhs_pos < production->len; lhs_pos++) { - while (production->lhs[lhs_pos] != node->keysym) { - if (node->next == 0) { - uint32_t next = add_node(table, production->lhs[lhs_pos]); - /* Refetch since add_node could have realloc()ed. */ - node = &darray_item(table->nodes, curr); - node->next = next; + while (true) { + const xkb_keysym_t keysym = production->lhs[lhs_pos]; + const bool last = lhs_pos + 1 == production->len; + + if (curr == 0) { + /* + * Create a new node and update the parent pointer to it. + * Update the pointer first because the append invalidates it. + */ + struct compose_node new = { + .keysym = keysym, + .lokid = 0, + .hikid = 0, + .internal = { + .eqkid = 0, + .is_leaf = false, + }, + }; + curr = darray_size(table->nodes); + if (pptr != NULL) { + *pptr = curr; + pptr = NULL; } - - curr = node->next; - node = &darray_item(table->nodes, curr); + darray_append(table->nodes, new); } - if (lhs_pos + 1 == production->len) - break; + node = &darray_item(table->nodes, curr); - if (node->is_leaf) { - if (node->u.leaf.utf8 != 0 || - node->u.leaf.keysym != XKB_KEY_NoSymbol) { + if (keysym < node->keysym) { + pptr = &node->lokid; + curr = node->lokid; + } else if (keysym > node->keysym) { + pptr = &node->hikid; + curr = node->hikid; + } else if (!last) { + if (node->is_leaf) { scanner_warn(s, "a sequence already exists which is a prefix of this sequence; overriding"); - node->u.leaf.utf8 = 0; - node->u.leaf.keysym = XKB_KEY_NoSymbol; + node->internal.eqkid = node->lokid = node->hikid = 0; + node->internal.is_leaf = false; } - - { - uint32_t successor = add_node(table, production->lhs[lhs_pos + 1]); - /* Refetch since add_node could have realloc()ed. */ - node = &darray_item(table->nodes, curr); - node->is_leaf = false; - node->u.successor = successor; + lhs_pos++; + pptr = &node->internal.eqkid; + curr = node->internal.eqkid; + } else { + if (node->is_leaf) { + bool same_string = + (node->leaf.utf8 == 0 && !production->has_string) || + ( + node->leaf.utf8 != 0 && production->has_string && + streq(&darray_item(table->utf8, node->leaf.utf8), + production->string) + ); + bool same_keysym = + (node->leaf.keysym == XKB_KEY_NoSymbol && !production->has_keysym) || + ( + node->leaf.keysym != XKB_KEY_NoSymbol && production->has_keysym && + node->leaf.keysym == production->keysym + ); + if (same_string && same_keysym) { + scanner_warn(s, "this compose sequence is a duplicate of another; skipping line"); + return; + } else { + scanner_warn(s, "this compose sequence already exists; overriding"); + } + } else if (node->internal.eqkid != 0) { + scanner_warn(s, "this compose sequence is a prefix of another; skipping line"); + return; + } + node->is_leaf = true; + if (production->has_string) { + node->leaf.utf8 = darray_size(table->utf8); + darray_append_items(table->utf8, production->string, + strlen(production->string) + 1); + } + if (production->has_keysym) { + node->leaf.keysym = production->keysym; } - } - - curr = node->u.successor; - node = &darray_item(table->nodes, curr); - } - - if (!node->is_leaf) { - scanner_warn(s, "this compose sequence is a prefix of another; skipping line"); - return; - } - - if (node->u.leaf.utf8 != 0 || node->u.leaf.keysym != XKB_KEY_NoSymbol) { - bool same_string = - (node->u.leaf.utf8 == 0 && !production->has_string) || - ( - node->u.leaf.utf8 != 0 && production->has_string && - streq(&darray_item(table->utf8, node->u.leaf.utf8), - production->string) - ); - bool same_keysym = - (node->u.leaf.keysym == XKB_KEY_NoSymbol && !production->has_keysym) || - ( - node->u.leaf.keysym != XKB_KEY_NoSymbol && production->has_keysym && - node->u.leaf.keysym == production->keysym - ); - if (same_string && same_keysym) { - scanner_warn(s, "this compose sequence is a duplicate of another; skipping line"); return; } - scanner_warn(s, "this compose sequence already exists; overriding"); - } - - if (production->has_string) { - node->u.leaf.utf8 = darray_size(table->utf8); - darray_append_items(table->utf8, production->string, - strlen(production->string) + 1); - } - if (production->has_keysym) { - node->u.leaf.keysym = production->keysym; } } diff --git a/src/compose/state.c b/src/compose/state.c index 9c64eb4..6ba0344 100644 --- a/src/compose/state.c +++ b/src/compose/state.c @@ -41,8 +41,8 @@ struct xkb_compose_state { * This is also sufficient for inferring the current status; see * xkb_compose_state_get_status(). */ - uint32_t prev_context; - uint32_t context; + uint16_t prev_context; + uint16_t context; }; XKB_EXPORT struct xkb_compose_state * @@ -91,7 +91,7 @@ xkb_compose_state_get_compose_table(struct xkb_compose_state *state) XKB_EXPORT enum xkb_compose_feed_result xkb_compose_state_feed(struct xkb_compose_state *state, xkb_keysym_t keysym) { - uint32_t context; + uint16_t context; const struct compose_node *node; /* @@ -109,17 +109,20 @@ xkb_compose_state_feed(struct xkb_compose_state *state, xkb_keysym_t keysym) node = &darray_item(state->table->nodes, state->context); - context = (node->is_leaf ? 0 : node->u.successor); - node = &darray_item(state->table->nodes, context); + context = (node->is_leaf ? 1 : node->internal.eqkid); + if (context == 1 && darray_size(state->table->nodes) == 1) + context = 0; - while (node->keysym != keysym && node->next != 0) { - context = node->next; + while (context != 0) { node = &darray_item(state->table->nodes, context); + if (keysym < node->keysym) + context = node->lokid; + else if (keysym > node->keysym) + context = node->hikid; + else + break; } - if (node->keysym != keysym) - context = 0; - state->prev_context = state->context; state->context = context; return XKB_COMPOSE_FEED_ACCEPTED; @@ -164,11 +167,11 @@ xkb_compose_state_get_utf8(struct xkb_compose_state *state, /* If there's no string specified, but only a keysym, try to do the * most helpful thing. */ - if (node->u.leaf.utf8 == 0 && node->u.leaf.keysym != XKB_KEY_NoSymbol) { + if (node->leaf.utf8 == 0 && node->leaf.keysym != XKB_KEY_NoSymbol) { char name[64]; int ret; - ret = xkb_keysym_to_utf8(node->u.leaf.keysym, name, sizeof(name)); + ret = xkb_keysym_to_utf8(node->leaf.keysym, name, sizeof(name)); if (ret < 0 || ret == 0) { /* ret < 0 is impossible. * ret == 0 means the keysym has no string representation. */ @@ -179,7 +182,7 @@ xkb_compose_state_get_utf8(struct xkb_compose_state *state, } return snprintf(buffer, size, "%s", - &darray_item(state->table->utf8, node->u.leaf.utf8)); + &darray_item(state->table->utf8, node->leaf.utf8)); fail: if (size > 0) @@ -194,5 +197,5 @@ xkb_compose_state_get_one_sym(struct xkb_compose_state *state) &darray_item(state->table->nodes, state->context); if (!node->is_leaf) return XKB_KEY_NoSymbol; - return node->u.leaf.keysym; + return node->leaf.keysym; } diff --git a/src/compose/table.c b/src/compose/table.c index 38d4406..8a8d11f 100644 --- a/src/compose/table.c +++ b/src/compose/table.c @@ -1,5 +1,5 @@ /* - * Copyright © 2013 Ran Benita <ran234@gmail.com> + * Copyright © 2013,2021 Ran Benita <ran234@gmail.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -36,7 +36,7 @@ xkb_compose_table_new(struct xkb_context *ctx, { char *resolved_locale; struct xkb_compose_table *table; - struct compose_node root; + struct compose_node dummy; resolved_locale = resolve_locale(locale); if (!resolved_locale) @@ -58,12 +58,11 @@ xkb_compose_table_new(struct xkb_context *ctx, darray_init(table->nodes); darray_init(table->utf8); - root.keysym = XKB_KEY_NoSymbol; - root.next = 0; - root.is_leaf = true; - root.u.leaf.utf8 = 0; - root.u.leaf.keysym = XKB_KEY_NoSymbol; - darray_append(table->nodes, root); + dummy.keysym = XKB_KEY_NoSymbol; + dummy.leaf.is_leaf = true; + dummy.leaf.utf8 = 0; + dummy.leaf.keysym = XKB_KEY_NoSymbol; + darray_append(table->nodes, dummy); darray_append(table->utf8, '\0'); @@ -207,7 +206,8 @@ xkb_compose_table_new_from_locale(struct xkb_context *ctx, } free(path); - log_err(ctx, "couldn't find a Compose file for locale \"%s\"\n", locale); + log_err(ctx, "couldn't find a Compose file for locale \"%s\" (mapped to \"%s\")\n", + locale, table->locale); xkb_compose_table_unref(table); return NULL; diff --git a/src/compose/table.h b/src/compose/table.h index 05a415f..6be4348 100644 --- a/src/compose/table.h +++ b/src/compose/table.h @@ -1,5 +1,5 @@ /* - * Copyright © 2013 Ran Benita <ran234@gmail.com> + * Copyright © 2013,2021 Ran Benita <ran234@gmail.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -29,36 +29,43 @@ #include "context.h" /* - * The compose table data structure is a simple trie. An example will - * help. Given these sequences: + * The compose table data structure is a ternary search tree. * - * <A> <B> : "first" dead_a - * <A> <C> <D> : "second" dead_b - * <E> <F> : "third" dead_c + * Reference: https://www.drdobbs.com/database/ternary-search-trees/184410528 + * Visualization: https://www.cs.usfca.edu/~galles/visualization/TST.html * - * the trie would look like: + * Short example. Given these sequences: + * + * <B> <C> : "first" dead_a + * <B> <D> <E> : "second" dead_b + * <A> <F> : "third" dead_c + * + * the tree would look like: + * + * -------- [<B>]--------- + * | | # + * v V + * -- [<A>] -- [<C>] -------- + * # | # | | + * v # -- [<D>] -- + * -- [<F>] -- # | # + * # | # v + * # -- [<E>] -- + * # | # + * # * - * [root] ---> [<A>] -----------------> [<E>] -# - * | | | - * # v v - * [<B>] ---> [<C>] -# [<F>] -# - * | | - - * # v # - * [<D>] -# - * | - * # * where: - * - [root] is a special empty root node. * - [<X>] is a node for a sequence keysym <X>. - * - right arrows are `next` pointers. - * - down arrows are `successor` pointers. + * - right arrows are `hikid` pointers. + * - left arrows are `lokid` pointers. + * - down arrows are `eqkid` pointers. * - # is a nil pointer. * * The nodes are all kept in a contiguous array. Pointers are represented * as integer offsets into this array. A nil pointer is represented as 0 - * (which, helpfully, is the offset of the empty root node). + * (which, helpfully, is the offset of an empty dummy node). * - * Nodes without a successor are leaf nodes. Since a sequence cannot be a + * Nodes without an eqkid are leaf nodes. Since a sequence cannot be a * prefix of another, these are exactly the nodes which terminate the * sequences (in a bijective manner). * @@ -68,21 +75,35 @@ * \0 is so offset 0 points to an empty string). */ +/* Fits in uint16_t, also a good idea to have some limit. */ +#define MAX_COMPOSE_NODES 65535 + struct compose_node { xkb_keysym_t keysym; - /* Offset into xkb_compose_table::nodes. */ - unsigned int next:31; - bool is_leaf:1; + + /* Offset into xkb_compose_table::nodes or 0. */ + uint16_t lokid; + /* Offset into xkb_compose_table::nodes or 0. */ + uint16_t hikid; union { - /* Offset into xkb_compose_table::nodes. */ - uint32_t successor; + struct { + uint32_t _pad:31; + bool is_leaf:1; + }; + struct { + uint32_t _pad:31; + bool is_leaf:1; + /* Offset into xkb_compose_table::nodes or 0. */ + uint16_t eqkid; + } internal; struct { /* Offset into xkb_compose_table::utf8. */ - uint32_t utf8; + uint32_t utf8:31; + bool is_leaf:1; xkb_keysym_t keysym; } leaf; - } u; + }; }; struct xkb_compose_table { diff --git a/src/keysym-utf.c b/src/keysym-utf.c index a49944a..7769672 100644 --- a/src/keysym-utf.c +++ b/src/keysym-utf.c @@ -614,8 +614,8 @@ static const struct codepair keysymtab[] = { { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */ { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */ { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */ - { 0x0bdc, 0x22a2 }, /* lefttack ⊢ RIGHT TACK */ - { 0x0bfc, 0x22a3 }, /* righttack ⊣ LEFT TACK */ + { 0x0bdc, 0x22a3 }, /* lefttack ⊣ LEFT TACK */ + { 0x0bfc, 0x22a2 }, /* righttack ⊢ RIGHT TACK */ { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */ { 0x0ce0, 0x05d0 }, /* hebrew_aleph א HEBREW LETTER ALEF */ { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */ @@ -810,7 +810,7 @@ static const struct codepair keysymtab[] = { { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */ { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */ { 0x0ef2, 0x317f }, /* Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */ -/* 0x0ef3 Hangul_KkogjiDalrinIeung ? ??? */ + { 0x0ef3, 0x3181 }, /* Hangul_KkogjiDalrinIeung ㆁ HANGUL LETTER YESIEUNG */ { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */ { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */ { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆍ HANGUL LETTER ARAEA */ diff --git a/src/keysym.c b/src/keysym.c index 7b492e2..bf49c63 100644 --- a/src/keysym.c +++ b/src/keysym.c @@ -61,42 +61,25 @@ get_name(const struct name_keysym *entry) return keysym_names + entry->offset; } -static int -compare_by_keysym(const void *a, const void *b) -{ - const xkb_keysym_t *key = a; - const struct name_keysym *entry = b; - if (*key < entry->keysym) - return -1; - if (*key > entry->keysym) - return 1; - return 0; -} - -static int -compare_by_name(const void *a, const void *b) -{ - const char *key = a; - const struct name_keysym *entry = b; - return istrcmp(key, get_name(entry)); -} - XKB_EXPORT int xkb_keysym_get_name(xkb_keysym_t ks, char *buffer, size_t size) { - const struct name_keysym *entry; - if ((ks & ((unsigned long) ~0x1fffffff)) != 0) { snprintf(buffer, size, "Invalid"); return -1; } - entry = bsearch(&ks, keysym_to_name, - ARRAY_SIZE(keysym_to_name), - sizeof(*keysym_to_name), - compare_by_keysym); - if (entry) - return snprintf(buffer, size, "%s", get_name(entry)); + int32_t lo = 0, hi = ARRAY_SIZE(keysym_to_name) - 1; + while (hi >= lo) { + int32_t mid = (lo + hi) / 2; + if (ks > keysym_to_name[mid].keysym) { + lo = mid + 1; + } else if (ks < keysym_to_name[mid].keysym) { + hi = mid - 1; + } else { + return snprintf(buffer, size, "%s", get_name(&keysym_to_name[mid])); + } + } /* Unnamed Unicode codepoint. */ if (ks >= 0x01000100 && ks <= 0x0110ffff) { @@ -109,108 +92,135 @@ xkb_keysym_get_name(xkb_keysym_t ks, char *buffer, size_t size) } /* - * Find the correct keysym if one case-insensitive match is given. - * - * The name_to_keysym table is sorted by istrcmp(). So bsearch() may return - * _any_ of all possible case-insensitive duplicates. This function searches the - * returned entry @entry, all previous and all next entries that match by - * case-insensitive comparison and returns the exact match to @name. If @icase - * is true, then this returns the best case-insensitive match instead of a - * correct match. - * The "best" case-insensitive match is the lower-case keysym which we find with - * the help of xkb_keysym_is_lower(). - * The only keysyms that only differ by letter-case are keysyms that are - * available as lower-case and upper-case variant (like KEY_a and KEY_A). So - * returning the first lower-case match is enough in this case. + * Parse the numeric part of a 0xXXXX and UXXXX keysym. + * Not using strtoul -- it's slower and accepts a bunch of stuff + * we don't want to allow, like signs, spaces, even locale stuff. */ -static const struct name_keysym * -find_sym(const struct name_keysym *entry, const char *name, bool icase) +static bool +parse_keysym_hex(const char *s, uint32_t *out) { - const struct name_keysym *iter, *last; - size_t len = ARRAY_SIZE(name_to_keysym); - - if (!entry) - return NULL; - - if (!icase && strcmp(get_name(entry), name) == 0) - return entry; - if (icase && xkb_keysym_is_lower(entry->keysym)) - return entry; - - for (iter = entry - 1; iter >= name_to_keysym; --iter) { - if (!icase && strcmp(get_name(iter), name) == 0) - return iter; - if (istrcmp(get_name(iter), get_name(entry)) != 0) - break; - if (icase && xkb_keysym_is_lower(iter->keysym)) - return iter; + uint32_t result = 0; + int i; + for (i = 0; i < 8 && s[i] != '\0'; i++) { + result <<= 4; + if ('0' <= s[i] && s[i] <= '9') + result += s[i] - '0'; + else if ('a' <= s[i] && s[i] <= 'f') + result += 10 + s[i] - 'a'; + else if ('A' <= s[i] && s[i] <= 'F') + result += 10 + s[i] - 'A'; + else + return false; } - - last = name_to_keysym + len; - for (iter = entry + 1; iter < last; ++iter) { - if (!icase && strcmp(get_name(iter), name) == 0) - return iter; - if (istrcmp(get_name(iter), get_name(entry)) != 0) - break; - if (icase && xkb_keysym_is_lower(iter->keysym)) - return iter; - } - - if (icase) - return entry; - return NULL; + *out = result; + return s[i] == '\0' && i > 0; } XKB_EXPORT xkb_keysym_t -xkb_keysym_from_name(const char *s, enum xkb_keysym_flags flags) +xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags) { - const struct name_keysym *entry; + const struct name_keysym *entry = NULL; char *tmp; - xkb_keysym_t val; + uint32_t val; bool icase = (flags & XKB_KEYSYM_CASE_INSENSITIVE); if (flags & ~XKB_KEYSYM_CASE_INSENSITIVE) return XKB_KEY_NoSymbol; - entry = bsearch(s, name_to_keysym, - ARRAY_SIZE(name_to_keysym), - sizeof(*name_to_keysym), - compare_by_name); - entry = find_sym(entry, s, icase); - if (entry) - return entry->keysym; - - if (*s == 'U' || (icase && *s == 'u')) { - val = strtoul(&s[1], &tmp, 16); - if (tmp && *tmp != '\0') + /* + * We need to !icase case to be fast, for e.g. Compose file parsing. + * So do it in a fast path. + */ + if (!icase) { + size_t pos = keysym_name_perfect_hash(name); + if (pos < ARRAY_SIZE(name_to_keysym)) { + const char *s = get_name(&name_to_keysym[pos]); + if (strcmp(name, s) == 0) + return name_to_keysym[pos].keysym; + } + } + /* + * Find the correct keysym for case-insensitive match. + * + * The name_to_keysym table is sorted by istrcmp(). So the binary + * search may return _any_ of all possible case-insensitive duplicates. This + * code searches the entry, all previous and all next entries that match by + * case-insensitive comparison and returns the "best" case-insensitive + * match. + * + * The "best" case-insensitive match is the lower-case keysym which we find + * with the help of xkb_keysym_is_lower(). The only keysyms that only differ + * by letter-case are keysyms that are available as lower-case and + * upper-case variant (like KEY_a and KEY_A). So returning the first + * lower-case match is enough in this case. + */ + else { + int32_t lo = 0, hi = ARRAY_SIZE(name_to_keysym) - 1; + while (hi >= lo) { + int32_t mid = (lo + hi) / 2; + int cmp = istrcmp(name, get_name(&name_to_keysym[mid])); + if (cmp > 0) { + lo = mid + 1; + } else if (cmp < 0) { + hi = mid - 1; + } else { + entry = &name_to_keysym[mid]; + break; + } + } + if (entry) { + const struct name_keysym *iter, *last; + + if (icase && xkb_keysym_is_lower(entry->keysym)) + return entry->keysym; + + for (iter = entry - 1; iter >= name_to_keysym; --iter) { + if (istrcmp(get_name(iter), get_name(entry)) != 0) + break; + if (xkb_keysym_is_lower(iter->keysym)) + return iter->keysym; + } + + last = name_to_keysym + ARRAY_SIZE(name_to_keysym); + for (iter = entry + 1; iter < last; ++iter) { + if (istrcmp(get_name(iter), get_name(entry)) != 0) + break; + if (xkb_keysym_is_lower(iter->keysym)) + return iter->keysym; + } + + return entry->keysym; + } + } + + if (*name == 'U' || (icase && *name == 'u')) { + if (!parse_keysym_hex(&name[1], &val)) return XKB_KEY_NoSymbol; if (val < 0x20 || (val > 0x7e && val < 0xa0)) return XKB_KEY_NoSymbol; if (val < 0x100) - return val; + return (xkb_keysym_t) val; if (val > 0x10ffff) return XKB_KEY_NoSymbol; - return val | 0x01000000; + return (xkb_keysym_t) val | 0x01000000; } - else if (s[0] == '0' && (s[1] == 'x' || (icase && s[1] == 'X'))) { - val = strtoul(&s[2], &tmp, 16); - if (tmp && *tmp != '\0') + else if (name[0] == '0' && (name[1] == 'x' || (icase && name[1] == 'X'))) { + if (!parse_keysym_hex(&name[2], &val)) return XKB_KEY_NoSymbol; - - return val; + return (xkb_keysym_t) val; } /* Stupid inconsistency between the headers and XKeysymDB: the former has * no separating underscore, while some XF86* syms in the latter did. * As a last ditch effort, try without. */ - if (strncmp(s, "XF86_", 5) == 0 || - (icase && istrncmp(s, "XF86_", 5) == 0)) { + if (strncmp(name, "XF86_", 5) == 0 || + (icase && istrncmp(name, "XF86_", 5) == 0)) { xkb_keysym_t ret; - tmp = strdup(s); + tmp = strdup(name); if (!tmp) return XKB_KEY_NoSymbol; - memmove(&tmp[4], &tmp[5], strlen(s) - 5 + 1); + memmove(&tmp[4], &tmp[5], strlen(name) - 5 + 1); ret = xkb_keysym_from_name(tmp, flags); free(tmp); return ret; diff --git a/src/ks_tables.h b/src/ks_tables.h index 12dc4c0..46d6f98 100644 --- a/src/ks_tables.h +++ b/src/ks_tables.h @@ -613,6 +613,11 @@ static const char *keysym_names = "Codeinput\0" "colon\0" "ColonSign\0" + "combining_acute\0" + "combining_belowdot\0" + "combining_grave\0" + "combining_hook\0" + "combining_tilde\0" "comma\0" "containsas\0" "Control_L\0" @@ -2203,10 +2208,23 @@ static const char *keysym_names = "x\0" "Xabovedot\0" "xabovedot\0" + "XF8610ChannelsDown\0" + "XF8610ChannelsUp\0" + "XF863DMode\0" "XF86AddFavorite\0" + "XF86Addressbook\0" + "XF86ALSToggle\0" "XF86ApplicationLeft\0" "XF86ApplicationRight\0" + "XF86AppSelect\0" + "XF86AspectRatio\0" + "XF86Assistant\0" + "XF86AttendantOff\0" + "XF86AttendantOn\0" + "XF86AttendantToggle\0" + "XF86Audio\0" "XF86AudioCycleTrack\0" + "XF86AudioDesc\0" "XF86AudioForward\0" "XF86AudioLowerVolume\0" "XF86AudioMedia\0" @@ -2230,41 +2248,83 @@ static const char *keysym_names = "XF86Blue\0" "XF86Bluetooth\0" "XF86Book\0" + "XF86Break\0" "XF86BrightnessAdjust\0" + "XF86BrightnessAuto\0" + "XF86BrightnessMax\0" + "XF86BrightnessMin\0" + "XF86Buttonconfig\0" "XF86Calculater\0" "XF86Calculator\0" "XF86Calendar\0" + "XF86CameraDown\0" + "XF86CameraFocus\0" + "XF86CameraLeft\0" + "XF86CameraRight\0" + "XF86CameraUp\0" + "XF86CameraZoomIn\0" + "XF86CameraZoomOut\0" "XF86CD\0" + "XF86ChannelDown\0" + "XF86ChannelUp\0" "XF86Clear\0" "XF86ClearGrab\0" "XF86Close\0" "XF86Community\0" + "XF86ContextMenu\0" "XF86ContrastAdjust\0" + "XF86ControlPanel\0" "XF86Copy\0" "XF86Cut\0" "XF86CycleAngle\0" + "XF86Data\0" + "XF86Database\0" "XF86Display\0" + "XF86DisplayOff\0" + "XF86DisplayToggle\0" "XF86Documents\0" "XF86DOS\0" + "XF86DVD\0" + "XF86Editor\0" "XF86Eject\0" "XF86Excel\0" "XF86Explorer\0" + "XF86FastReverse\0" "XF86Favorites\0" "XF86Finance\0" + "XF86Fn\0" + "XF86Fn_Esc\0" + "XF86FnRightShift\0" "XF86Forward\0" "XF86FrameBack\0" "XF86FrameForward\0" "XF86FullScreen\0" "XF86Game\0" "XF86Go\0" + "XF86GraphicsEditor\0" "XF86Green\0" + "XF86HangupPhone\0" "XF86Hibernate\0" "XF86History\0" "XF86HomePage\0" "XF86HotLinks\0" + "XF86Images\0" + "XF86Info\0" "XF86iTouch\0" + "XF86Journal\0" "XF86KbdBrightnessDown\0" "XF86KbdBrightnessUp\0" + "XF86KbdInputAssistAccept\0" + "XF86KbdInputAssistCancel\0" + "XF86KbdInputAssistNext\0" + "XF86KbdInputAssistNextgroup\0" + "XF86KbdInputAssistPrev\0" + "XF86KbdInputAssistPrevgroup\0" + "XF86KbdLcdMenu1\0" + "XF86KbdLcdMenu2\0" + "XF86KbdLcdMenu3\0" + "XF86KbdLcdMenu4\0" + "XF86KbdLcdMenu5\0" "XF86KbdLightOnOff\0" "XF86Keyboard\0" "XF86Launch0\0" @@ -2283,13 +2343,54 @@ static const char *keysym_names = "XF86LaunchD\0" "XF86LaunchE\0" "XF86LaunchF\0" + "XF86LeftDown\0" + "XF86LeftUp\0" "XF86LightBulb\0" + "XF86LightsToggle\0" "XF86LogGrabInfo\0" "XF86LogOff\0" "XF86LogWindowTree\0" + "XF86Macro1\0" + "XF86Macro10\0" + "XF86Macro11\0" + "XF86Macro12\0" + "XF86Macro13\0" + "XF86Macro14\0" + "XF86Macro15\0" + "XF86Macro16\0" + "XF86Macro17\0" + "XF86Macro18\0" + "XF86Macro19\0" + "XF86Macro2\0" + "XF86Macro20\0" + "XF86Macro21\0" + "XF86Macro22\0" + "XF86Macro23\0" + "XF86Macro24\0" + "XF86Macro25\0" + "XF86Macro26\0" + "XF86Macro27\0" + "XF86Macro28\0" + "XF86Macro29\0" + "XF86Macro3\0" + "XF86Macro30\0" + "XF86Macro4\0" + "XF86Macro5\0" + "XF86Macro6\0" + "XF86Macro7\0" + "XF86Macro8\0" + "XF86Macro9\0" + "XF86MacroPreset1\0" + "XF86MacroPreset2\0" + "XF86MacroPreset3\0" + "XF86MacroPresetCycle\0" + "XF86MacroRecordStart\0" + "XF86MacroRecordStop\0" "XF86Mail\0" "XF86MailForward\0" "XF86Market\0" + "XF86MediaRepeat\0" + "XF86MediaTopMenu\0" "XF86Meeting\0" "XF86Memo\0" "XF86MenuKB\0" @@ -2305,44 +2406,77 @@ static const char *keysym_names = "XF86New\0" "XF86News\0" "XF86Next_VMode\0" + "XF86NextFavorite\0" + "XF86NotificationCenter\0" + "XF86Numeric0\0" + "XF86Numeric1\0" + "XF86Numeric11\0" + "XF86Numeric12\0" + "XF86Numeric2\0" + "XF86Numeric3\0" + "XF86Numeric4\0" + "XF86Numeric5\0" + "XF86Numeric6\0" + "XF86Numeric7\0" + "XF86Numeric8\0" + "XF86Numeric9\0" + "XF86NumericA\0" + "XF86NumericB\0" + "XF86NumericC\0" + "XF86NumericD\0" + "XF86NumericPound\0" + "XF86NumericStar\0" "XF86OfficeHome\0" + "XF86OnScreenKeyboard\0" "XF86Open\0" "XF86OpenURL\0" "XF86Option\0" "XF86Paste\0" + "XF86PauseRecord\0" "XF86Phone\0" + "XF86PickupPhone\0" "XF86Pictures\0" "XF86PowerDown\0" "XF86PowerOff\0" + "XF86Presentation\0" "XF86Prev_VMode\0" + "XF86PrivacyScreenToggle\0" "XF86Q\0" "XF86Red\0" "XF86Refresh\0" "XF86Reload\0" "XF86Reply\0" "XF86RFKill\0" + "XF86RightDown\0" + "XF86RightUp\0" "XF86RockerDown\0" "XF86RockerEnter\0" "XF86RockerUp\0" + "XF86RootMenu\0" "XF86RotateWindows\0" "XF86RotationKB\0" "XF86RotationLockToggle\0" "XF86RotationPB\0" "XF86Save\0" "XF86ScreenSaver\0" + "XF86Screensaver\0" "XF86ScrollClick\0" "XF86ScrollDown\0" "XF86ScrollUp\0" "XF86Search\0" "XF86Select\0" + "XF86SelectiveScreenshot\0" "XF86Send\0" "XF86Shop\0" "XF86Sleep\0" + "XF86SlowReverse\0" "XF86Spell\0" + "XF86SpellCheck\0" "XF86SplitScreen\0" "XF86Standby\0" "XF86Start\0" "XF86Stop\0" + "XF86StopRecord\0" "XF86Subtitle\0" "XF86Support\0" "XF86Suspend\0" @@ -2358,6 +2492,7 @@ static const char *keysym_names = "XF86Switch_VT_7\0" "XF86Switch_VT_8\0" "XF86Switch_VT_9\0" + "XF86Taskmanager\0" "XF86TaskPane\0" "XF86Terminal\0" "XF86Time\0" @@ -2369,24 +2504,31 @@ static const char *keysym_names = "XF86TouchpadToggle\0" "XF86Travel\0" "XF86Ungrab\0" + "XF86Unmute\0" "XF86User1KB\0" "XF86User2KB\0" "XF86UserPB\0" "XF86UWB\0" "XF86VendorHome\0" "XF86Video\0" + "XF86VideoPhone\0" "XF86View\0" + "XF86VOD\0" + "XF86VoiceCommand\0" + "XF86Voicemail\0" "XF86WakeUp\0" "XF86WebCam\0" "XF86WheelButton\0" "XF86WLAN\0" "XF86Word\0" + "XF86WPSButton\0" "XF86WWAN\0" "XF86WWW\0" "XF86Xfer\0" "XF86Yellow\0" "XF86ZoomIn\0" "XF86ZoomOut\0" + "XF86ZoomReset\0" "Y\0" "y\0" "Yacute\0" @@ -2424,6 +2566,323 @@ static const char *keysym_names = #pragma GCC diagnostic pop #endif +static const uint16_t keysym_name_G[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0, + 0, 1245, 0, 3310, 4490, 0, 0, 0, 0, 4529, 0, 0, 0, 0, 3857, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2266, 0, 0, 0, 0, 0, + 3688, 0, 0, 4511, 0, 0, 0, 0, 0, 0, 0, 3299, 0, 0, 0, 0, 0, 544, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1200, 3223, 4207, 0, 672, 0, 0, 0, 0, 0, 3303, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4369, 0, 2211, 0, 0, 0, 2592, 0, 0, + 0, 0, 1606, 0, 2530, 1223, 0, 0, 727, 0, 0, 297, 0, 4204, 0, 0, 0, 0, + 0, 2370, 0, 0, 3160, 0, 0, 0, 0, 3661, 0, 0, 0, 0, 1253, 0, 0, 2229, + 4008, 4269, 0, 0, 0, 0, 1572, 0, 1730, 3284, 0, 3643, 0, 0, 0, 4448, + 783, 0, 0, 0, 419, 0, 0, 564, 0, 0, 0, 0, 0, 1896, 2895, 0, 303, 0, + 3482, 1037, 0, 0, 0, 888, 0, 0, 0, 0, 3829, 0, 486, 0, 0, 0, 244, 0, + 1731, 0, 0, 0, 0, 1609, 417, 2333, 2106, 4289, 1503, 0, 0, 0, 0, 0, + 1880, 0, 0, 0, 0, 1740, 0, 0, 1273, 1470, 0, 0, 188, 0, 0, 0, 0, 1001, + 0, 0, 3155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269, 3789, 0, 0, 0, 0, 0, 0, 0, + 0, 1492, 3200, 0, 0, 0, 0, 0, 2009, 24, 0, 0, 0, 80, 3123, 0, 0, 0, 0, + 0, 0, 0, 1126, 0, 0, 0, 0, 3585, 858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 811, 0, 4003, 3813, 0, 0, 2583, 113, 4408, 0, 386, 4182, 0, 0, 142, + 1325, 0, 0, 3074, 2313, 1469, 0, 0, 0, 3369, 2485, 0, 0, 4129, 1512, 0, + 0, 0, 0, 0, 771, 0, 0, 0, 767, 0, 0, 0, 1664, 0, 1616, 0, 0, 2363, 0, + 0, 0, 0, 2513, 0, 496, 1054, 0, 2211, 0, 0, 0, 0, 0, 1986, 348, 0, 0, + 2203, 0, 2784, 1635, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 347, 3512, 0, + 0, 0, 1129, 4390, 0, 4273, 0, 0, 1171, 0, 0, 0, 114, 874, 4517, 0, 0, + 0, 0, 0, 0, 1747, 0, 0, 0, 0, 0, 4188, 0, 2430, 0, 0, 0, 0, 0, 0, 2788, + 0, 2921, 0, 0, 874, 0, 0, 0, 0, 0, 2047, 0, 1604, 0, 0, 3995, 2895, 0, + 0, 0, 0, 0, 2604, 0, 0, 1881, 0, 0, 0, 4253, 1024, 4228, 0, 0, 1914, + 4001, 1011, 1639, 0, 0, 0, 0, 0, 3540, 0, 0, 2461, 0, 0, 3833, 0, 0, + 2013, 0, 0, 0, 2245, 0, 3283, 2902, 2494, 0, 610, 1708, 0, 0, 0, 0, 0, + 2934, 4383, 0, 1636, 0, 0, 0, 0, 3355, 0, 1971, 482, 1599, 0, 3749, + 2152, 0, 0, 0, 0, 1097, 982, 3592, 2806, 0, 0, 0, 0, 173, 780, 0, 2659, + 3730, 0, 599, 361, 382, 0, 574, 571, 0, 158, 0, 0, 0, 4332, 654, 0, + 478, 2666, 0, 0, 4354, 0, 723, 745, 0, 2334, 0, 0, 0, 315, 0, 0, 0, + 2285, 0, 0, 0, 0, 0, 0, 0, 0, 190, 2779, 2749, 0, 0, 0, 0, 0, 2127, 0, + 0, 168, 0, 2437, 2837, 3502, 0, 0, 0, 0, 0, 0, 1849, 1598, 0, 4373, 0, + 1200, 0, 238, 3420, 0, 3178, 0, 1571, 372, 0, 0, 1495, 3121, 0, 4099, + 0, 3109, 0, 0, 0, 0, 0, 1373, 0, 4432, 0, 0, 3370, 3279, 0, 0, 2799, 0, + 0, 0, 0, 2953, 3278, 1971, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 1369, 2843, 0, + 989, 0, 358, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 964, 3811, 0, 0, 0, 0, + 1364, 0, 0, 344, 2501, 0, 0, 1167, 1318, 137, 0, 0, 0, 930, 0, 1340, + 1404, 873, 0, 0, 0, 0, 0, 391, 0, 2376, 3115, 2659, 1273, 2214, 0, + 1769, 0, 194, 0, 3009, 0, 0, 1100, 2540, 1308, 1729, 3882, 0, 0, 1925, + 0, 0, 0, 0, 3324, 3605, 1221, 0, 0, 0, 644, 4360, 4557, 0, 0, 0, 0, + 1224, 2656, 0, 4378, 4065, 0, 0, 0, 0, 0, 203, 0, 173, 0, 0, 0, 435, + 2916, 3546, 288, 0, 0, 0, 0, 0, 3744, 2681, 0, 0, 4396, 0, 0, 0, 3078, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 1523, 0, 0, 2313, 4347, 3320, 0, 0, + 3360, 566, 0, 88, 0, 0, 0, 0, 0, 2736, 0, 0, 4062, 0, 1939, 0, 2354, 0, + 4354, 4398, 0, 2328, 1976, 270, 0, 0, 2344, 1040, 0, 0, 3016, 4339, + 1220, 1136, 0, 1813, 0, 0, 990, 1892, 2453, 3252, 0, 2452, 2497, 2007, + 3329, 508, 0, 4500, 0, 0, 0, 0, 4293, 1207, 0, 719, 257, 0, 4532, 3884, + 2899, 2065, 967, 0, 0, 0, 4561, 0, 0, 1197, 0, 0, 0, 2578, 3109, 0, + 112, 0, 1923, 0, 809, 0, 4444, 3287, 0, 3693, 4508, 0, 0, 0, 0, 0, 0, + 0, 2024, 0, 0, 0, 0, 0, 2196, 0, 0, 0, 0, 3174, 3287, 0, 1813, 0, 0, + 3626, 2618, 2811, 0, 0, 0, 0, 910, 0, 1874, 0, 290, 1791, 0, 1291, 0, + 4027, 0, 3605, 0, 0, 0, 3275, 874, 3363, 0, 0, 1321, 0, 1500, 0, 0, + 4206, 2033, 4437, 2991, 0, 0, 0, 0, 4382, 3870, 1984, 0, 0, 0, 1096, 0, + 0, 4036, 0, 0, 3578, 1230, 0, 0, 2550, 0, 978, 3007, 0, 140, 0, 1157, + 0, 0, 0, 0, 0, 0, 4544, 4453, 0, 0, 0, 0, 504, 1136, 1395, 0, 0, 0, + 1736, 0, 2745, 952, 0, 0, 2650, 0, 0, 3808, 0, 0, 1148, 0, 0, 1821, + 622, 1626, 4464, 0, 0, 3930, 2404, 117, 0, 0, 10, 0, 2283, 1235, 4224, + 0, 0, 0, 0, 2917, 0, 0, 0, 2356, 0, 156, 1142, 0, 0, 0, 0, 1677, 0, + 3796, 3689, 602, 0, 0, 737, 0, 0, 1591, 0, 0, 0, 0, 408, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 3265, 0, 0, 0, 0, 621, 2329, 2059, 2850, 0, 0, 0, 0, + 40, 0, 0, 1095, 0, 743, 3541, 0, 0, 0, 3625, 4459, 1580, 4164, 1255, 0, + 0, 0, 1599, 0, 1036, 0, 0, 3438, 2656, 0, 0, 0, 1261, 224, 3600, 0, + 3943, 949, 2512, 0, 2796, 4233, 0, 1863, 0, 3283, 175, 0, 148, 0, 0, + 4320, 2004, 1503, 0, 0, 1438, 2823, 402, 1019, 0, 3343, 4216, 0, 0, + 2357, 0, 0, 0, 0, 1547, 0, 0, 3307, 0, 2347, 256, 0, 853, 0, 0, 0, + 1785, 0, 0, 0, 0, 1663, 0, 3095, 2419, 1711, 0, 4493, 0, 0, 1144, 0, 0, + 0, 1492, 370, 0, 0, 1007, 3167, 2813, 0, 562, 2721, 2083, 0, 2706, 0, + 0, 0, 0, 2937, 0, 0, 1876, 568, 0, 1859, 0, 0, 0, 0, 0, 3006, 3663, + 3429, 0, 1369, 0, 1599, 0, 0, 771, 1338, 0, 0, 0, 0, 0, 0, 2529, 0, 0, + 178, 2516, 0, 0, 2130, 2859, 1920, 0, 1992, 0, 4554, 0, 0, 0, 0, 0, + 2702, 4463, 688, 0, 0, 1500, 2711, 0, 0, 206, 3960, 0, 0, 0, 1051, + 4456, 1089, 0, 0, 712, 879, 621, 0, 0, 1353, 779, 0, 1075, 0, 1778, 0, + 1311, 3544, 0, 1373, 0, 0, 650, 0, 1475, 4297, 1100, 0, 343, 2758, + 1764, 0, 4163, 1327, 3569, 1363, 0, 2967, 0, 0, 137, 2277, 0, 0, 2411, + 0, 2685, 0, 2001, 948, 0, 159, 870, 1921, 1561, 0, 0, 2183, 0, 1004, 0, + 0, 0, 2363, 0, 0, 3473, 0, 0, 0, 2218, 0, 1021, 1919, 0, 0, 0, 0, 0, + 2324, 0, 1031, 0, 3739, 185, 0, 1932, 2109, 1363, 0, 0, 35, 2104, 1041, + 573, 0, 1518, 0, 0, 1515, 0, 0, 0, 2500, 1426, 1422, 0, 0, 2395, 706, + 0, 214, 889, 3801, 4108, 0, 0, 0, 2087, 0, 0, 2881, 1904, 2258, 0, 0, + 2408, 0, 454, 3224, 0, 0, 0, 0, 1337, 1509, 3638, 0, 0, 0, 3689, 0, 0, + 1774, 0, 0, 0, 0, 0, 1252, 1139, 0, 0, 0, 0, 75, 3651, 0, 1656, 0, + 1937, 0, 0, 4027, 0, 0, 0, 911, 1719, 0, 0, 3449, 0, 0, 0, 0, 4342, + 3593, 0, 0, 3476, 1690, 2585, 4484, 4479, 0, 0, 3932, 0, 3837, 3028, + 4047, 0, 705, 2616, 3782, 0, 0, 0, 108, 0, 0, 0, 1874, 1744, 0, 0, + 1147, 0, 0, 0, 166, 4277, 513, 0, 3623, 415, 0, 1574, 3753, 2473, 734, + 1129, 0, 0, 0, 0, 2241, 862, 0, 0, 0, 0, 2103, 1999, 2605, 821, 0, 0, + 0, 1653, 3756, 0, 0, 0, 2470, 0, 400, 2791, 717, 0, 154, 3490, 197, + 2675, 1405, 0, 2048, 0, 0, 1560, 4143, 4495, 0, 0, 0, 1299, 4554, 3847, + 0, 4308, 1560, 0, 3992, 0, 3209, 0, 452, 0, 2346, 0, 0, 225, 3030, 0, + 4370, 12, 239, 881, 0, 1561, 4251, 3310, 494, 0, 0, 232, 2509, 3198, 0, + 0, 0, 3390, 2956, 0, 1255, 0, 2148, 2692, 3865, 3864, 2586, 293, 0, + 4220, 4073, 0, 3423, 1262, 0, 1410, 2104, 0, 2074, 0, 0, 980, 0, 1684, + 1686, 0, 0, 429, 0, 358, 161, 0, 0, 0, 2029, 0, 2511, 817, 0, 3331, 0, + 1552, 0, 3380, 0, 0, 0, 3240, 0, 3499, 4041, 2450, 0, 0, 0, 0, 2214, + 787, 2906, 464, 1122, 3813, 0, 0, 2034, 0, 0, 0, 1037, 961, 0, 0, 3884, + 0, 0, 2764, 0, 0, 915, 0, 1417, 0, 6, 4134, 0, 2797, 1881, 259, 795, 0, + 15, 0, 2863, 0, 0, 0, 0, 0, 223, 720, 0, 1702, 0, 0, 0, 984, 1110, 0, + 547, 1906, 0, 0, 4286, 1875, 0, 0, 0, 1324, 0, 3589, 3911, 0, 0, 0, 0, + 2520, 844, 2801, 1149, 656, 0, 1837, 3441, 2127, 0, 0, 1325, 377, 1012, + 4280, 2404, 0, 1286, 0, 0, 0, 855, 0, 1793, 0, 4512, 2776, 2200, 2056, + 0, 2144, 1763, 0, 0, 549, 2475, 845, 1493, 0, 0, 306, 1398, 0, 0, 3775, + 0, 1451, 597, 2130, 0, 232, 2836, 957, 0, 619, 0, 2041, 0, 0, 295, 0, + 4361, 0, 2223, 0, 3727, 0, 0, 4294, 0, 33, 4397, 4511, 3626, 3329, 0, + 40, 0, 0, 0, 0, 478, 0, 0, 0, 2925, 0, 0, 3779, 1880, 0, 1556, 0, 1545, + 3249, 0, 0, 0, 1080, 0, 4112, 0, 3086, 46, 0, 0, 3165, 3414, 0, 0, 342, + 1885, 0, 0, 0, 0, 3071, 3404, 0, 0, 35, 0, 0, 0, 0, 857, 0, 627, 21, 0, + 0, 0, 0, 1021, 2099, 3483, 0, 0, 2693, 1014, 11, 0, 3352, 0, 3751, + 2476, 3014, 0, 1327, 974, 3502, 0, 611, 1838, 0, 4467, 2970, 1191, 474, + 0, 1366, 230, 1879, 3942, 0, 0, 0, 0, 1406, 0, 1304, 0, 0, 0, 277, + 3398, 0, 735, 165, 0, 0, 4185, 0, 3404, 0, 3821, 0, 0, 3450, 4161, 0, + 761, 0, 0, 0, 1807, 0, 0, 0, 0, 0, 0, 3962, 0, 0, 1833, 0, 1710, 0, + 1670, 2946, 1186, 56, 0, 533, 991, 246, 141, 0, 0, 0, 0, 687, 3830, 0, + 2495, 245, 0, 0, 2921, 2534, 706, 3729, 3941, 4335, 4295, 1671, 549, + 2015, 1777, 3057, 0, 1399, 1197, 2741, 4091, 0, 938, 0, 4322, 561, 0, + 527, 0, 481, 2496, 0, 0, 1771, 3444, 0, 2951, 0, 0, 0, 2244, 1013, 256, + 0, 1672, 0, 3115, 2720, 0, 1458, 0, 1476, 0, 2729, 0, 0, 1889, 2226, + 3945, 0, 1937, 0, 0, 0, 0, 4254, 1906, 4260, 2108, 0, 197, 4071, 2688, + 1691, 0, 0, 4467, 0, 1271, 0, 2029, 1625, 0, 0, 4259, 1222, 4139, 1497, + 0, 2919, 0, 86, 0, 0, 1685, 2585, 0, 1363, 0, 0, 0, 1548, 3807, 1891, + 4369, 774, 409, 4191, 0, 0, 3898, 1893, 4164, 765, 893, 1340, 0, 0, 0, + 4086, 2119, 173, 3518, 0, 0, 742, 0, 2059, 0, 0, 2955, 612, 0, 1660, + 4201, 2466, 485, 3476, 0, 945, 1441, 0, 3974, 0, 1551, 0, 664, 2978, 0, + 0, 1798, 2640, 0, 0, 0, 349, 0, 0, 3992, 0, 4168, 0, 0, 3294, 308, + 1332, 1191, 0, 0, 3821, 3969, 411, 1184, 0, 1417, 4191, 0, 4509, 881, + 593, 407, 1659, 0, 4237, 0, 1285, 2877, 2965, 3187, 0, 2725, 997, 530, + 2675, 0, 541, 4405, 1975, 0, 0, 2067, 801, 0, 0, 0, 0, 3746, 3215, + 3657, 0, 82, 0, 0, 0, 1624, 221, 0, 0, 2193, 483, 1281, 669, 2430, 0, + 1340, 4426, 0, 2419, 0, 2303, 0, 2691, 0, 305, 0, 0, 4276, 2246, 0, + 2533, 1139, 0, 626, 0, 9, 0, 2276, 2052, 178, 527, 2479, 2242, 762, + 212, 0, 860, 1718, 537, 0, 0, 1190, 4038, 1017, 0, 0, 0, 0, 1271, 0, 0, + 2261, 732, 4062, 2896, 4335, 1570, 3121, 0, 1791, 1798, 3642, 0, 125, + 3588, 2802, 0, 1162, 4276, 3536, 4314, 999, 0, 1518, 34, 0, 264, 4085, + 85, 4152, 2133, 1519, 1367, 0, 0, 3903, 420, 0, 2737, 490, 1704, 4389, + 0, 1631, 3809, 0, 1758, 0, 1162, 154, 980, 0, 0, 1188, 0, 0, 0, 1634, + 2486, 0, 0, 2972, 3280, 0, 0, 1909, 1386, 915, 2446, 0, 0, 0, 2371, 0, + 4499, 1915, 656, 2964, 4228, 0, 0, 0, 0, 910, 0, 0, 0, 1505, 3300, 0, + 2754, 2586, 2505, 3028, 135, 1124, 2602, 34, 2658, 1047, 885, 0, 0, 0, + 2117, 221, 2841, 153, 2240, 0, 3880, 0, 1101, 4095, 3147, 1757, 692, + 2280, 3049, 0, 2319, 1519, 0, 0, 0, 0, 4291, 4464, 164, 0, 1108, 4291, + 2707, 3843, 0, 0, 1160, 4318, 2473, 0, 4391, 0, 0, 0, 2743, 2146, 1050, + 0, 0, 0, 58, 191, 1754, 1704, 0, 0, 2581, 1920, 2443, 0, 3264, 0, 1379, + 0, 3933, 1049, 4127, 0, 2030, 0, 1363, 1411, 720, 945, 0, 367, 1312, 0, + 0, 0, 0, 1257, 2000, 0, 0, 260, 2860, 3118, 0, 85, 2600, 1842, 3727, + 554, 0, 0, 3763, 111, 0, 2993, 2128, 4103, 620, 0, 4018, 3867, 967, + 3281, 808, 482, 0, 2321, 0, 0, 943, 574, 256, 4177, 574, 0, 4048, 212, + 3917, 0, 4026, 0, 4161, 3004, 0, 3974, 0, 668, 426, 1194, 0, 0, 0, + 2099, 3538, 0, 1951, 0, 0, 0, 2892, 0, 0, 451, 0, 3417, 2937, 0, 0, + 2086, 0, 406, 0, 0, 0, 0, 4572, 1399, 3622, 894, 824, 195, 2309, 0, 0, + 2169, 0, 1898, 2616, 0, 626, 1848, 7, 0, 3290, 2404, 0, 3593, 0, 4205, + 1884, 0, 0, 3522, 1862, 2700, 0, 946, 2876, 1349, 0, 4208, 0, 0, 0, + 670, 0, 0, 0, 2742, 145, 776, 0, 63, 850, 781, 0, 0, 3548, 1898, 1220, + 490, 0, 875, 0, 0, 0, 520, 877, 1172, 1527, 0, 897, 0, 2415, 1127, 638, + 4329, 0, 523, 4283, 1165, 0, 15, 2321, 978, 0, 1307, 0, 816, 1025, + 3393, 0, 240, 145, 0, 3635, 3382, 2315, 3567, 3047, 0, 1752, 49, 4512, + 4482, 3417, 0, 0, 4282, 463, 4462, 0, 128, 0, 23, 4462, 836, 0, 1029, + 0, 2019, 0, 0, 2658, 0, 4525, 0, 3862, 0, 1577, 0, 0, 2372, 4416, 2195, + 0, 516, 0, 0, 551, 849, 1716, 2507, 522, 550, 0, 1543, 1983, 4223, + 3500, 0, 0, 1262, 502, 1512, 0, 0, 898, 292, 1236, 0, 0, 1004, 1963, + 1952, 0, 0, 287, 2341, 3718, 1251, 4119, 1321, 3407, 0, 0, 0, 0, 2423, + 251, 573, 3729, 4519, 1526, 4165, 2557, 0, 788, 0, 1448, 0, 0, 618, 0, + 850, 0, 161, 1350, 644, 853, 1374, 0, 1767, 1315, 1539, 596, 753, 0, + 467, 0, 4512, 970, 1730, 0, 0, 527, 3617, 2164, 2371, 0, 2418, 0, 0, + 2504, 405, 0, 3599, 1925, 0, 1064, 0, 370, 0, 4526, 325, 1972, 0, 3356, + 1134, 3930, 1318, 421, 2514, 2476, 638, 3571, 0, 0, 2142, 3054, 0, + 2064, 2541, 1652, 3622, 0, 823, 1941, 878, 1673, 0, 3435, 0, 0, 0, 661, + 3064, 0, 627, 0, 0, 0, 2359, 4291, 2531, 0, 4000, 0, 296, 0, 3074, 225, + 0, 0, 2491, 99, 0, 0, 0, 0, 0, 0, 695, 1499, 0, 0, 2403, 3941, 558, 0, + 0, 2265, 1068, 0, 845, 0, 0, 2485, 1864, 0, 1349, 598, 1415, 0, 544, 0, + 3472, 0, 392, 113, 3942, 3088, 1266, 1235, 0, 540, 169, 436, 4186, + 1878, 4206, 4094, 0, 662, 0, 2003, 2545, 3270, 708, 0, 0, 4359, 59, 0, + 2044, 1527, 4373, 0, 528, 736, 0, 0, 0, 1621, 1206, 4202, 0, 0, 2613, + 4059, 0, 844, 0, 2071, 0, 1126, 1719, 448, 3767, 2876, 1428, 925, 0, 0, + 2965, 1816, 64, 0, 0, 3750, 0, 0, 1995, 0, 0, 1647, 0, 0, 0, 755, 0, 0, + 0, 0, 0, 3336, 3374, 123, 0, 2172, 0, 0, 0, 2338, 519, 2630, 3573, 0, + 0, 1269, 2325, 0, 1935, 485, 0, 0, 2310, 2413, 4405, 2397, 1122, 1824, + 2055, 4062, 1449, 671, 412, 446, 4007, 286, 3846, 1387, 1978, 2443, + 534, 0, 1061, 2005, 2269, 597, 2272, 0, 0, 3738, 0, 0, 1562, 741, 0, 0, + 0, 0, 2349, 0, 2030, 0, 0, 0, 0, 0, 991, 0, 2416, 0, 2178, 1493, 0, + 2163, 0, 17, 1651, 1348, 4337, 2029, 0, 117, 1605, 0, 3444, 1965, 0, + 1776, 458, 397, 3063, 5, 4058, 535, 2807, 977, 314, 3613, 105, 3191, + 153, 4397, 2752, 1412, 4069, 0, 0, 0, 0, 1089, 0, 1968, 0, 768, 2132, + 0, 2582, 0, 0, 3753, 3512, 0, 909, 3256, 3999, 2436, 710, 0, 700, 248, + 4078, 4347, 1222, 3669, 0, 0, 882, 0, 0, 0, 0, 2293, 362, 81, 1667, + 3662, 2259, 0, 433, 4306, 3200, 0, 2445, 786, 3554, 0, 0, 0, 704, 0, + 2695, 3256, 3676, 881, 2107, 1637, 0, 778, 0, 2232, 1858, 1616, 2872, + 1467, 1545, 1613, 2512, 1587, 0, 1816, 4354, 1844, 0, 0, 3707, 3982, + 3115, 2408, 1957, 0, 0, 4180, 177, 0, 759, 2615, 0, 2657, 208, 286, 0, + 0, 0, 3075, 174, 1690, 2099, 0, 1345, 2018, 19, 1714, 0, 4440, 0, 3433, + 0, 2951, 3090, 0, 1572, 1834, 3590, 0, 0, 443, 0, 3912, 0, 3850, 0, + 497, 0, 2180, 2326, 1839, 0, 4155, 2871, 767, 0, 1249, 1687, 32, 4323, + 4213, 2276, 1015, 0, 0, 2246, 327, 3992, 580, 1752, 3376, 2986, 2046, + 2680, 0, 3862, 1306, 1087, 0, 50, 0, 0, 1553, 307, 0, 2332, 2418, 2474, + 0, 1160, 1935, 1511, 0, 2082, 1193, 0, 0, 4054, 0, 367, 0, 1201, 1052, + 0, 4550, 0, 1202, 1630, 0, 3705, 0, 0, 1923, 1124, 0, 508, 0, 2268, 0, + 1205, 977, 2839, 0, 1054, 577, 3807, 1596, 0, 0, 1252, 0, 2653, 805, + 2845, 942, 2231, 4007, 0, 2601, 277, 0, 1288, 1431, 0, 236, 3253, 0, + 544, 1633, 928, 1446, 3652, 2, 467, 555, 1602, 0, 1105, 0, 10, 163, 0, + 0, 1877, 0, 0, 0, 162, 1367, 4327, 0, 2915, 2460, 0, 0, 3361, 719, + 1406, 201, 0, 467, 0, 0, 4303, 3609, 1599, 330, 108, 316, 0, 0, 0, 0, + 2013, 18, 120, 1763, 3139, 0, 3485, 2025, 855, 0, 0, 572, 2308, 2496, + 4410, 1711, 0, 3226, 0, 543, 0, 1621, 76, 3210, 3215, 17, 384, 0, 3294, + 4505, 0, 0, 0, 1675, 1668, 1035, 0, 119, 0, 2789, 0, 3570, 4549, 98, + 204, 2275, 0, 0, 0, 1949, 0, 0, 717, 0, 0, 0, 0, 113, 202, 0, 1557, 0, + 1485, 840, 1002, 0, 0, 4427, 626, 4249, 0, 0, 2078, 165, 0, 929, 705, + 1441, 0, 0, 1210, 972, 2190, 0, 0, 0, 0, 1931, 869, 0, 3521, 1203, 346, + 0, 0, 0, 0, 0, 318, 1320, 667, 2715, 699, 1811, 0, 129, 813, 133, 1170, + 0, 2082, 97, 0, 3526, 326, 0, 3954, 0, 4154, 0, 4309, 2381, 3528, 0, + 30, 871, 4124, 4443, 2937, 0, 1725, 0, 0, 0, 2310, 455, 1619, 0, 1311, + 0, 1380, 0, 0, 1836, 0, 0, 1089, 2913, 4345, 246, 0, 26, 961, 0, 0, + 4157, 784, 0, 0, 2551, 3071, 485, 939, 2498, 0, 0, 0, 780, 4229, 1715, + 0, 0, 0, 0, 70, 347, 3277, 639, 0, 0, 1504, 583, 0, 3743, 1826, 0, 45, + 0, 0, 1008, 2163, 334, 1442, 0, 3030, 2537, 2051, 2729, 233, 3286, 0, + 2576, 937, 950, 0, 2733, 0, 330, 4489, 2811, 0, 0, 0, 4544, 744, 2276, + 0, 0, 1033, 203, 1114, 4197, 0, 0, 0, 0, 0, 2414, 295, 2339, 320, 1012, + 0, 0, 3831, 2284, 0, 0, 1032, 134, 1726, 0, 0, 0, 3449, 0, 0, 3858, + 191, 0, 1722, 790, 0, 2422, 0, 0, 1274, 0, 2270, 0, 0, 1010, 0, 0, 0, + 1282, 1284, 0, 449, 0, 3027, 193, 0, 2027, 0, 1373, 0, 980, 3570, 1766, + 1599, 4117, 167, 2021, 0, 2297, 471, 4085, 3018, 0, 335, 2835, 0, 2171, + 0, 1360, 0, 1099, 3721, 1043, 0, 0, 0, 475, 3827, 16, 0, 672, 3315, 0, + 4339, 0, 4427, 2223, 0, 0, 337, 0, 501, 229, 355, 85, 2613, 1226, 2295, + 2336, 105, 0, 4538, 1538, 0, 0, 0, 2782, 3838, 0, 648, 0, 3778, 0, 0, + 0, 0, 0, 0, 1336, 0, 0, 0, 2497, 743, 2249, 4081, 1023, 1864, 0, 3566, + 2420, 1134, 1465, 1353, 1077, 149, 1704, 1778, 0, 0, 3553, 2079, 3287, + 0, 0, 0, 1268, 599, 0, 0, 1112, 3816, 2411, 2535, 508, 0, 1829, 3311, + 4312, 660, 2714, 0, 1657, 1994, 82, 3885, 1442, 0, 3432, 4337, 2665, + 2778, 1687, 2522, 0, 1835, 1945, 1097, 682, 3420, 0, 0, 1450, 2138, + 1006, 1376, 1456, 226, 3999, 982, 1417, 3602, 1964, 1894, 1525, 2505, + 0, 4288, 0, 0, 2350, 441, 0, 0, 4083, 925, 3113, 310, 2991, 189, 1721, + 544, 4105, 4546, 3498, 3022, 978, 0, 2007, 0, 1107, 0, 2286, 0, 1037, + 0, 0, 0, 285, 0, 1559, 0, 0, 1728, 0, 0, 0, 284, 624, 263, 303, 1181, + 2548, 1546, 2138, 0, 3610, 4024, 720, 2156, 0, 0, 446, 0, 0, 0, 0, 747, + 0, 3594, 461, 3128, 505, 0, 67, 0, 2413, 0, 2775, 0, 0, 1780, 802, 0, + 0, 0, 401, 1834, 2278, 4251, 0, 0, 0, 413, 0, 3070, 1726, 0, 0, 475, 0, + 1857, 685, 2597, 981, 0, 0, 1655, 1180, 2228, 1253, 132, 63, 4266, + 3166, 78, 0, 2635, 1295, 344, 3971, 743, 1580, 320, 4562, 0, 4412, + 1166, 4460, 2660, 2264, 2579, 2733, 0, 2113, 3809, 2064, 1495, 0, 618, + 886, 0, 0, 0, 4410, 1989, 0, 3907, 1781, 0, 2385, 92, 330, 1729, 3966, + 1631, 4133, 2905, 2557, 3232, 0, 0, 0, 0, 0, 0, 291, 220, 3039, 465, 0, + 4496, 0, 315, 3140, 0, 781, 0, 0, 0, 0, 0, 1419, 325, 4515, 4243, 1209, + 2121, 0, 0, 2217, 2871, 417, 0, 0, 2310, 0, 2700, 4347, 1805, 1330, + 3905, 760, 3564, 0, 2297, 2413, 1603, 1234, 3139, 0, 3836, 1431, 833, + 1461, 146, 2173, 1111, 0, 1226, 1383, 0, 683, 2289, 783, 0, 0, 0, 0, + 2024, 2362, 0, 2822, 0, 2184, 3117, 2289, 2884, 3942, 0, 0, 1806, 2073, + 1039, 1332, 4148, 3602, 1500, 703, 0, 0, 0, 4304, 4271, 3563, 0, 214, + 27, 1267, 1882, 3233, 3015, 0, 0, 0, 0, 2139, 1571, 0, 0, 4364, 3885, + 3251, 0, 1662, 481, 9, 595, 0, 0, 1805, 0, 1783, 1270, 4365, 1375, 0, + 0, 0, 3269, 1077, 2763, 324, 0, 4353, 2358, 2675, 0, 1843, 0, 1649, + 333, 0, 0, 3961, 4484, 0, 0, 1368, 0, 3211, 4118, 4373, 3908, 1991, 0, + 2189, 1381, 0, 2168, 1463, 1308, 466, 145, 3355, 0, 0, 298, 298, 1183, + 0, 1145, 2060, 1516, 199, 0, 3088, 3607, 4408, 2304, 0, 2190, 2747, 0, + 474, 0, 0, 3078, 4275, 820, 876, 1004, 2364, 0, 0, 3908, 2394, 1474, + 2723, 1814, 2086, 294, 1788, 4408, 0, 2955, 3862, 912, 3296, 2130, 116, + 1388, 2762, 2870, 0, 165, 0, 1852, 2287, 0, 0, 489, 2160, 441, 0, 2625, + 349, 2280, 3030, 58, 0, 0, 4201, 0, 1229, 1760, 0, 4234, 791, 1053, + 1349, 1951, 0, 1694, 1742, 4365, 3099, 2439, 4373, 0, 413, 0, 0, 0, 0, + 3261, 1612, 0, 0, 3708, 1350, 252, 2326, 3770, 2427, 0, 1973, 3648, + 2213, 253, 2017, 1533, 2014, 0, 0, 0, 1254, 2047, 0, 285, 1208, 2385, + 0, 3284, 1586, 1396, 0, 0, 0, 1567, 1056, 0, 2370, 2208, 2196, 930, + 1787, 0, 0, 0, 101, 0, 4554, 589, 1093, 3184, 0, 1063, 2620, 0, 323, + 3160, 0, 1985, 2649, 0, 2950, 1670, 1932, 303, 630, 0, 1604, 0, 384, + 1160, 4004, 3476, 4046, 1701, 0, 1182, 0, 3666, 1562, 1622, 1384, 0, 0, + 0, 3622, 1340, 0, 3506, 2618, 2792, 1141, 1702, 4495, 2269, 0, 4344, + 2047, 0, 2506, 0, 604, 0, 1979, 1455, 148, 2255, 0, 1069, 0, 4532, 0, + 0, 3671, 265, 87, 0, 0, 4398, 4347, 1070, 970, 0, 1960, 3092, 943, 0, + 1007, 0, 2528, 2173, 313, 347, 1560, 946, 4204, 2101, 0, 991, 0, 2102, + 2053, 0, 680, 1979, 0, 1701, 0, 3621, 1556, 0, 331, 2707, 2448, 1240, + 4042, 1616, 0, 3662, 0, 0, 0, 53, 4001, 0, 3069, 1309, 1446, 304, 357, + 0, 3309, 2111, 3132, 264, 0, 103, 1400, 3319, 809, 2150, 2224, 0, 1528, + 1147, 1528, 2667, 0, 0, 415, 0, 175, 3613, 1402, 1905, 0, 803, 1744, + 2833, 804, 0, 0, 0, 0, 4466, 585, 2964, 1606, 3440, 297, 4247, 1275, 0, + 0, 0, 1508, 0, 2835, 3573, 0, 400, 0, 4481, 3301, 734, 1036, 823, 1398, + 706, 0, 0, 3880, 2284, 0, 0, 619, 0, 1317, 0, 0, 2219, 0, 4480, 628, + 983, 4502, 3011, 1487, 44, 0, 0, 30, 2527, 2246, 804, 0, 2016, 2001, + 1657, 0, 0, 1330, 739, 0, 0, 0, 0, 3978, 219, 974, 339, 3993, 2, 1118, + 1395, 2451, 3610, 1189, 2341, 53, 110, 2132, 4538, 4392, 393, 53, 2176, + 92, 2282, 0, 584, 885, 1401, 2282, 79, 1644, 0, 4316, 0, 4033, 0, 4235, + 3232, 2752, 0, 0, 2010, 2446, 0, 0, 4547, 0, 2203, 247, 4125, 0, 0, + 1261, 216, 0, 4138, 0, 0, 0, 0, 1637, 0, 0, 200, 750, 262, 0, 4510, 0, + 1506, 2069, 4241, 1589, 661, 0, 277, 3425, 1294, 14, 0, 1747, 2220, + 2297, 0, 0, 238, 0, 547, 476, 2223, 4221, 4355, 1385, 1724, 0, 0, 2139, + 1990, 902, 0, 1183, 18, 0, 1607, 0, 2513, 1427, 395, 975, 0, 3106, + 1756, 2038, 561, 0, 1217, 925, 158, 989, 4043, 0, 0, 0, 2342, 0, 2070, + 297, 457, 0, 3756, 451, 0, 4085, 0, 4111, 2184, 0, 0, 0, 3984, 373, 0, + 3175, 1178, 4351, 1137, 2453, 1709, 1594, 4546, 3060, 0, 1834, 3303, 0, + 1327, 1177, 553, 404, 4148, 1271, 0, 603, 0, 0, 1541, 0, 2530, 0, 0, + 2593, 1055, 0, 2346, 0, 424, 2332, 0, 1654, 0, 2249, 466, 1189, 700, + 4013, 852, 126, 1203, 221, 852, 667, 350, 0, 758, 4008, 0, 4389, 854, + 2392, 0, 2277, 782, 1516, 0, 2643, 766, 1171, 137, 3759, 733, 981, 0, + 0, 1208, 1949, 2894, 0, 1871, 4499, 0, 1179, 0, 263, 414, 3460, 3873, + 131, 1836, 528, 0, 0, 2185, 0, 2149, 0, 0, 1688, 1626, 4532, 0, 4415, + 0, 4262, 0, 0, 1962, 0, 0, 453, 2195, 3045, 648, 3824, 1109, 2294, + 3776, 0, 1433, 3623, 761, 2010, 0, 2049, 496, 0, 2094, 4421, 0, 420, 0, + 0, 90, 0, 0, 485, 0, 0, 2499, 1177, 0, 0, 4511, 2369, 1523, 0, 0, 3755, + 2071 +}; + +static size_t +keysym_name_hash_f(const char *key, const char *T) +{ + size_t sum = 0; + for (size_t i = 0; key[i] != '\0'; i++) + sum += T[i % 32] * key[i]; + return sum % 4573; +} + +static size_t +keysym_name_perfect_hash(const char *key) +{ + return ( + keysym_name_G[keysym_name_hash_f(key, "xQ6s5AweQcmhYSjcMnXcbUZV5VlaPl27")] + + keysym_name_G[keysym_name_hash_f(key, "rCH1UKEZTzn9hlnUvX76Sw7VmrLuST7A")] + ) % 4573; +} + + struct name_keysym { xkb_keysym_t keysym; uint32_t offset; @@ -3033,1832 +3492,1974 @@ static const struct name_keysym name_to_keysym[] = { { 0x0000ff37, 8654 }, /* Codeinput */ { 0x0000003a, 8664 }, /* colon */ { 0x010020a1, 8670 }, /* ColonSign */ - { 0x0000002c, 8680 }, /* comma */ - { 0x0100220b, 8686 }, /* containsas */ - { 0x0000ffe3, 8697 }, /* Control_L */ - { 0x0000ffe4, 8707 }, /* Control_R */ - { 0x000000a9, 8717 }, /* copyright */ - { 0x000009e4, 8727 }, /* cr */ - { 0x000009ee, 8730 }, /* crossinglines */ - { 0x010020a2, 8744 }, /* CruzeiroSign */ - { 0x0100221b, 8757 }, /* cuberoot */ - { 0x000000a4, 8766 }, /* currency */ - { 0x00000aff, 8775 }, /* cursor */ - { 0x000006c1, 8782 }, /* Cyrillic_a */ - { 0x000006e1, 8793 }, /* Cyrillic_A */ - { 0x000006c2, 8804 }, /* Cyrillic_be */ - { 0x000006e2, 8816 }, /* Cyrillic_BE */ - { 0x000006de, 8828 }, /* Cyrillic_che */ - { 0x000006fe, 8841 }, /* Cyrillic_CHE */ - { 0x010004b6, 8854 }, /* Cyrillic_CHE_descender */ - { 0x010004b7, 8877 }, /* Cyrillic_che_descender */ - { 0x010004b8, 8900 }, /* Cyrillic_CHE_vertstroke */ - { 0x010004b9, 8924 }, /* Cyrillic_che_vertstroke */ - { 0x000006c4, 8948 }, /* Cyrillic_de */ - { 0x000006e4, 8960 }, /* Cyrillic_DE */ - { 0x000006af, 8972 }, /* Cyrillic_dzhe */ - { 0x000006bf, 8986 }, /* Cyrillic_DZHE */ - { 0x000006dc, 9000 }, /* Cyrillic_e */ - { 0x000006fc, 9011 }, /* Cyrillic_E */ - { 0x000006c6, 9022 }, /* Cyrillic_ef */ - { 0x000006e6, 9034 }, /* Cyrillic_EF */ - { 0x000006cc, 9046 }, /* Cyrillic_el */ - { 0x000006ec, 9058 }, /* Cyrillic_EL */ - { 0x000006cd, 9070 }, /* Cyrillic_em */ - { 0x000006ed, 9082 }, /* Cyrillic_EM */ - { 0x000006ce, 9094 }, /* Cyrillic_en */ - { 0x000006ee, 9106 }, /* Cyrillic_EN */ - { 0x010004a2, 9118 }, /* Cyrillic_EN_descender */ - { 0x010004a3, 9140 }, /* Cyrillic_en_descender */ - { 0x000006d2, 9162 }, /* Cyrillic_er */ - { 0x000006f2, 9174 }, /* Cyrillic_ER */ - { 0x000006d3, 9186 }, /* Cyrillic_es */ - { 0x000006f3, 9198 }, /* Cyrillic_ES */ - { 0x000006c7, 9210 }, /* Cyrillic_ghe */ - { 0x000006e7, 9223 }, /* Cyrillic_GHE */ - { 0x01000492, 9236 }, /* Cyrillic_GHE_bar */ - { 0x01000493, 9253 }, /* Cyrillic_ghe_bar */ - { 0x000006c8, 9270 }, /* Cyrillic_ha */ - { 0x000006e8, 9282 }, /* Cyrillic_HA */ - { 0x010004b2, 9294 }, /* Cyrillic_HA_descender */ - { 0x010004b3, 9316 }, /* Cyrillic_ha_descender */ - { 0x000006df, 9338 }, /* Cyrillic_hardsign */ - { 0x000006ff, 9356 }, /* Cyrillic_HARDSIGN */ - { 0x000006c9, 9374 }, /* Cyrillic_i */ - { 0x000006e9, 9385 }, /* Cyrillic_I */ - { 0x010004e2, 9396 }, /* Cyrillic_I_macron */ - { 0x010004e3, 9414 }, /* Cyrillic_i_macron */ - { 0x000006c5, 9432 }, /* Cyrillic_ie */ - { 0x000006e5, 9444 }, /* Cyrillic_IE */ - { 0x000006a3, 9456 }, /* Cyrillic_io */ - { 0x000006b3, 9468 }, /* Cyrillic_IO */ - { 0x000006a8, 9480 }, /* Cyrillic_je */ - { 0x000006b8, 9492 }, /* Cyrillic_JE */ - { 0x000006cb, 9504 }, /* Cyrillic_ka */ - { 0x000006eb, 9516 }, /* Cyrillic_KA */ - { 0x0100049a, 9528 }, /* Cyrillic_KA_descender */ - { 0x0100049b, 9550 }, /* Cyrillic_ka_descender */ - { 0x0100049c, 9572 }, /* Cyrillic_KA_vertstroke */ - { 0x0100049d, 9595 }, /* Cyrillic_ka_vertstroke */ - { 0x000006a9, 9618 }, /* Cyrillic_lje */ - { 0x000006b9, 9631 }, /* Cyrillic_LJE */ - { 0x000006aa, 9644 }, /* Cyrillic_nje */ - { 0x000006ba, 9657 }, /* Cyrillic_NJE */ - { 0x000006cf, 9670 }, /* Cyrillic_o */ - { 0x000006ef, 9681 }, /* Cyrillic_O */ - { 0x010004e8, 9692 }, /* Cyrillic_O_bar */ - { 0x010004e9, 9707 }, /* Cyrillic_o_bar */ - { 0x000006d0, 9722 }, /* Cyrillic_pe */ - { 0x000006f0, 9734 }, /* Cyrillic_PE */ - { 0x010004d8, 9746 }, /* Cyrillic_SCHWA */ - { 0x010004d9, 9761 }, /* Cyrillic_schwa */ - { 0x000006db, 9776 }, /* Cyrillic_sha */ - { 0x000006fb, 9789 }, /* Cyrillic_SHA */ - { 0x000006dd, 9802 }, /* Cyrillic_shcha */ - { 0x000006fd, 9817 }, /* Cyrillic_SHCHA */ - { 0x010004ba, 9832 }, /* Cyrillic_SHHA */ - { 0x010004bb, 9846 }, /* Cyrillic_shha */ - { 0x000006ca, 9860 }, /* Cyrillic_shorti */ - { 0x000006ea, 9876 }, /* Cyrillic_SHORTI */ - { 0x000006d8, 9892 }, /* Cyrillic_softsign */ - { 0x000006f8, 9910 }, /* Cyrillic_SOFTSIGN */ - { 0x000006d4, 9928 }, /* Cyrillic_te */ - { 0x000006f4, 9940 }, /* Cyrillic_TE */ - { 0x000006c3, 9952 }, /* Cyrillic_tse */ - { 0x000006e3, 9965 }, /* Cyrillic_TSE */ - { 0x000006d5, 9978 }, /* Cyrillic_u */ - { 0x000006f5, 9989 }, /* Cyrillic_U */ - { 0x010004ee, 10000 }, /* Cyrillic_U_macron */ - { 0x010004ef, 10018 }, /* Cyrillic_u_macron */ - { 0x010004ae, 10036 }, /* Cyrillic_U_straight */ - { 0x010004af, 10056 }, /* Cyrillic_u_straight */ - { 0x010004b0, 10076 }, /* Cyrillic_U_straight_bar */ - { 0x010004b1, 10100 }, /* Cyrillic_u_straight_bar */ - { 0x000006d7, 10124 }, /* Cyrillic_ve */ - { 0x000006f7, 10136 }, /* Cyrillic_VE */ - { 0x000006d1, 10148 }, /* Cyrillic_ya */ - { 0x000006f1, 10160 }, /* Cyrillic_YA */ - { 0x000006d9, 10172 }, /* Cyrillic_yeru */ - { 0x000006f9, 10186 }, /* Cyrillic_YERU */ - { 0x000006c0, 10200 }, /* Cyrillic_yu */ - { 0x000006e0, 10212 }, /* Cyrillic_YU */ - { 0x000006da, 10224 }, /* Cyrillic_ze */ - { 0x000006fa, 10236 }, /* Cyrillic_ZE */ - { 0x000006d6, 10248 }, /* Cyrillic_zhe */ - { 0x000006f6, 10261 }, /* Cyrillic_ZHE */ - { 0x01000496, 10274 }, /* Cyrillic_ZHE_descender */ - { 0x01000497, 10297 }, /* Cyrillic_zhe_descender */ - { 0x00000044, 10320 }, /* D */ - { 0x00000064, 10322 }, /* d */ - { 0x01001e0a, 10324 }, /* Dabovedot */ - { 0x01001e0b, 10334 }, /* dabovedot */ - { 0x1000fe27, 10344 }, /* Dacute_accent */ - { 0x00000af1, 10358 }, /* dagger */ - { 0x000001cf, 10365 }, /* Dcaron */ - { 0x000001ef, 10372 }, /* dcaron */ - { 0x1000fe2c, 10379 }, /* Dcedilla_accent */ - { 0x1000fe5e, 10395 }, /* Dcircumflex_accent */ - { 0x1000fe22, 10414 }, /* Ddiaeresis */ - { 0x0000fe80, 10425 }, /* dead_a */ - { 0x0000fe81, 10432 }, /* dead_A */ - { 0x0000fe64, 10439 }, /* dead_abovecomma */ - { 0x0000fe56, 10455 }, /* dead_abovedot */ - { 0x0000fe65, 10469 }, /* dead_abovereversedcomma */ - { 0x0000fe58, 10493 }, /* dead_abovering */ - { 0x0000fe91, 10508 }, /* dead_aboveverticalline */ - { 0x0000fe51, 10531 }, /* dead_acute */ - { 0x0000fe6b, 10542 }, /* dead_belowbreve */ - { 0x0000fe69, 10558 }, /* dead_belowcircumflex */ - { 0x0000fe6e, 10579 }, /* dead_belowcomma */ - { 0x0000fe6c, 10595 }, /* dead_belowdiaeresis */ - { 0x0000fe60, 10615 }, /* dead_belowdot */ - { 0x0000fe68, 10629 }, /* dead_belowmacron */ - { 0x0000fe67, 10646 }, /* dead_belowring */ - { 0x0000fe6a, 10661 }, /* dead_belowtilde */ - { 0x0000fe92, 10677 }, /* dead_belowverticalline */ - { 0x0000fe55, 10700 }, /* dead_breve */ - { 0x0000fe8b, 10711 }, /* dead_capital_schwa */ - { 0x0000fe5a, 10730 }, /* dead_caron */ - { 0x0000fe5b, 10741 }, /* dead_cedilla */ - { 0x0000fe52, 10754 }, /* dead_circumflex */ - { 0x0000fe6f, 10770 }, /* dead_currency */ - { 0x0000fe65, 10784 }, /* dead_dasia */ - { 0x0000fe57, 10795 }, /* dead_diaeresis */ - { 0x0000fe59, 10810 }, /* dead_doubleacute */ - { 0x0000fe66, 10827 }, /* dead_doublegrave */ - { 0x0000fe82, 10844 }, /* dead_e */ - { 0x0000fe83, 10851 }, /* dead_E */ - { 0x0000fe50, 10858 }, /* dead_grave */ - { 0x0000fe8c, 10869 }, /* dead_greek */ - { 0x0000fe61, 10880 }, /* dead_hook */ - { 0x0000fe62, 10890 }, /* dead_horn */ - { 0x0000fe84, 10900 }, /* dead_i */ - { 0x0000fe85, 10907 }, /* dead_I */ - { 0x0000fe6d, 10914 }, /* dead_invertedbreve */ - { 0x0000fe5d, 10933 }, /* dead_iota */ - { 0x0000fe93, 10943 }, /* dead_longsolidusoverlay */ - { 0x0000fe90, 10967 }, /* dead_lowline */ - { 0x0000fe54, 10980 }, /* dead_macron */ - { 0x0000fe86, 10992 }, /* dead_o */ - { 0x0000fe87, 10999 }, /* dead_O */ - { 0x0000fe5c, 11006 }, /* dead_ogonek */ - { 0x0000fe53, 11018 }, /* dead_perispomeni */ - { 0x0000fe64, 11035 }, /* dead_psili */ - { 0x0000fe5f, 11046 }, /* dead_semivoiced_sound */ - { 0x0000fe8a, 11068 }, /* dead_small_schwa */ - { 0x0000fe63, 11085 }, /* dead_stroke */ - { 0x0000fe53, 11097 }, /* dead_tilde */ - { 0x0000fe88, 11108 }, /* dead_u */ - { 0x0000fe89, 11115 }, /* dead_U */ - { 0x0000fe5e, 11122 }, /* dead_voiced_sound */ - { 0x00000abd, 11140 }, /* decimalpoint */ - { 0x000000b0, 11153 }, /* degree */ - { 0x0000ffff, 11160 }, /* Delete */ - { 0x1000ff73, 11167 }, /* DeleteChar */ - { 0x1000ff71, 11178 }, /* DeleteLine */ - { 0x1000fe60, 11189 }, /* Dgrave_accent */ - { 0x000000a8, 11203 }, /* diaeresis */ - { 0x00000aed, 11213 }, /* diamond */ - { 0x00000aa5, 11221 }, /* digitspace */ - { 0x0100222c, 11232 }, /* dintegral */ - { 0x000000f7, 11242 }, /* division */ - { 0x00000024, 11251 }, /* dollar */ - { 0x010020ab, 11258 }, /* DongSign */ - { 0x00000aaf, 11267 }, /* doubbaselinedot */ - { 0x000001bd, 11283 }, /* doubleacute */ - { 0x00000af2, 11295 }, /* doubledagger */ - { 0x00000afe, 11308 }, /* doublelowquotemark */ - { 0x0000ff54, 11327 }, /* Down */ - { 0x000008fe, 11332 }, /* downarrow */ - { 0x00000ba8, 11342 }, /* downcaret */ - { 0x00000bd6, 11352 }, /* downshoe */ - { 0x00000bc4, 11361 }, /* downstile */ - { 0x00000bc2, 11371 }, /* downtack */ - { 0x1000ff00, 11380 }, /* DRemove */ - { 0x1000feb0, 11388 }, /* Dring_accent */ - { 0x000001d0, 11401 }, /* Dstroke */ - { 0x000001f0, 11409 }, /* dstroke */ - { 0x1000fe7e, 11417 }, /* Dtilde */ - { 0x00000045, 11424 }, /* E */ - { 0x00000065, 11426 }, /* e */ - { 0x000003cc, 11428 }, /* Eabovedot */ - { 0x000003ec, 11438 }, /* eabovedot */ - { 0x000000c9, 11448 }, /* Eacute */ - { 0x000000e9, 11455 }, /* eacute */ - { 0x01001eb8, 11462 }, /* Ebelowdot */ - { 0x01001eb9, 11472 }, /* ebelowdot */ - { 0x000001cc, 11482 }, /* Ecaron */ - { 0x000001ec, 11489 }, /* ecaron */ - { 0x000000ca, 11496 }, /* Ecircumflex */ - { 0x000000ea, 11508 }, /* ecircumflex */ - { 0x01001ebe, 11520 }, /* Ecircumflexacute */ - { 0x01001ebf, 11537 }, /* ecircumflexacute */ - { 0x01001ec6, 11554 }, /* Ecircumflexbelowdot */ - { 0x01001ec7, 11574 }, /* ecircumflexbelowdot */ - { 0x01001ec0, 11594 }, /* Ecircumflexgrave */ - { 0x01001ec1, 11611 }, /* ecircumflexgrave */ - { 0x01001ec2, 11628 }, /* Ecircumflexhook */ - { 0x01001ec3, 11644 }, /* ecircumflexhook */ - { 0x01001ec4, 11660 }, /* Ecircumflextilde */ - { 0x01001ec5, 11677 }, /* ecircumflextilde */ - { 0x010020a0, 11694 }, /* EcuSign */ - { 0x000000cb, 11702 }, /* Ediaeresis */ - { 0x000000eb, 11713 }, /* ediaeresis */ - { 0x000000c8, 11724 }, /* Egrave */ - { 0x000000e8, 11731 }, /* egrave */ - { 0x01001eba, 11738 }, /* Ehook */ - { 0x01001ebb, 11744 }, /* ehook */ - { 0x01002088, 11750 }, /* eightsubscript */ - { 0x01002078, 11765 }, /* eightsuperior */ - { 0x0000ff2f, 11779 }, /* Eisu_Shift */ - { 0x0000ff30, 11790 }, /* Eisu_toggle */ - { 0x01002208, 11802 }, /* elementof */ - { 0x00000aae, 11812 }, /* ellipsis */ - { 0x00000aa3, 11821 }, /* em3space */ - { 0x00000aa4, 11830 }, /* em4space */ - { 0x000003aa, 11839 }, /* Emacron */ - { 0x000003ba, 11847 }, /* emacron */ - { 0x00000aa9, 11855 }, /* emdash */ - { 0x00000ade, 11862 }, /* emfilledcircle */ - { 0x00000adf, 11877 }, /* emfilledrect */ - { 0x00000ace, 11890 }, /* emopencircle */ - { 0x00000acf, 11903 }, /* emopenrectangle */ - { 0x01002205, 11919 }, /* emptyset */ - { 0x00000aa1, 11928 }, /* emspace */ - { 0x0000ff57, 11936 }, /* End */ - { 0x00000aaa, 11940 }, /* endash */ - { 0x00000ae6, 11947 }, /* enfilledcircbullet */ - { 0x00000ae7, 11966 }, /* enfilledsqbullet */ - { 0x000003bd, 11983 }, /* ENG */ - { 0x000003bf, 11987 }, /* eng */ - { 0x00000ae0, 11991 }, /* enopencircbullet */ - { 0x00000ae1, 12008 }, /* enopensquarebullet */ - { 0x00000aa2, 12027 }, /* enspace */ - { 0x000001ca, 12035 }, /* Eogonek */ - { 0x000001ea, 12043 }, /* eogonek */ - { 0x0000003d, 12051 }, /* equal */ - { 0x0000ff1b, 12057 }, /* Escape */ - { 0x000000d0, 12064 }, /* ETH */ - { 0x000000d0, 12068 }, /* Eth */ - { 0x000000f0, 12072 }, /* eth */ - { 0x01001ebc, 12076 }, /* Etilde */ - { 0x01001ebd, 12083 }, /* etilde */ - { 0x000020ac, 12090 }, /* EuroSign */ - { 0x00000021, 12099 }, /* exclam */ - { 0x000000a1, 12106 }, /* exclamdown */ - { 0x0000ff62, 12117 }, /* Execute */ - { 0x1000ff76, 12125 }, /* Ext16bit_L */ - { 0x1000ff77, 12136 }, /* Ext16bit_R */ - { 0x010001b7, 12147 }, /* EZH */ - { 0x01000292, 12151 }, /* ezh */ - { 0x00000046, 12155 }, /* F */ - { 0x00000066, 12157 }, /* f */ - { 0x0000ffbe, 12159 }, /* F1 */ - { 0x0000ffc7, 12162 }, /* F10 */ - { 0x0000ffc8, 12166 }, /* F11 */ - { 0x0000ffc9, 12170 }, /* F12 */ - { 0x0000ffca, 12174 }, /* F13 */ - { 0x0000ffcb, 12178 }, /* F14 */ - { 0x0000ffcc, 12182 }, /* F15 */ - { 0x0000ffcd, 12186 }, /* F16 */ - { 0x0000ffce, 12190 }, /* F17 */ - { 0x0000ffcf, 12194 }, /* F18 */ - { 0x0000ffd0, 12198 }, /* F19 */ - { 0x0000ffbf, 12202 }, /* F2 */ - { 0x0000ffd1, 12205 }, /* F20 */ - { 0x0000ffd2, 12209 }, /* F21 */ - { 0x0000ffd3, 12213 }, /* F22 */ - { 0x0000ffd4, 12217 }, /* F23 */ - { 0x0000ffd5, 12221 }, /* F24 */ - { 0x0000ffd6, 12225 }, /* F25 */ - { 0x0000ffd7, 12229 }, /* F26 */ - { 0x0000ffd8, 12233 }, /* F27 */ - { 0x0000ffd9, 12237 }, /* F28 */ - { 0x0000ffda, 12241 }, /* F29 */ - { 0x0000ffc0, 12245 }, /* F3 */ - { 0x0000ffdb, 12248 }, /* F30 */ - { 0x0000ffdc, 12252 }, /* F31 */ - { 0x0000ffdd, 12256 }, /* F32 */ - { 0x0000ffde, 12260 }, /* F33 */ - { 0x0000ffdf, 12264 }, /* F34 */ - { 0x0000ffe0, 12268 }, /* F35 */ - { 0x0000ffc1, 12272 }, /* F4 */ - { 0x0000ffc2, 12275 }, /* F5 */ - { 0x0000ffc3, 12278 }, /* F6 */ - { 0x0000ffc4, 12281 }, /* F7 */ - { 0x0000ffc5, 12284 }, /* F8 */ - { 0x0000ffc6, 12287 }, /* F9 */ - { 0x01001e1e, 12290 }, /* Fabovedot */ - { 0x01001e1f, 12300 }, /* fabovedot */ - { 0x010006f0, 12310 }, /* Farsi_0 */ - { 0x010006f1, 12318 }, /* Farsi_1 */ - { 0x010006f2, 12326 }, /* Farsi_2 */ - { 0x010006f3, 12334 }, /* Farsi_3 */ - { 0x010006f4, 12342 }, /* Farsi_4 */ - { 0x010006f5, 12350 }, /* Farsi_5 */ - { 0x010006f6, 12358 }, /* Farsi_6 */ - { 0x010006f7, 12366 }, /* Farsi_7 */ - { 0x010006f8, 12374 }, /* Farsi_8 */ - { 0x010006f9, 12382 }, /* Farsi_9 */ - { 0x010006cc, 12390 }, /* Farsi_yeh */ - { 0x00000af8, 12400 }, /* femalesymbol */ - { 0x000009e3, 12413 }, /* ff */ - { 0x010020a3, 12416 }, /* FFrancSign */ - { 0x00000abb, 12427 }, /* figdash */ - { 0x00000adc, 12435 }, /* filledlefttribullet */ - { 0x00000adb, 12455 }, /* filledrectbullet */ - { 0x00000add, 12472 }, /* filledrighttribullet */ - { 0x00000ae9, 12493 }, /* filledtribulletdown */ - { 0x00000ae8, 12513 }, /* filledtribulletup */ - { 0x0000ff68, 12531 }, /* Find */ - { 0x0000fed0, 12536 }, /* First_Virtual_Screen */ - { 0x00000ac5, 12557 }, /* fiveeighths */ - { 0x00000ab7, 12569 }, /* fivesixths */ - { 0x01002085, 12580 }, /* fivesubscript */ - { 0x01002075, 12594 }, /* fivesuperior */ - { 0x00000ab5, 12607 }, /* fourfifths */ - { 0x01002084, 12618 }, /* foursubscript */ - { 0x01002074, 12632 }, /* foursuperior */ - { 0x0100221c, 12645 }, /* fourthroot */ - { 0x000008f6, 12656 }, /* function */ - { 0x00000047, 12665 }, /* G */ - { 0x00000067, 12667 }, /* g */ - { 0x000002d5, 12669 }, /* Gabovedot */ - { 0x000002f5, 12679 }, /* gabovedot */ - { 0x000002ab, 12689 }, /* Gbreve */ - { 0x000002bb, 12696 }, /* gbreve */ - { 0x010001e6, 12703 }, /* Gcaron */ - { 0x010001e7, 12710 }, /* gcaron */ - { 0x000003ab, 12717 }, /* Gcedilla */ - { 0x000003bb, 12726 }, /* gcedilla */ - { 0x000002d8, 12735 }, /* Gcircumflex */ - { 0x000002f8, 12747 }, /* gcircumflex */ - { 0x010010d0, 12759 }, /* Georgian_an */ - { 0x010010d1, 12771 }, /* Georgian_ban */ - { 0x010010ea, 12784 }, /* Georgian_can */ - { 0x010010ed, 12797 }, /* Georgian_char */ - { 0x010010e9, 12811 }, /* Georgian_chin */ - { 0x010010ec, 12825 }, /* Georgian_cil */ - { 0x010010d3, 12838 }, /* Georgian_don */ - { 0x010010d4, 12851 }, /* Georgian_en */ - { 0x010010f6, 12863 }, /* Georgian_fi */ - { 0x010010d2, 12875 }, /* Georgian_gan */ - { 0x010010e6, 12888 }, /* Georgian_ghan */ - { 0x010010f0, 12902 }, /* Georgian_hae */ - { 0x010010f4, 12915 }, /* Georgian_har */ - { 0x010010f1, 12928 }, /* Georgian_he */ - { 0x010010f2, 12940 }, /* Georgian_hie */ - { 0x010010f5, 12953 }, /* Georgian_hoe */ - { 0x010010d8, 12966 }, /* Georgian_in */ - { 0x010010ef, 12978 }, /* Georgian_jhan */ - { 0x010010eb, 12992 }, /* Georgian_jil */ - { 0x010010d9, 13005 }, /* Georgian_kan */ - { 0x010010e5, 13018 }, /* Georgian_khar */ - { 0x010010da, 13032 }, /* Georgian_las */ - { 0x010010db, 13045 }, /* Georgian_man */ - { 0x010010dc, 13058 }, /* Georgian_nar */ - { 0x010010dd, 13071 }, /* Georgian_on */ - { 0x010010de, 13083 }, /* Georgian_par */ - { 0x010010e4, 13096 }, /* Georgian_phar */ - { 0x010010e7, 13110 }, /* Georgian_qar */ - { 0x010010e0, 13123 }, /* Georgian_rae */ - { 0x010010e1, 13136 }, /* Georgian_san */ - { 0x010010e8, 13149 }, /* Georgian_shin */ - { 0x010010d7, 13163 }, /* Georgian_tan */ - { 0x010010e2, 13176 }, /* Georgian_tar */ - { 0x010010e3, 13189 }, /* Georgian_un */ - { 0x010010d5, 13201 }, /* Georgian_vin */ - { 0x010010f3, 13214 }, /* Georgian_we */ - { 0x010010ee, 13226 }, /* Georgian_xan */ - { 0x010010d6, 13239 }, /* Georgian_zen */ - { 0x010010df, 13252 }, /* Georgian_zhar */ - { 0x00000060, 13266 }, /* grave */ - { 0x0000003e, 13272 }, /* greater */ - { 0x000008be, 13280 }, /* greaterthanequal */ - { 0x000007ae, 13297 }, /* Greek_accentdieresis */ - { 0x000007c1, 13318 }, /* Greek_ALPHA */ - { 0x000007e1, 13330 }, /* Greek_alpha */ - { 0x000007a1, 13342 }, /* Greek_ALPHAaccent */ - { 0x000007b1, 13360 }, /* Greek_alphaaccent */ - { 0x000007c2, 13378 }, /* Greek_BETA */ - { 0x000007e2, 13389 }, /* Greek_beta */ - { 0x000007d7, 13400 }, /* Greek_CHI */ - { 0x000007f7, 13410 }, /* Greek_chi */ - { 0x000007c4, 13420 }, /* Greek_DELTA */ - { 0x000007e4, 13432 }, /* Greek_delta */ - { 0x000007c5, 13444 }, /* Greek_EPSILON */ - { 0x000007e5, 13458 }, /* Greek_epsilon */ - { 0x000007a2, 13472 }, /* Greek_EPSILONaccent */ - { 0x000007b2, 13492 }, /* Greek_epsilonaccent */ - { 0x000007c7, 13512 }, /* Greek_ETA */ - { 0x000007e7, 13522 }, /* Greek_eta */ - { 0x000007a3, 13532 }, /* Greek_ETAaccent */ - { 0x000007b3, 13548 }, /* Greek_etaaccent */ - { 0x000007f3, 13564 }, /* Greek_finalsmallsigma */ - { 0x000007c3, 13586 }, /* Greek_GAMMA */ - { 0x000007e3, 13598 }, /* Greek_gamma */ - { 0x000007af, 13610 }, /* Greek_horizbar */ - { 0x000007c9, 13625 }, /* Greek_IOTA */ - { 0x000007e9, 13636 }, /* Greek_iota */ - { 0x000007a4, 13647 }, /* Greek_IOTAaccent */ - { 0x000007b4, 13664 }, /* Greek_iotaaccent */ - { 0x000007b6, 13681 }, /* Greek_iotaaccentdieresis */ - { 0x000007a5, 13706 }, /* Greek_IOTAdiaeresis */ - { 0x000007a5, 13726 }, /* Greek_IOTAdieresis */ - { 0x000007b5, 13745 }, /* Greek_iotadieresis */ - { 0x000007ca, 13764 }, /* Greek_KAPPA */ - { 0x000007ea, 13776 }, /* Greek_kappa */ - { 0x000007cb, 13788 }, /* Greek_LAMBDA */ - { 0x000007eb, 13801 }, /* Greek_lambda */ - { 0x000007cb, 13814 }, /* Greek_LAMDA */ - { 0x000007eb, 13826 }, /* Greek_lamda */ - { 0x000007cc, 13838 }, /* Greek_MU */ - { 0x000007ec, 13847 }, /* Greek_mu */ - { 0x000007cd, 13856 }, /* Greek_NU */ - { 0x000007ed, 13865 }, /* Greek_nu */ - { 0x000007d9, 13874 }, /* Greek_OMEGA */ - { 0x000007f9, 13886 }, /* Greek_omega */ - { 0x000007ab, 13898 }, /* Greek_OMEGAaccent */ - { 0x000007bb, 13916 }, /* Greek_omegaaccent */ - { 0x000007cf, 13934 }, /* Greek_OMICRON */ - { 0x000007ef, 13948 }, /* Greek_omicron */ - { 0x000007a7, 13962 }, /* Greek_OMICRONaccent */ - { 0x000007b7, 13982 }, /* Greek_omicronaccent */ - { 0x000007d6, 14002 }, /* Greek_PHI */ - { 0x000007f6, 14012 }, /* Greek_phi */ - { 0x000007d0, 14022 }, /* Greek_PI */ - { 0x000007f0, 14031 }, /* Greek_pi */ - { 0x000007d8, 14040 }, /* Greek_PSI */ - { 0x000007f8, 14050 }, /* Greek_psi */ - { 0x000007d1, 14060 }, /* Greek_RHO */ - { 0x000007f1, 14070 }, /* Greek_rho */ - { 0x000007d2, 14080 }, /* Greek_SIGMA */ - { 0x000007f2, 14092 }, /* Greek_sigma */ - { 0x0000ff7e, 14104 }, /* Greek_switch */ - { 0x000007d4, 14117 }, /* Greek_TAU */ - { 0x000007f4, 14127 }, /* Greek_tau */ - { 0x000007c8, 14137 }, /* Greek_THETA */ - { 0x000007e8, 14149 }, /* Greek_theta */ - { 0x000007d5, 14161 }, /* Greek_UPSILON */ - { 0x000007f5, 14175 }, /* Greek_upsilon */ - { 0x000007a8, 14189 }, /* Greek_UPSILONaccent */ - { 0x000007b8, 14209 }, /* Greek_upsilonaccent */ - { 0x000007ba, 14229 }, /* Greek_upsilonaccentdieresis */ - { 0x000007a9, 14257 }, /* Greek_UPSILONdieresis */ - { 0x000007b9, 14279 }, /* Greek_upsilondieresis */ - { 0x000007ce, 14301 }, /* Greek_XI */ - { 0x000007ee, 14310 }, /* Greek_xi */ - { 0x000007c6, 14319 }, /* Greek_ZETA */ - { 0x000007e6, 14330 }, /* Greek_zeta */ - { 0x100000be, 14341 }, /* guilder */ - { 0x000000ab, 14349 }, /* guillemotleft */ - { 0x000000bb, 14363 }, /* guillemotright */ - { 0x00000048, 14378 }, /* H */ - { 0x00000068, 14380 }, /* h */ - { 0x00000aa8, 14382 }, /* hairspace */ - { 0x0000ff31, 14392 }, /* Hangul */ - { 0x00000ebf, 14399 }, /* Hangul_A */ - { 0x00000ec0, 14408 }, /* Hangul_AE */ - { 0x00000ef6, 14418 }, /* Hangul_AraeA */ - { 0x00000ef7, 14431 }, /* Hangul_AraeAE */ - { 0x0000ff39, 14445 }, /* Hangul_Banja */ - { 0x00000eba, 14458 }, /* Hangul_Cieuc */ - { 0x0000ff37, 14471 }, /* Hangul_Codeinput */ - { 0x00000ea7, 14488 }, /* Hangul_Dikeud */ - { 0x00000ec4, 14502 }, /* Hangul_E */ - { 0x0000ff33, 14511 }, /* Hangul_End */ - { 0x00000ec3, 14522 }, /* Hangul_EO */ - { 0x00000ed1, 14532 }, /* Hangul_EU */ - { 0x0000ff34, 14542 }, /* Hangul_Hanja */ - { 0x00000ebe, 14555 }, /* Hangul_Hieuh */ - { 0x00000ed3, 14568 }, /* Hangul_I */ - { 0x00000eb7, 14577 }, /* Hangul_Ieung */ - { 0x00000eea, 14590 }, /* Hangul_J_Cieuc */ - { 0x00000eda, 14605 }, /* Hangul_J_Dikeud */ - { 0x00000eee, 14621 }, /* Hangul_J_Hieuh */ - { 0x00000ee8, 14636 }, /* Hangul_J_Ieung */ - { 0x00000ee9, 14651 }, /* Hangul_J_Jieuj */ - { 0x00000eeb, 14666 }, /* Hangul_J_Khieuq */ - { 0x00000ed4, 14682 }, /* Hangul_J_Kiyeog */ - { 0x00000ed6, 14698 }, /* Hangul_J_KiyeogSios */ - { 0x00000ef9, 14718 }, /* Hangul_J_KkogjiDalrinIeung */ - { 0x00000ee3, 14745 }, /* Hangul_J_Mieum */ - { 0x00000ed7, 14760 }, /* Hangul_J_Nieun */ - { 0x00000ed9, 14775 }, /* Hangul_J_NieunHieuh */ - { 0x00000ed8, 14795 }, /* Hangul_J_NieunJieuj */ - { 0x00000ef8, 14815 }, /* Hangul_J_PanSios */ - { 0x00000eed, 14832 }, /* Hangul_J_Phieuf */ - { 0x00000ee4, 14848 }, /* Hangul_J_Pieub */ - { 0x00000ee5, 14863 }, /* Hangul_J_PieubSios */ - { 0x00000edb, 14882 }, /* Hangul_J_Rieul */ - { 0x00000ee2, 14897 }, /* Hangul_J_RieulHieuh */ - { 0x00000edc, 14917 }, /* Hangul_J_RieulKiyeog */ - { 0x00000edd, 14938 }, /* Hangul_J_RieulMieum */ - { 0x00000ee1, 14958 }, /* Hangul_J_RieulPhieuf */ - { 0x00000ede, 14979 }, /* Hangul_J_RieulPieub */ - { 0x00000edf, 14999 }, /* Hangul_J_RieulSios */ - { 0x00000ee0, 15018 }, /* Hangul_J_RieulTieut */ - { 0x00000ee6, 15038 }, /* Hangul_J_Sios */ - { 0x00000ed5, 15052 }, /* Hangul_J_SsangKiyeog */ - { 0x00000ee7, 15073 }, /* Hangul_J_SsangSios */ - { 0x00000eec, 15092 }, /* Hangul_J_Tieut */ - { 0x00000efa, 15107 }, /* Hangul_J_YeorinHieuh */ - { 0x0000ff35, 15128 }, /* Hangul_Jamo */ - { 0x0000ff38, 15140 }, /* Hangul_Jeonja */ - { 0x00000eb8, 15154 }, /* Hangul_Jieuj */ - { 0x00000ebb, 15167 }, /* Hangul_Khieuq */ - { 0x00000ea1, 15181 }, /* Hangul_Kiyeog */ - { 0x00000ea3, 15195 }, /* Hangul_KiyeogSios */ - { 0x00000ef3, 15213 }, /* Hangul_KkogjiDalrinIeung */ - { 0x00000eb1, 15238 }, /* Hangul_Mieum */ - { 0x0000ff3d, 15251 }, /* Hangul_MultipleCandidate */ - { 0x00000ea4, 15276 }, /* Hangul_Nieun */ - { 0x00000ea6, 15289 }, /* Hangul_NieunHieuh */ - { 0x00000ea5, 15307 }, /* Hangul_NieunJieuj */ - { 0x00000ec7, 15325 }, /* Hangul_O */ - { 0x00000eca, 15334 }, /* Hangul_OE */ - { 0x00000ef2, 15344 }, /* Hangul_PanSios */ - { 0x00000ebd, 15359 }, /* Hangul_Phieuf */ - { 0x00000eb2, 15373 }, /* Hangul_Pieub */ - { 0x00000eb4, 15386 }, /* Hangul_PieubSios */ - { 0x0000ff3b, 15403 }, /* Hangul_PostHanja */ - { 0x0000ff3a, 15420 }, /* Hangul_PreHanja */ - { 0x0000ff3e, 15436 }, /* Hangul_PreviousCandidate */ - { 0x00000ea9, 15461 }, /* Hangul_Rieul */ - { 0x00000eb0, 15474 }, /* Hangul_RieulHieuh */ - { 0x00000eaa, 15492 }, /* Hangul_RieulKiyeog */ - { 0x00000eab, 15511 }, /* Hangul_RieulMieum */ - { 0x00000eaf, 15529 }, /* Hangul_RieulPhieuf */ - { 0x00000eac, 15548 }, /* Hangul_RieulPieub */ - { 0x00000ead, 15566 }, /* Hangul_RieulSios */ - { 0x00000eae, 15583 }, /* Hangul_RieulTieut */ - { 0x00000eef, 15601 }, /* Hangul_RieulYeorinHieuh */ - { 0x0000ff36, 15625 }, /* Hangul_Romaja */ - { 0x0000ff3c, 15639 }, /* Hangul_SingleCandidate */ - { 0x00000eb5, 15662 }, /* Hangul_Sios */ - { 0x0000ff3f, 15674 }, /* Hangul_Special */ - { 0x00000ea8, 15689 }, /* Hangul_SsangDikeud */ - { 0x00000eb9, 15708 }, /* Hangul_SsangJieuj */ - { 0x00000ea2, 15726 }, /* Hangul_SsangKiyeog */ - { 0x00000eb3, 15745 }, /* Hangul_SsangPieub */ - { 0x00000eb6, 15763 }, /* Hangul_SsangSios */ - { 0x0000ff32, 15780 }, /* Hangul_Start */ - { 0x00000ef0, 15793 }, /* Hangul_SunkyeongeumMieum */ - { 0x00000ef4, 15818 }, /* Hangul_SunkyeongeumPhieuf */ - { 0x00000ef1, 15844 }, /* Hangul_SunkyeongeumPieub */ - { 0x0000ff7e, 15869 }, /* Hangul_switch */ - { 0x00000ebc, 15883 }, /* Hangul_Tieut */ - { 0x00000ecc, 15896 }, /* Hangul_U */ - { 0x00000ec8, 15905 }, /* Hangul_WA */ - { 0x00000ec9, 15915 }, /* Hangul_WAE */ - { 0x00000ece, 15926 }, /* Hangul_WE */ - { 0x00000ecd, 15936 }, /* Hangul_WEO */ - { 0x00000ecf, 15947 }, /* Hangul_WI */ - { 0x00000ec1, 15957 }, /* Hangul_YA */ - { 0x00000ec2, 15967 }, /* Hangul_YAE */ - { 0x00000ec6, 15978 }, /* Hangul_YE */ - { 0x00000ec5, 15988 }, /* Hangul_YEO */ - { 0x00000ef5, 15999 }, /* Hangul_YeorinHieuh */ - { 0x00000ed2, 16018 }, /* Hangul_YI */ - { 0x00000ecb, 16028 }, /* Hangul_YO */ - { 0x00000ed0, 16038 }, /* Hangul_YU */ - { 0x0000ff29, 16048 }, /* Hankaku */ - { 0x000002a6, 16056 }, /* Hcircumflex */ - { 0x000002b6, 16068 }, /* hcircumflex */ - { 0x00000aee, 16080 }, /* heart */ - { 0x00000ce0, 16086 }, /* hebrew_aleph */ - { 0x00000cf2, 16099 }, /* hebrew_ayin */ - { 0x00000ce1, 16111 }, /* hebrew_bet */ - { 0x00000ce1, 16122 }, /* hebrew_beth */ - { 0x00000ce7, 16134 }, /* hebrew_chet */ - { 0x00000ce3, 16146 }, /* hebrew_dalet */ - { 0x00000ce3, 16159 }, /* hebrew_daleth */ - { 0x00000cdf, 16173 }, /* hebrew_doublelowline */ - { 0x00000cea, 16194 }, /* hebrew_finalkaph */ - { 0x00000ced, 16211 }, /* hebrew_finalmem */ - { 0x00000cef, 16227 }, /* hebrew_finalnun */ - { 0x00000cf3, 16243 }, /* hebrew_finalpe */ - { 0x00000cf5, 16258 }, /* hebrew_finalzade */ - { 0x00000cf5, 16275 }, /* hebrew_finalzadi */ - { 0x00000ce2, 16292 }, /* hebrew_gimel */ - { 0x00000ce2, 16305 }, /* hebrew_gimmel */ - { 0x00000ce4, 16319 }, /* hebrew_he */ - { 0x00000ce7, 16329 }, /* hebrew_het */ - { 0x00000ceb, 16340 }, /* hebrew_kaph */ - { 0x00000cf7, 16352 }, /* hebrew_kuf */ - { 0x00000cec, 16363 }, /* hebrew_lamed */ - { 0x00000cee, 16376 }, /* hebrew_mem */ - { 0x00000cf0, 16387 }, /* hebrew_nun */ - { 0x00000cf4, 16398 }, /* hebrew_pe */ - { 0x00000cf7, 16408 }, /* hebrew_qoph */ - { 0x00000cf8, 16420 }, /* hebrew_resh */ - { 0x00000cf1, 16432 }, /* hebrew_samech */ - { 0x00000cf1, 16446 }, /* hebrew_samekh */ - { 0x00000cf9, 16460 }, /* hebrew_shin */ - { 0x0000ff7e, 16472 }, /* Hebrew_switch */ - { 0x00000cfa, 16486 }, /* hebrew_taf */ - { 0x00000cfa, 16497 }, /* hebrew_taw */ - { 0x00000ce8, 16508 }, /* hebrew_tet */ - { 0x00000ce8, 16519 }, /* hebrew_teth */ - { 0x00000ce5, 16531 }, /* hebrew_waw */ - { 0x00000ce9, 16542 }, /* hebrew_yod */ - { 0x00000cf6, 16553 }, /* hebrew_zade */ - { 0x00000cf6, 16565 }, /* hebrew_zadi */ - { 0x00000ce6, 16577 }, /* hebrew_zain */ - { 0x00000ce6, 16589 }, /* hebrew_zayin */ - { 0x0000ff6a, 16602 }, /* Help */ - { 0x0000ff23, 16607 }, /* Henkan */ - { 0x0000ff23, 16614 }, /* Henkan_Mode */ - { 0x00000ada, 16626 }, /* hexagram */ - { 0x0000ff25, 16635 }, /* Hiragana */ - { 0x0000ff27, 16644 }, /* Hiragana_Katakana */ - { 0x0000ff50, 16662 }, /* Home */ - { 0x000008a3, 16667 }, /* horizconnector */ - { 0x000009ef, 16682 }, /* horizlinescan1 */ - { 0x000009f0, 16697 }, /* horizlinescan3 */ - { 0x000009f1, 16712 }, /* horizlinescan5 */ - { 0x000009f2, 16727 }, /* horizlinescan7 */ - { 0x000009f3, 16742 }, /* horizlinescan9 */ - { 0x1000ff74, 16757 }, /* hpBackTab */ - { 0x100000fc, 16767 }, /* hpblock */ - { 0x1000ff6f, 16775 }, /* hpClearLine */ - { 0x1000ff73, 16787 }, /* hpDeleteChar */ - { 0x1000ff71, 16800 }, /* hpDeleteLine */ - { 0x100000be, 16813 }, /* hpguilder */ - { 0x1000ff72, 16823 }, /* hpInsertChar */ - { 0x1000ff70, 16836 }, /* hpInsertLine */ - { 0x100000ee, 16849 }, /* hpIO */ - { 0x1000ff75, 16854 }, /* hpKP_BackTab */ - { 0x100000af, 16867 }, /* hplira */ - { 0x100000f6, 16874 }, /* hplongminus */ - { 0x1000ff48, 16886 }, /* hpModelock1 */ - { 0x1000ff49, 16898 }, /* hpModelock2 */ - { 0x100000a8, 16910 }, /* hpmute_acute */ - { 0x100000aa, 16923 }, /* hpmute_asciicircum */ - { 0x100000ac, 16942 }, /* hpmute_asciitilde */ - { 0x100000ab, 16960 }, /* hpmute_diaeresis */ - { 0x100000a9, 16977 }, /* hpmute_grave */ - { 0x1000ff6c, 16990 }, /* hpReset */ - { 0x1000ff6d, 16998 }, /* hpSystem */ - { 0x1000ff6e, 17007 }, /* hpUser */ - { 0x100000ee, 17014 }, /* hpYdiaeresis */ - { 0x000002a1, 17027 }, /* Hstroke */ - { 0x000002b1, 17035 }, /* hstroke */ - { 0x000009e2, 17043 }, /* ht */ - { 0x0000ffed, 17046 }, /* Hyper_L */ - { 0x0000ffee, 17054 }, /* Hyper_R */ - { 0x000000ad, 17062 }, /* hyphen */ - { 0x00000049, 17069 }, /* I */ - { 0x00000069, 17071 }, /* i */ - { 0x000002a9, 17073 }, /* Iabovedot */ - { 0x000000cd, 17083 }, /* Iacute */ - { 0x000000ed, 17090 }, /* iacute */ - { 0x01001eca, 17097 }, /* Ibelowdot */ - { 0x01001ecb, 17107 }, /* ibelowdot */ - { 0x0100012c, 17117 }, /* Ibreve */ - { 0x0100012d, 17124 }, /* ibreve */ - { 0x000000ce, 17131 }, /* Icircumflex */ - { 0x000000ee, 17143 }, /* icircumflex */ - { 0x000008cf, 17155 }, /* identical */ - { 0x000000cf, 17165 }, /* Idiaeresis */ - { 0x000000ef, 17176 }, /* idiaeresis */ - { 0x000002b9, 17187 }, /* idotless */ - { 0x000008cd, 17196 }, /* ifonlyif */ - { 0x000000cc, 17205 }, /* Igrave */ - { 0x000000ec, 17212 }, /* igrave */ - { 0x01001ec8, 17219 }, /* Ihook */ - { 0x01001ec9, 17225 }, /* ihook */ - { 0x000003cf, 17231 }, /* Imacron */ - { 0x000003ef, 17239 }, /* imacron */ - { 0x000008ce, 17247 }, /* implies */ - { 0x000008da, 17255 }, /* includedin */ - { 0x000008db, 17266 }, /* includes */ - { 0x000008c2, 17275 }, /* infinity */ - { 0x0000ff63, 17284 }, /* Insert */ - { 0x1000ff72, 17291 }, /* InsertChar */ - { 0x1000ff70, 17302 }, /* InsertLine */ - { 0x000008bf, 17313 }, /* integral */ - { 0x000008dc, 17322 }, /* intersection */ - { 0x100000ee, 17335 }, /* IO */ - { 0x000003c7, 17338 }, /* Iogonek */ - { 0x000003e7, 17346 }, /* iogonek */ - { 0x0000fe33, 17354 }, /* ISO_Center_Object */ - { 0x0000fe30, 17372 }, /* ISO_Continuous_Underline */ - { 0x0000fe31, 17397 }, /* ISO_Discontinuous_Underline */ - { 0x0000fe32, 17425 }, /* ISO_Emphasize */ - { 0x0000fe34, 17439 }, /* ISO_Enter */ - { 0x0000fe2f, 17449 }, /* ISO_Fast_Cursor_Down */ - { 0x0000fe2c, 17470 }, /* ISO_Fast_Cursor_Left */ - { 0x0000fe2d, 17491 }, /* ISO_Fast_Cursor_Right */ - { 0x0000fe2e, 17513 }, /* ISO_Fast_Cursor_Up */ - { 0x0000fe0c, 17532 }, /* ISO_First_Group */ - { 0x0000fe0d, 17548 }, /* ISO_First_Group_Lock */ - { 0x0000fe06, 17569 }, /* ISO_Group_Latch */ - { 0x0000fe07, 17585 }, /* ISO_Group_Lock */ - { 0x0000ff7e, 17600 }, /* ISO_Group_Shift */ - { 0x0000fe0e, 17616 }, /* ISO_Last_Group */ - { 0x0000fe0f, 17631 }, /* ISO_Last_Group_Lock */ - { 0x0000fe20, 17651 }, /* ISO_Left_Tab */ - { 0x0000fe02, 17664 }, /* ISO_Level2_Latch */ - { 0x0000fe04, 17681 }, /* ISO_Level3_Latch */ - { 0x0000fe05, 17698 }, /* ISO_Level3_Lock */ - { 0x0000fe03, 17714 }, /* ISO_Level3_Shift */ - { 0x0000fe12, 17731 }, /* ISO_Level5_Latch */ - { 0x0000fe13, 17748 }, /* ISO_Level5_Lock */ - { 0x0000fe11, 17764 }, /* ISO_Level5_Shift */ - { 0x0000fe01, 17781 }, /* ISO_Lock */ - { 0x0000fe22, 17790 }, /* ISO_Move_Line_Down */ - { 0x0000fe21, 17809 }, /* ISO_Move_Line_Up */ - { 0x0000fe08, 17826 }, /* ISO_Next_Group */ - { 0x0000fe09, 17841 }, /* ISO_Next_Group_Lock */ - { 0x0000fe24, 17861 }, /* ISO_Partial_Line_Down */ - { 0x0000fe23, 17883 }, /* ISO_Partial_Line_Up */ - { 0x0000fe25, 17903 }, /* ISO_Partial_Space_Left */ - { 0x0000fe26, 17926 }, /* ISO_Partial_Space_Right */ - { 0x0000fe0a, 17950 }, /* ISO_Prev_Group */ - { 0x0000fe0b, 17965 }, /* ISO_Prev_Group_Lock */ - { 0x0000fe2b, 17985 }, /* ISO_Release_Both_Margins */ - { 0x0000fe29, 18010 }, /* ISO_Release_Margin_Left */ - { 0x0000fe2a, 18034 }, /* ISO_Release_Margin_Right */ - { 0x0000fe27, 18059 }, /* ISO_Set_Margin_Left */ - { 0x0000fe28, 18079 }, /* ISO_Set_Margin_Right */ - { 0x000003a5, 18100 }, /* Itilde */ - { 0x000003b5, 18107 }, /* itilde */ - { 0x0000004a, 18114 }, /* J */ - { 0x0000006a, 18116 }, /* j */ - { 0x000002ac, 18118 }, /* Jcircumflex */ - { 0x000002bc, 18130 }, /* jcircumflex */ - { 0x00000bca, 18142 }, /* jot */ - { 0x0000004b, 18146 }, /* K */ - { 0x0000006b, 18148 }, /* k */ - { 0x000004a7, 18150 }, /* kana_a */ - { 0x000004b1, 18157 }, /* kana_A */ - { 0x000004c1, 18164 }, /* kana_CHI */ - { 0x000004a3, 18173 }, /* kana_closingbracket */ - { 0x000004a4, 18193 }, /* kana_comma */ - { 0x000004a5, 18204 }, /* kana_conjunctive */ - { 0x000004aa, 18221 }, /* kana_e */ - { 0x000004b4, 18228 }, /* kana_E */ - { 0x000004cc, 18235 }, /* kana_FU */ - { 0x000004a1, 18243 }, /* kana_fullstop */ - { 0x000004ca, 18257 }, /* kana_HA */ - { 0x000004cd, 18265 }, /* kana_HE */ - { 0x000004cb, 18273 }, /* kana_HI */ - { 0x000004ce, 18281 }, /* kana_HO */ - { 0x000004cc, 18289 }, /* kana_HU */ - { 0x000004a8, 18297 }, /* kana_i */ - { 0x000004b2, 18304 }, /* kana_I */ - { 0x000004b6, 18311 }, /* kana_KA */ - { 0x000004b9, 18319 }, /* kana_KE */ - { 0x000004b7, 18327 }, /* kana_KI */ - { 0x000004ba, 18335 }, /* kana_KO */ - { 0x000004b8, 18343 }, /* kana_KU */ - { 0x0000ff2d, 18351 }, /* Kana_Lock */ - { 0x000004cf, 18361 }, /* kana_MA */ - { 0x000004d2, 18369 }, /* kana_ME */ - { 0x000004d0, 18377 }, /* kana_MI */ - { 0x000004a5, 18385 }, /* kana_middledot */ - { 0x000004d3, 18400 }, /* kana_MO */ - { 0x000004d1, 18408 }, /* kana_MU */ - { 0x000004dd, 18416 }, /* kana_N */ - { 0x000004c5, 18423 }, /* kana_NA */ - { 0x000004c8, 18431 }, /* kana_NE */ - { 0x000004c6, 18439 }, /* kana_NI */ - { 0x000004c9, 18447 }, /* kana_NO */ - { 0x000004c7, 18455 }, /* kana_NU */ - { 0x000004ab, 18463 }, /* kana_o */ - { 0x000004b5, 18470 }, /* kana_O */ - { 0x000004a2, 18477 }, /* kana_openingbracket */ - { 0x000004d7, 18497 }, /* kana_RA */ - { 0x000004da, 18505 }, /* kana_RE */ - { 0x000004d8, 18513 }, /* kana_RI */ - { 0x000004db, 18521 }, /* kana_RO */ - { 0x000004d9, 18529 }, /* kana_RU */ - { 0x000004bb, 18537 }, /* kana_SA */ - { 0x000004be, 18545 }, /* kana_SE */ - { 0x000004bc, 18553 }, /* kana_SHI */ - { 0x0000ff2e, 18562 }, /* Kana_Shift */ - { 0x000004bf, 18573 }, /* kana_SO */ - { 0x000004bd, 18581 }, /* kana_SU */ - { 0x0000ff7e, 18589 }, /* kana_switch */ - { 0x000004c0, 18601 }, /* kana_TA */ - { 0x000004c3, 18609 }, /* kana_TE */ - { 0x000004c1, 18617 }, /* kana_TI */ - { 0x000004c4, 18625 }, /* kana_TO */ - { 0x000004af, 18633 }, /* kana_tsu */ - { 0x000004c2, 18642 }, /* kana_TSU */ - { 0x000004af, 18651 }, /* kana_tu */ - { 0x000004c2, 18659 }, /* kana_TU */ - { 0x000004a9, 18667 }, /* kana_u */ - { 0x000004b3, 18674 }, /* kana_U */ - { 0x000004dc, 18681 }, /* kana_WA */ - { 0x000004a6, 18689 }, /* kana_WO */ - { 0x000004ac, 18697 }, /* kana_ya */ - { 0x000004d4, 18705 }, /* kana_YA */ - { 0x000004ae, 18713 }, /* kana_yo */ - { 0x000004d6, 18721 }, /* kana_YO */ - { 0x000004ad, 18729 }, /* kana_yu */ - { 0x000004d5, 18737 }, /* kana_YU */ - { 0x0000ff21, 18745 }, /* Kanji */ - { 0x0000ff37, 18751 }, /* Kanji_Bangou */ - { 0x000003a2, 18764 }, /* kappa */ - { 0x0000ff26, 18770 }, /* Katakana */ - { 0x000003d3, 18779 }, /* Kcedilla */ - { 0x000003f3, 18788 }, /* kcedilla */ - { 0x00000eff, 18797 }, /* Korean_Won */ - { 0x0000ffb0, 18808 }, /* KP_0 */ - { 0x0000ffb1, 18813 }, /* KP_1 */ - { 0x0000ffb2, 18818 }, /* KP_2 */ - { 0x0000ffb3, 18823 }, /* KP_3 */ - { 0x0000ffb4, 18828 }, /* KP_4 */ - { 0x0000ffb5, 18833 }, /* KP_5 */ - { 0x0000ffb6, 18838 }, /* KP_6 */ - { 0x0000ffb7, 18843 }, /* KP_7 */ - { 0x0000ffb8, 18848 }, /* KP_8 */ - { 0x0000ffb9, 18853 }, /* KP_9 */ - { 0x0000ffab, 18858 }, /* KP_Add */ - { 0x1000ff75, 18865 }, /* KP_BackTab */ - { 0x0000ff9d, 18876 }, /* KP_Begin */ - { 0x0000ffae, 18885 }, /* KP_Decimal */ - { 0x0000ff9f, 18896 }, /* KP_Delete */ - { 0x0000ffaf, 18906 }, /* KP_Divide */ - { 0x0000ff99, 18916 }, /* KP_Down */ - { 0x0000ff9c, 18924 }, /* KP_End */ - { 0x0000ff8d, 18931 }, /* KP_Enter */ - { 0x0000ffbd, 18940 }, /* KP_Equal */ - { 0x0000ff91, 18949 }, /* KP_F1 */ - { 0x0000ff92, 18955 }, /* KP_F2 */ - { 0x0000ff93, 18961 }, /* KP_F3 */ - { 0x0000ff94, 18967 }, /* KP_F4 */ - { 0x0000ff95, 18973 }, /* KP_Home */ - { 0x0000ff9e, 18981 }, /* KP_Insert */ - { 0x0000ff96, 18991 }, /* KP_Left */ - { 0x0000ffaa, 18999 }, /* KP_Multiply */ - { 0x0000ff9b, 19011 }, /* KP_Next */ - { 0x0000ff9b, 19019 }, /* KP_Page_Down */ - { 0x0000ff9a, 19032 }, /* KP_Page_Up */ - { 0x0000ff9a, 19043 }, /* KP_Prior */ - { 0x0000ff98, 19052 }, /* KP_Right */ - { 0x0000ffac, 19061 }, /* KP_Separator */ - { 0x0000ff80, 19074 }, /* KP_Space */ - { 0x0000ffad, 19083 }, /* KP_Subtract */ - { 0x0000ff89, 19095 }, /* KP_Tab */ - { 0x0000ff97, 19102 }, /* KP_Up */ - { 0x000003a2, 19108 }, /* kra */ - { 0x0000004c, 19112 }, /* L */ - { 0x0000006c, 19114 }, /* l */ - { 0x0000ffc8, 19116 }, /* L1 */ - { 0x0000ffd1, 19119 }, /* L10 */ - { 0x0000ffc9, 19123 }, /* L2 */ - { 0x0000ffca, 19126 }, /* L3 */ - { 0x0000ffcb, 19129 }, /* L4 */ - { 0x0000ffcc, 19132 }, /* L5 */ - { 0x0000ffcd, 19135 }, /* L6 */ - { 0x0000ffce, 19138 }, /* L7 */ - { 0x0000ffcf, 19141 }, /* L8 */ - { 0x0000ffd0, 19144 }, /* L9 */ - { 0x000001c5, 19147 }, /* Lacute */ - { 0x000001e5, 19154 }, /* lacute */ - { 0x0000fed4, 19161 }, /* Last_Virtual_Screen */ - { 0x00000ad9, 19181 }, /* latincross */ - { 0x01001e36, 19192 }, /* Lbelowdot */ - { 0x01001e37, 19202 }, /* lbelowdot */ - { 0x000001a5, 19212 }, /* Lcaron */ - { 0x000001b5, 19219 }, /* lcaron */ - { 0x000003a6, 19226 }, /* Lcedilla */ - { 0x000003b6, 19235 }, /* lcedilla */ - { 0x0000ff51, 19244 }, /* Left */ - { 0x00000abc, 19249 }, /* leftanglebracket */ - { 0x000008fb, 19266 }, /* leftarrow */ - { 0x00000ba3, 19276 }, /* leftcaret */ - { 0x00000ad2, 19286 }, /* leftdoublequotemark */ - { 0x000008af, 19306 }, /* leftmiddlecurlybrace */ - { 0x00000acc, 19327 }, /* leftopentriangle */ - { 0x00000aea, 19344 }, /* leftpointer */ - { 0x000008a1, 19356 }, /* leftradical */ - { 0x00000bda, 19368 }, /* leftshoe */ - { 0x00000ad0, 19377 }, /* leftsinglequotemark */ - { 0x000009f4, 19397 }, /* leftt */ - { 0x00000bdc, 19403 }, /* lefttack */ - { 0x0000003c, 19412 }, /* less */ - { 0x000008bc, 19417 }, /* lessthanequal */ - { 0x000009e5, 19431 }, /* lf */ - { 0x0000ff0a, 19434 }, /* Linefeed */ - { 0x100000af, 19443 }, /* lira */ - { 0x010020a4, 19448 }, /* LiraSign */ - { 0x000008de, 19457 }, /* logicaland */ - { 0x000008df, 19468 }, /* logicalor */ - { 0x100000f6, 19478 }, /* longminus */ - { 0x000009ed, 19488 }, /* lowleftcorner */ - { 0x000009ea, 19502 }, /* lowrightcorner */ - { 0x000001a3, 19517 }, /* Lstroke */ - { 0x000001b3, 19525 }, /* lstroke */ - { 0x0000004d, 19533 }, /* M */ - { 0x0000006d, 19535 }, /* m */ - { 0x01001e40, 19537 }, /* Mabovedot */ - { 0x01001e41, 19547 }, /* mabovedot */ - { 0x000006a5, 19557 }, /* Macedonia_dse */ - { 0x000006b5, 19571 }, /* Macedonia_DSE */ - { 0x000006a2, 19585 }, /* Macedonia_gje */ - { 0x000006b2, 19599 }, /* Macedonia_GJE */ - { 0x000006ac, 19613 }, /* Macedonia_kje */ - { 0x000006bc, 19627 }, /* Macedonia_KJE */ - { 0x000000af, 19641 }, /* macron */ - { 0x0000ff3e, 19648 }, /* Mae_Koho */ - { 0x00000af7, 19657 }, /* malesymbol */ - { 0x00000af0, 19668 }, /* maltesecross */ - { 0x00000abf, 19681 }, /* marker */ - { 0x000000ba, 19688 }, /* masculine */ - { 0x0000ff2c, 19698 }, /* Massyo */ - { 0x0000ff67, 19705 }, /* Menu */ - { 0x0000ffe7, 19710 }, /* Meta_L */ - { 0x0000ffe8, 19717 }, /* Meta_R */ - { 0x010020a5, 19724 }, /* MillSign */ - { 0x0000002d, 19733 }, /* minus */ - { 0x00000ad6, 19739 }, /* minutes */ - { 0x0000ff7e, 19747 }, /* Mode_switch */ - { 0x0000fe77, 19759 }, /* MouseKeys_Accel_Enable */ - { 0x0000fe76, 19782 }, /* MouseKeys_Enable */ - { 0x000000b5, 19799 }, /* mu */ - { 0x0000ff22, 19802 }, /* Muhenkan */ - { 0x0000ff20, 19811 }, /* Multi_key */ - { 0x0000ff3d, 19821 }, /* MultipleCandidate */ - { 0x000000d7, 19839 }, /* multiply */ - { 0x00000af6, 19848 }, /* musicalflat */ - { 0x00000af5, 19860 }, /* musicalsharp */ - { 0x100000a8, 19873 }, /* mute_acute */ - { 0x100000aa, 19884 }, /* mute_asciicircum */ - { 0x100000ac, 19901 }, /* mute_asciitilde */ - { 0x100000ab, 19917 }, /* mute_diaeresis */ - { 0x100000a9, 19932 }, /* mute_grave */ - { 0x0000004e, 19943 }, /* N */ - { 0x0000006e, 19945 }, /* n */ - { 0x000008c5, 19947 }, /* nabla */ - { 0x000001d1, 19953 }, /* Nacute */ - { 0x000001f1, 19960 }, /* nacute */ - { 0x010020a6, 19967 }, /* NairaSign */ - { 0x000001d2, 19977 }, /* Ncaron */ - { 0x000001f2, 19984 }, /* ncaron */ - { 0x000003d1, 19991 }, /* Ncedilla */ - { 0x000003f1, 20000 }, /* ncedilla */ - { 0x010020aa, 20009 }, /* NewSheqelSign */ - { 0x0000ff56, 20023 }, /* Next */ - { 0x0000fed2, 20028 }, /* Next_Virtual_Screen */ - { 0x01002089, 20048 }, /* ninesubscript */ - { 0x01002079, 20062 }, /* ninesuperior */ - { 0x000009e8, 20075 }, /* nl */ - { 0x000000a0, 20078 }, /* nobreakspace */ - { 0x00000000, 20091 }, /* NoSymbol */ - { 0x01002247, 20100 }, /* notapproxeq */ - { 0x01002209, 20112 }, /* notelementof */ - { 0x000008bd, 20125 }, /* notequal */ - { 0x01002262, 20134 }, /* notidentical */ - { 0x000000ac, 20147 }, /* notsign */ - { 0x000000d1, 20155 }, /* Ntilde */ - { 0x000000f1, 20162 }, /* ntilde */ - { 0x0000ff7f, 20169 }, /* Num_Lock */ - { 0x00000023, 20178 }, /* numbersign */ - { 0x000006b0, 20189 }, /* numerosign */ - { 0x0000004f, 20200 }, /* O */ - { 0x0000006f, 20202 }, /* o */ - { 0x000000d3, 20204 }, /* Oacute */ - { 0x000000f3, 20211 }, /* oacute */ - { 0x0100019f, 20218 }, /* Obarred */ - { 0x01000275, 20226 }, /* obarred */ - { 0x01001ecc, 20234 }, /* Obelowdot */ - { 0x01001ecd, 20244 }, /* obelowdot */ - { 0x010001d1, 20254 }, /* Ocaron */ - { 0x010001d2, 20261 }, /* ocaron */ - { 0x000000d4, 20268 }, /* Ocircumflex */ - { 0x000000f4, 20280 }, /* ocircumflex */ - { 0x01001ed0, 20292 }, /* Ocircumflexacute */ - { 0x01001ed1, 20309 }, /* ocircumflexacute */ - { 0x01001ed8, 20326 }, /* Ocircumflexbelowdot */ - { 0x01001ed9, 20346 }, /* ocircumflexbelowdot */ - { 0x01001ed2, 20366 }, /* Ocircumflexgrave */ - { 0x01001ed3, 20383 }, /* ocircumflexgrave */ - { 0x01001ed4, 20400 }, /* Ocircumflexhook */ - { 0x01001ed5, 20416 }, /* ocircumflexhook */ - { 0x01001ed6, 20432 }, /* Ocircumflextilde */ - { 0x01001ed7, 20449 }, /* ocircumflextilde */ - { 0x000000d6, 20466 }, /* Odiaeresis */ - { 0x000000f6, 20477 }, /* odiaeresis */ - { 0x000001d5, 20488 }, /* Odoubleacute */ - { 0x000001f5, 20501 }, /* odoubleacute */ - { 0x000013bc, 20514 }, /* OE */ - { 0x000013bd, 20517 }, /* oe */ - { 0x000001b2, 20520 }, /* ogonek */ - { 0x000000d2, 20527 }, /* Ograve */ - { 0x000000f2, 20534 }, /* ograve */ - { 0x01001ece, 20541 }, /* Ohook */ - { 0x01001ecf, 20547 }, /* ohook */ - { 0x010001a0, 20553 }, /* Ohorn */ - { 0x010001a1, 20559 }, /* ohorn */ - { 0x01001eda, 20565 }, /* Ohornacute */ - { 0x01001edb, 20576 }, /* ohornacute */ - { 0x01001ee2, 20587 }, /* Ohornbelowdot */ - { 0x01001ee3, 20601 }, /* ohornbelowdot */ - { 0x01001edc, 20615 }, /* Ohorngrave */ - { 0x01001edd, 20626 }, /* ohorngrave */ - { 0x01001ede, 20637 }, /* Ohornhook */ - { 0x01001edf, 20647 }, /* ohornhook */ - { 0x01001ee0, 20657 }, /* Ohorntilde */ - { 0x01001ee1, 20668 }, /* ohorntilde */ - { 0x000003d2, 20679 }, /* Omacron */ - { 0x000003f2, 20687 }, /* omacron */ - { 0x00000ac3, 20695 }, /* oneeighth */ - { 0x00000ab2, 20705 }, /* onefifth */ - { 0x000000bd, 20714 }, /* onehalf */ - { 0x000000bc, 20722 }, /* onequarter */ - { 0x00000ab6, 20733 }, /* onesixth */ - { 0x01002081, 20742 }, /* onesubscript */ - { 0x000000b9, 20755 }, /* onesuperior */ - { 0x00000ab0, 20767 }, /* onethird */ - { 0x000000d8, 20776 }, /* Ooblique */ - { 0x000000f8, 20785 }, /* ooblique */ - { 0x00000ae2, 20794 }, /* openrectbullet */ - { 0x00000ae5, 20809 }, /* openstar */ - { 0x00000ae4, 20818 }, /* opentribulletdown */ - { 0x00000ae3, 20836 }, /* opentribulletup */ - { 0x000000aa, 20852 }, /* ordfeminine */ - { 0x1004ff44, 20864 }, /* osfActivate */ - { 0x1004ff31, 20876 }, /* osfAddMode */ - { 0x1004ff08, 20887 }, /* osfBackSpace */ - { 0x1004ff07, 20900 }, /* osfBackTab */ - { 0x1004ff5a, 20911 }, /* osfBeginData */ - { 0x1004ff58, 20924 }, /* osfBeginLine */ - { 0x1004ff69, 20937 }, /* osfCancel */ - { 0x1004ff0b, 20947 }, /* osfClear */ - { 0x1004ff02, 20956 }, /* osfCopy */ - { 0x1004ff03, 20964 }, /* osfCut */ - { 0x1004ffff, 20971 }, /* osfDelete */ - { 0x1004ff72, 20981 }, /* osfDeselectAll */ - { 0x1004ff54, 20996 }, /* osfDown */ - { 0x1004ff59, 21004 }, /* osfEndData */ - { 0x1004ff57, 21015 }, /* osfEndLine */ - { 0x1004ff1b, 21026 }, /* osfEscape */ - { 0x1004ff74, 21036 }, /* osfExtend */ - { 0x1004ff6a, 21046 }, /* osfHelp */ - { 0x1004ff63, 21054 }, /* osfInsert */ - { 0x1004ff51, 21064 }, /* osfLeft */ - { 0x1004ff67, 21072 }, /* osfMenu */ - { 0x1004ff45, 21080 }, /* osfMenuBar */ - { 0x1004ff5e, 21091 }, /* osfNextField */ - { 0x1004ff5c, 21104 }, /* osfNextMenu */ - { 0x1004ff42, 21116 }, /* osfPageDown */ - { 0x1004ff40, 21128 }, /* osfPageLeft */ - { 0x1004ff43, 21140 }, /* osfPageRight */ - { 0x1004ff41, 21153 }, /* osfPageUp */ - { 0x1004ff04, 21163 }, /* osfPaste */ - { 0x1004ff5d, 21172 }, /* osfPrevField */ - { 0x1004ff5b, 21185 }, /* osfPrevMenu */ - { 0x1004ff32, 21197 }, /* osfPrimaryPaste */ - { 0x1004ff33, 21213 }, /* osfQuickPaste */ - { 0x1004ff73, 21227 }, /* osfReselect */ - { 0x1004ff78, 21239 }, /* osfRestore */ - { 0x1004ff53, 21250 }, /* osfRight */ - { 0x1004ff60, 21259 }, /* osfSelect */ - { 0x1004ff71, 21269 }, /* osfSelectAll */ - { 0x1004ff65, 21282 }, /* osfUndo */ - { 0x1004ff52, 21290 }, /* osfUp */ - { 0x000000d8, 21296 }, /* Oslash */ - { 0x000000f8, 21303 }, /* oslash */ - { 0x000000d5, 21310 }, /* Otilde */ - { 0x000000f5, 21317 }, /* otilde */ - { 0x00000bc0, 21324 }, /* overbar */ - { 0x0000fe78, 21332 }, /* Overlay1_Enable */ - { 0x0000fe79, 21348 }, /* Overlay2_Enable */ - { 0x0000047e, 21364 }, /* overline */ - { 0x00000050, 21373 }, /* P */ - { 0x00000070, 21375 }, /* p */ - { 0x01001e56, 21377 }, /* Pabovedot */ - { 0x01001e57, 21387 }, /* pabovedot */ - { 0x0000ff56, 21397 }, /* Page_Down */ - { 0x0000ff55, 21407 }, /* Page_Up */ - { 0x000000b6, 21415 }, /* paragraph */ - { 0x00000028, 21425 }, /* parenleft */ - { 0x00000029, 21435 }, /* parenright */ - { 0x01002202, 21446 }, /* partdifferential */ - { 0x000008ef, 21463 }, /* partialderivative */ - { 0x0000ff13, 21481 }, /* Pause */ - { 0x00000025, 21487 }, /* percent */ - { 0x0000002e, 21495 }, /* period */ - { 0x000000b7, 21502 }, /* periodcentered */ - { 0x00000ad5, 21517 }, /* permille */ - { 0x010020a7, 21526 }, /* PesetaSign */ - { 0x00000afb, 21537 }, /* phonographcopyright */ - { 0x0000002b, 21557 }, /* plus */ - { 0x000000b1, 21562 }, /* plusminus */ - { 0x0000fefa, 21572 }, /* Pointer_Accelerate */ - { 0x0000fee9, 21591 }, /* Pointer_Button1 */ - { 0x0000feea, 21607 }, /* Pointer_Button2 */ - { 0x0000feeb, 21623 }, /* Pointer_Button3 */ - { 0x0000feec, 21639 }, /* Pointer_Button4 */ - { 0x0000feed, 21655 }, /* Pointer_Button5 */ - { 0x0000fee8, 21671 }, /* Pointer_Button_Dflt */ - { 0x0000feef, 21691 }, /* Pointer_DblClick1 */ - { 0x0000fef0, 21709 }, /* Pointer_DblClick2 */ - { 0x0000fef1, 21727 }, /* Pointer_DblClick3 */ - { 0x0000fef2, 21745 }, /* Pointer_DblClick4 */ - { 0x0000fef3, 21763 }, /* Pointer_DblClick5 */ - { 0x0000feee, 21781 }, /* Pointer_DblClick_Dflt */ - { 0x0000fefb, 21803 }, /* Pointer_DfltBtnNext */ - { 0x0000fefc, 21823 }, /* Pointer_DfltBtnPrev */ - { 0x0000fee3, 21843 }, /* Pointer_Down */ - { 0x0000fee6, 21856 }, /* Pointer_DownLeft */ - { 0x0000fee7, 21873 }, /* Pointer_DownRight */ - { 0x0000fef5, 21891 }, /* Pointer_Drag1 */ - { 0x0000fef6, 21905 }, /* Pointer_Drag2 */ - { 0x0000fef7, 21919 }, /* Pointer_Drag3 */ - { 0x0000fef8, 21933 }, /* Pointer_Drag4 */ - { 0x0000fefd, 21947 }, /* Pointer_Drag5 */ - { 0x0000fef4, 21961 }, /* Pointer_Drag_Dflt */ - { 0x0000fef9, 21979 }, /* Pointer_EnableKeys */ - { 0x0000fee0, 21998 }, /* Pointer_Left */ - { 0x0000fee1, 22011 }, /* Pointer_Right */ - { 0x0000fee2, 22025 }, /* Pointer_Up */ - { 0x0000fee4, 22036 }, /* Pointer_UpLeft */ - { 0x0000fee5, 22051 }, /* Pointer_UpRight */ - { 0x00000ad4, 22067 }, /* prescription */ - { 0x0000fed1, 22080 }, /* Prev_Virtual_Screen */ - { 0x0000ff3e, 22100 }, /* PreviousCandidate */ - { 0x0000ff61, 22118 }, /* Print */ - { 0x0000ff55, 22124 }, /* Prior */ - { 0x000004b0, 22130 }, /* prolongedsound */ - { 0x00000aa6, 22145 }, /* punctspace */ - { 0x00000051, 22156 }, /* Q */ - { 0x00000071, 22158 }, /* q */ - { 0x00000bcc, 22160 }, /* quad */ - { 0x0000003f, 22165 }, /* question */ - { 0x000000bf, 22174 }, /* questiondown */ - { 0x00000022, 22187 }, /* quotedbl */ - { 0x00000060, 22196 }, /* quoteleft */ - { 0x00000027, 22206 }, /* quoteright */ - { 0x00000052, 22217 }, /* R */ - { 0x00000072, 22219 }, /* r */ - { 0x0000ffd2, 22221 }, /* R1 */ - { 0x0000ffdb, 22224 }, /* R10 */ - { 0x0000ffdc, 22228 }, /* R11 */ - { 0x0000ffdd, 22232 }, /* R12 */ - { 0x0000ffde, 22236 }, /* R13 */ - { 0x0000ffdf, 22240 }, /* R14 */ - { 0x0000ffe0, 22244 }, /* R15 */ - { 0x0000ffd3, 22248 }, /* R2 */ - { 0x0000ffd4, 22251 }, /* R3 */ - { 0x0000ffd5, 22254 }, /* R4 */ - { 0x0000ffd6, 22257 }, /* R5 */ - { 0x0000ffd7, 22260 }, /* R6 */ - { 0x0000ffd8, 22263 }, /* R7 */ - { 0x0000ffd9, 22266 }, /* R8 */ - { 0x0000ffda, 22269 }, /* R9 */ - { 0x000001c0, 22272 }, /* Racute */ - { 0x000001e0, 22279 }, /* racute */ - { 0x000008d6, 22286 }, /* radical */ - { 0x000001d8, 22294 }, /* Rcaron */ - { 0x000001f8, 22301 }, /* rcaron */ - { 0x000003a3, 22308 }, /* Rcedilla */ - { 0x000003b3, 22317 }, /* rcedilla */ - { 0x0000ff66, 22326 }, /* Redo */ - { 0x000000ae, 22331 }, /* registered */ - { 0x0000fe72, 22342 }, /* RepeatKeys_Enable */ - { 0x1000ff6c, 22360 }, /* Reset */ - { 0x0000ff0d, 22366 }, /* Return */ - { 0x0000ff53, 22373 }, /* Right */ - { 0x00000abe, 22379 }, /* rightanglebracket */ - { 0x000008fd, 22397 }, /* rightarrow */ - { 0x00000ba6, 22408 }, /* rightcaret */ - { 0x00000ad3, 22419 }, /* rightdoublequotemark */ - { 0x000008b0, 22440 }, /* rightmiddlecurlybrace */ - { 0x000008b7, 22462 }, /* rightmiddlesummation */ - { 0x00000acd, 22483 }, /* rightopentriangle */ - { 0x00000aeb, 22501 }, /* rightpointer */ - { 0x00000bd8, 22514 }, /* rightshoe */ - { 0x00000ad1, 22524 }, /* rightsinglequotemark */ - { 0x000009f5, 22545 }, /* rightt */ - { 0x00000bfc, 22552 }, /* righttack */ - { 0x0000ff24, 22562 }, /* Romaji */ - { 0x010020a8, 22569 }, /* RupeeSign */ - { 0x00000053, 22579 }, /* S */ - { 0x00000073, 22581 }, /* s */ - { 0x01001e60, 22583 }, /* Sabovedot */ - { 0x01001e61, 22593 }, /* sabovedot */ - { 0x000001a6, 22603 }, /* Sacute */ - { 0x000001b6, 22610 }, /* sacute */ - { 0x000001a9, 22617 }, /* Scaron */ - { 0x000001b9, 22624 }, /* scaron */ - { 0x000001aa, 22631 }, /* Scedilla */ - { 0x000001ba, 22640 }, /* scedilla */ - { 0x0100018f, 22649 }, /* SCHWA */ - { 0x01000259, 22655 }, /* schwa */ - { 0x000002de, 22661 }, /* Scircumflex */ - { 0x000002fe, 22673 }, /* scircumflex */ - { 0x0000ff7e, 22685 }, /* script_switch */ - { 0x0000ff14, 22699 }, /* Scroll_Lock */ - { 0x00000ad7, 22711 }, /* seconds */ - { 0x000000a7, 22719 }, /* section */ - { 0x0000ff60, 22727 }, /* Select */ - { 0x0000003b, 22734 }, /* semicolon */ - { 0x000004df, 22744 }, /* semivoicedsound */ - { 0x000006a1, 22760 }, /* Serbian_dje */ - { 0x000006b1, 22772 }, /* Serbian_DJE */ - { 0x000006af, 22784 }, /* Serbian_dze */ - { 0x000006bf, 22796 }, /* Serbian_DZE */ - { 0x000006a8, 22808 }, /* Serbian_je */ - { 0x000006b8, 22819 }, /* Serbian_JE */ - { 0x000006a9, 22830 }, /* Serbian_lje */ - { 0x000006b9, 22842 }, /* Serbian_LJE */ - { 0x000006aa, 22854 }, /* Serbian_nje */ - { 0x000006ba, 22866 }, /* Serbian_NJE */ - { 0x000006ab, 22878 }, /* Serbian_tshe */ - { 0x000006bb, 22891 }, /* Serbian_TSHE */ - { 0x00000ac6, 22904 }, /* seveneighths */ - { 0x01002087, 22917 }, /* sevensubscript */ - { 0x01002077, 22932 }, /* sevensuperior */ - { 0x0000ffe1, 22946 }, /* Shift_L */ - { 0x0000ffe6, 22954 }, /* Shift_Lock */ - { 0x0000ffe2, 22965 }, /* Shift_R */ - { 0x00000aca, 22973 }, /* signaturemark */ - { 0x00000aac, 22987 }, /* signifblank */ - { 0x000008c9, 22999 }, /* similarequal */ - { 0x0000ff3c, 23012 }, /* SingleCandidate */ - { 0x00000afd, 23028 }, /* singlelowquotemark */ - { 0x01000d85, 23047 }, /* Sinh_a */ - { 0x01000d86, 23054 }, /* Sinh_aa */ - { 0x01000dcf, 23062 }, /* Sinh_aa2 */ - { 0x01000d87, 23071 }, /* Sinh_ae */ - { 0x01000dd0, 23079 }, /* Sinh_ae2 */ - { 0x01000d88, 23088 }, /* Sinh_aee */ - { 0x01000dd1, 23097 }, /* Sinh_aee2 */ - { 0x01000d93, 23107 }, /* Sinh_ai */ - { 0x01000ddb, 23115 }, /* Sinh_ai2 */ - { 0x01000dca, 23124 }, /* Sinh_al */ - { 0x01000d96, 23132 }, /* Sinh_au */ - { 0x01000dde, 23140 }, /* Sinh_au2 */ - { 0x01000db6, 23149 }, /* Sinh_ba */ - { 0x01000db7, 23157 }, /* Sinh_bha */ - { 0x01000da0, 23166 }, /* Sinh_ca */ - { 0x01000da1, 23174 }, /* Sinh_cha */ - { 0x01000da9, 23183 }, /* Sinh_dda */ - { 0x01000daa, 23192 }, /* Sinh_ddha */ - { 0x01000daf, 23202 }, /* Sinh_dha */ - { 0x01000db0, 23211 }, /* Sinh_dhha */ - { 0x01000d91, 23221 }, /* Sinh_e */ - { 0x01000dd9, 23228 }, /* Sinh_e2 */ - { 0x01000d92, 23236 }, /* Sinh_ee */ - { 0x01000dda, 23244 }, /* Sinh_ee2 */ - { 0x01000dc6, 23253 }, /* Sinh_fa */ - { 0x01000d9c, 23261 }, /* Sinh_ga */ - { 0x01000d9d, 23269 }, /* Sinh_gha */ - { 0x01000d83, 23278 }, /* Sinh_h2 */ - { 0x01000dc4, 23286 }, /* Sinh_ha */ - { 0x01000d89, 23294 }, /* Sinh_i */ - { 0x01000dd2, 23301 }, /* Sinh_i2 */ - { 0x01000d8a, 23309 }, /* Sinh_ii */ - { 0x01000dd3, 23317 }, /* Sinh_ii2 */ - { 0x01000da2, 23326 }, /* Sinh_ja */ - { 0x01000da3, 23334 }, /* Sinh_jha */ - { 0x01000da5, 23343 }, /* Sinh_jnya */ - { 0x01000d9a, 23353 }, /* Sinh_ka */ - { 0x01000d9b, 23361 }, /* Sinh_kha */ - { 0x01000df4, 23370 }, /* Sinh_kunddaliya */ - { 0x01000dbd, 23386 }, /* Sinh_la */ - { 0x01000dc5, 23394 }, /* Sinh_lla */ - { 0x01000d8f, 23403 }, /* Sinh_lu */ - { 0x01000ddf, 23411 }, /* Sinh_lu2 */ - { 0x01000d90, 23420 }, /* Sinh_luu */ - { 0x01000df3, 23429 }, /* Sinh_luu2 */ - { 0x01000db8, 23439 }, /* Sinh_ma */ - { 0x01000db9, 23447 }, /* Sinh_mba */ - { 0x01000db1, 23456 }, /* Sinh_na */ - { 0x01000dac, 23464 }, /* Sinh_ndda */ - { 0x01000db3, 23474 }, /* Sinh_ndha */ - { 0x01000d82, 23484 }, /* Sinh_ng */ - { 0x01000d9e, 23492 }, /* Sinh_ng2 */ - { 0x01000d9f, 23501 }, /* Sinh_nga */ - { 0x01000da6, 23510 }, /* Sinh_nja */ - { 0x01000dab, 23519 }, /* Sinh_nna */ - { 0x01000da4, 23528 }, /* Sinh_nya */ - { 0x01000d94, 23537 }, /* Sinh_o */ - { 0x01000ddc, 23544 }, /* Sinh_o2 */ - { 0x01000d95, 23552 }, /* Sinh_oo */ - { 0x01000ddd, 23560 }, /* Sinh_oo2 */ - { 0x01000db4, 23569 }, /* Sinh_pa */ - { 0x01000db5, 23577 }, /* Sinh_pha */ - { 0x01000dbb, 23586 }, /* Sinh_ra */ - { 0x01000d8d, 23594 }, /* Sinh_ri */ - { 0x01000d8e, 23602 }, /* Sinh_rii */ - { 0x01000dd8, 23611 }, /* Sinh_ru2 */ - { 0x01000df2, 23620 }, /* Sinh_ruu2 */ - { 0x01000dc3, 23630 }, /* Sinh_sa */ - { 0x01000dc1, 23638 }, /* Sinh_sha */ - { 0x01000dc2, 23647 }, /* Sinh_ssha */ - { 0x01000dad, 23657 }, /* Sinh_tha */ - { 0x01000dae, 23666 }, /* Sinh_thha */ - { 0x01000da7, 23676 }, /* Sinh_tta */ - { 0x01000da8, 23685 }, /* Sinh_ttha */ - { 0x01000d8b, 23695 }, /* Sinh_u */ - { 0x01000dd4, 23702 }, /* Sinh_u2 */ - { 0x01000d8c, 23710 }, /* Sinh_uu */ - { 0x01000dd6, 23718 }, /* Sinh_uu2 */ - { 0x01000dc0, 23727 }, /* Sinh_va */ - { 0x01000dba, 23735 }, /* Sinh_ya */ - { 0x01002086, 23743 }, /* sixsubscript */ - { 0x01002076, 23756 }, /* sixsuperior */ - { 0x0000002f, 23768 }, /* slash */ - { 0x0000fe73, 23774 }, /* SlowKeys_Enable */ - { 0x000009e0, 23790 }, /* soliddiamond */ - { 0x00000020, 23803 }, /* space */ - { 0x0100221a, 23809 }, /* squareroot */ - { 0x000000df, 23820 }, /* ssharp */ - { 0x000000a3, 23827 }, /* sterling */ - { 0x0000fe75, 23836 }, /* StickyKeys_Enable */ - { 0x01002263, 23854 }, /* stricteq */ - { 0x0000ff66, 23863 }, /* SunAgain */ - { 0x0000ff7e, 23872 }, /* SunAltGraph */ - { 0x1005ff77, 23884 }, /* SunAudioLowerVolume */ - { 0x1005ff78, 23904 }, /* SunAudioMute */ - { 0x1005ff79, 23917 }, /* SunAudioRaiseVolume */ - { 0x0000ff20, 23937 }, /* SunCompose */ - { 0x1005ff72, 23948 }, /* SunCopy */ - { 0x1005ff75, 23956 }, /* SunCut */ - { 0x1005ff10, 23963 }, /* SunF36 */ - { 0x1005ff11, 23970 }, /* SunF37 */ - { 0x1005ff03, 23977 }, /* SunFA_Acute */ - { 0x1005ff05, 23989 }, /* SunFA_Cedilla */ - { 0x1005ff01, 24003 }, /* SunFA_Circum */ - { 0x1005ff04, 24016 }, /* SunFA_Diaeresis */ - { 0x1005ff00, 24032 }, /* SunFA_Grave */ - { 0x1005ff02, 24044 }, /* SunFA_Tilde */ - { 0x0000ff68, 24056 }, /* SunFind */ - { 0x1005ff71, 24064 }, /* SunFront */ - { 0x1005ff73, 24073 }, /* SunOpen */ - { 0x0000ff56, 24081 }, /* SunPageDown */ - { 0x0000ff55, 24093 }, /* SunPageUp */ - { 0x1005ff74, 24103 }, /* SunPaste */ - { 0x1005ff76, 24112 }, /* SunPowerSwitch */ - { 0x1005ff7d, 24127 }, /* SunPowerSwitchShift */ - { 0x0000ff61, 24147 }, /* SunPrint_Screen */ - { 0x1005ff70, 24163 }, /* SunProps */ - { 0x0000ff69, 24172 }, /* SunStop */ - { 0x1005ff60, 24180 }, /* SunSys_Req */ - { 0x0000ff65, 24191 }, /* SunUndo */ - { 0x1005ff7a, 24199 }, /* SunVideoDegauss */ - { 0x1005ff7b, 24215 }, /* SunVideoLowerBrightness */ - { 0x1005ff7c, 24239 }, /* SunVideoRaiseBrightness */ - { 0x0000ffeb, 24263 }, /* Super_L */ - { 0x0000ffec, 24271 }, /* Super_R */ - { 0x0000ff15, 24279 }, /* Sys_Req */ - { 0x1000ff6d, 24287 }, /* System */ - { 0x00000054, 24294 }, /* T */ - { 0x00000074, 24296 }, /* t */ - { 0x0000ff09, 24298 }, /* Tab */ - { 0x01001e6a, 24302 }, /* Tabovedot */ - { 0x01001e6b, 24312 }, /* tabovedot */ - { 0x000001ab, 24322 }, /* Tcaron */ - { 0x000001bb, 24329 }, /* tcaron */ - { 0x000001de, 24336 }, /* Tcedilla */ - { 0x000001fe, 24345 }, /* tcedilla */ - { 0x00000af9, 24354 }, /* telephone */ - { 0x00000afa, 24364 }, /* telephonerecorder */ - { 0x0000fed5, 24382 }, /* Terminate_Server */ - { 0x00000ddf, 24399 }, /* Thai_baht */ - { 0x00000dba, 24409 }, /* Thai_bobaimai */ - { 0x00000da8, 24423 }, /* Thai_chochan */ - { 0x00000daa, 24436 }, /* Thai_chochang */ - { 0x00000da9, 24450 }, /* Thai_choching */ - { 0x00000dac, 24464 }, /* Thai_chochoe */ - { 0x00000dae, 24477 }, /* Thai_dochada */ - { 0x00000db4, 24490 }, /* Thai_dodek */ - { 0x00000dbd, 24501 }, /* Thai_fofa */ - { 0x00000dbf, 24511 }, /* Thai_fofan */ - { 0x00000dcb, 24522 }, /* Thai_hohip */ - { 0x00000dce, 24533 }, /* Thai_honokhuk */ - { 0x00000da2, 24547 }, /* Thai_khokhai */ - { 0x00000da5, 24560 }, /* Thai_khokhon */ - { 0x00000da3, 24573 }, /* Thai_khokhuat */ - { 0x00000da4, 24587 }, /* Thai_khokhwai */ - { 0x00000da6, 24601 }, /* Thai_khorakhang */ - { 0x00000da1, 24617 }, /* Thai_kokai */ - { 0x00000de5, 24628 }, /* Thai_lakkhangyao */ - { 0x00000df7, 24645 }, /* Thai_lekchet */ - { 0x00000df5, 24658 }, /* Thai_lekha */ - { 0x00000df6, 24669 }, /* Thai_lekhok */ - { 0x00000df9, 24681 }, /* Thai_lekkao */ - { 0x00000df1, 24693 }, /* Thai_leknung */ - { 0x00000df8, 24706 }, /* Thai_lekpaet */ - { 0x00000df3, 24719 }, /* Thai_leksam */ - { 0x00000df4, 24731 }, /* Thai_leksi */ - { 0x00000df2, 24742 }, /* Thai_leksong */ - { 0x00000df0, 24755 }, /* Thai_leksun */ - { 0x00000dcc, 24767 }, /* Thai_lochula */ - { 0x00000dc5, 24780 }, /* Thai_loling */ - { 0x00000dc6, 24792 }, /* Thai_lu */ - { 0x00000deb, 24800 }, /* Thai_maichattawa */ - { 0x00000de8, 24817 }, /* Thai_maiek */ - { 0x00000dd1, 24828 }, /* Thai_maihanakat */ - { 0x00000dde, 24844 }, /* Thai_maihanakat_maitho */ - { 0x00000de7, 24867 }, /* Thai_maitaikhu */ - { 0x00000de9, 24882 }, /* Thai_maitho */ - { 0x00000dea, 24894 }, /* Thai_maitri */ - { 0x00000de6, 24906 }, /* Thai_maiyamok */ - { 0x00000dc1, 24920 }, /* Thai_moma */ - { 0x00000da7, 24930 }, /* Thai_ngongu */ - { 0x00000ded, 24942 }, /* Thai_nikhahit */ - { 0x00000db3, 24956 }, /* Thai_nonen */ - { 0x00000db9, 24967 }, /* Thai_nonu */ - { 0x00000dcd, 24977 }, /* Thai_oang */ - { 0x00000dcf, 24987 }, /* Thai_paiyannoi */ - { 0x00000dda, 25002 }, /* Thai_phinthu */ - { 0x00000dbe, 25015 }, /* Thai_phophan */ - { 0x00000dbc, 25028 }, /* Thai_phophung */ - { 0x00000dc0, 25042 }, /* Thai_phosamphao */ - { 0x00000dbb, 25058 }, /* Thai_popla */ - { 0x00000dc3, 25069 }, /* Thai_rorua */ - { 0x00000dc4, 25080 }, /* Thai_ru */ - { 0x00000dd0, 25088 }, /* Thai_saraa */ - { 0x00000dd2, 25099 }, /* Thai_saraaa */ - { 0x00000de1, 25111 }, /* Thai_saraae */ - { 0x00000de4, 25123 }, /* Thai_saraaimaimalai */ - { 0x00000de3, 25143 }, /* Thai_saraaimaimuan */ - { 0x00000dd3, 25162 }, /* Thai_saraam */ - { 0x00000de0, 25174 }, /* Thai_sarae */ - { 0x00000dd4, 25185 }, /* Thai_sarai */ - { 0x00000dd5, 25196 }, /* Thai_saraii */ - { 0x00000de2, 25208 }, /* Thai_sarao */ - { 0x00000dd8, 25219 }, /* Thai_sarau */ - { 0x00000dd6, 25230 }, /* Thai_saraue */ - { 0x00000dd7, 25242 }, /* Thai_sarauee */ - { 0x00000dd9, 25255 }, /* Thai_sarauu */ - { 0x00000dc9, 25267 }, /* Thai_sorusi */ - { 0x00000dc8, 25279 }, /* Thai_sosala */ - { 0x00000dab, 25291 }, /* Thai_soso */ - { 0x00000dca, 25301 }, /* Thai_sosua */ - { 0x00000dec, 25312 }, /* Thai_thanthakhat */ - { 0x00000db1, 25329 }, /* Thai_thonangmontho */ - { 0x00000db2, 25348 }, /* Thai_thophuthao */ - { 0x00000db7, 25364 }, /* Thai_thothahan */ - { 0x00000db0, 25379 }, /* Thai_thothan */ - { 0x00000db8, 25392 }, /* Thai_thothong */ - { 0x00000db6, 25406 }, /* Thai_thothung */ - { 0x00000daf, 25420 }, /* Thai_topatak */ - { 0x00000db5, 25433 }, /* Thai_totao */ - { 0x00000dc7, 25444 }, /* Thai_wowaen */ - { 0x00000dc2, 25456 }, /* Thai_yoyak */ - { 0x00000dad, 25467 }, /* Thai_yoying */ - { 0x000008c0, 25479 }, /* therefore */ - { 0x00000aa7, 25489 }, /* thinspace */ - { 0x000000de, 25499 }, /* THORN */ - { 0x000000de, 25505 }, /* Thorn */ - { 0x000000fe, 25511 }, /* thorn */ - { 0x00000ac4, 25517 }, /* threeeighths */ - { 0x00000ab4, 25530 }, /* threefifths */ - { 0x000000be, 25542 }, /* threequarters */ - { 0x01002083, 25556 }, /* threesubscript */ - { 0x000000b3, 25571 }, /* threesuperior */ - { 0x0100222d, 25585 }, /* tintegral */ - { 0x000008a4, 25595 }, /* topintegral */ - { 0x000008ab, 25607 }, /* topleftparens */ - { 0x000008a2, 25621 }, /* topleftradical */ - { 0x000008a7, 25636 }, /* topleftsqbracket */ - { 0x000008b1, 25653 }, /* topleftsummation */ - { 0x000008ad, 25670 }, /* toprightparens */ - { 0x000008a9, 25685 }, /* toprightsqbracket */ - { 0x000008b5, 25703 }, /* toprightsummation */ - { 0x000009f7, 25721 }, /* topt */ - { 0x000008b3, 25726 }, /* topvertsummationconnector */ - { 0x0000ff2b, 25752 }, /* Touroku */ - { 0x00000ac9, 25760 }, /* trademark */ - { 0x00000acb, 25770 }, /* trademarkincircle */ - { 0x000003ac, 25788 }, /* Tslash */ - { 0x000003bc, 25795 }, /* tslash */ - { 0x00000ab3, 25802 }, /* twofifths */ - { 0x01002082, 25812 }, /* twosubscript */ - { 0x000000b2, 25825 }, /* twosuperior */ - { 0x00000ab1, 25837 }, /* twothirds */ - { 0x00000055, 25847 }, /* U */ - { 0x00000075, 25849 }, /* u */ - { 0x000000da, 25851 }, /* Uacute */ - { 0x000000fa, 25858 }, /* uacute */ - { 0x01001ee4, 25865 }, /* Ubelowdot */ - { 0x01001ee5, 25875 }, /* ubelowdot */ - { 0x000002dd, 25885 }, /* Ubreve */ - { 0x000002fd, 25892 }, /* ubreve */ - { 0x000000db, 25899 }, /* Ucircumflex */ - { 0x000000fb, 25911 }, /* ucircumflex */ - { 0x000000dc, 25923 }, /* Udiaeresis */ - { 0x000000fc, 25934 }, /* udiaeresis */ - { 0x000001db, 25945 }, /* Udoubleacute */ - { 0x000001fb, 25958 }, /* udoubleacute */ - { 0x000000d9, 25971 }, /* Ugrave */ - { 0x000000f9, 25978 }, /* ugrave */ - { 0x01001ee6, 25985 }, /* Uhook */ - { 0x01001ee7, 25991 }, /* uhook */ - { 0x010001af, 25997 }, /* Uhorn */ - { 0x010001b0, 26003 }, /* uhorn */ - { 0x01001ee8, 26009 }, /* Uhornacute */ - { 0x01001ee9, 26020 }, /* uhornacute */ - { 0x01001ef0, 26031 }, /* Uhornbelowdot */ - { 0x01001ef1, 26045 }, /* uhornbelowdot */ - { 0x01001eea, 26059 }, /* Uhorngrave */ - { 0x01001eeb, 26070 }, /* uhorngrave */ - { 0x01001eec, 26081 }, /* Uhornhook */ - { 0x01001eed, 26091 }, /* uhornhook */ - { 0x01001eee, 26101 }, /* Uhorntilde */ - { 0x01001eef, 26112 }, /* uhorntilde */ - { 0x000006ad, 26123 }, /* Ukrainian_ghe_with_upturn */ - { 0x000006bd, 26149 }, /* Ukrainian_GHE_WITH_UPTURN */ - { 0x000006a6, 26175 }, /* Ukrainian_i */ - { 0x000006b6, 26187 }, /* Ukrainian_I */ - { 0x000006a4, 26199 }, /* Ukrainian_ie */ - { 0x000006b4, 26212 }, /* Ukrainian_IE */ - { 0x000006a7, 26225 }, /* Ukrainian_yi */ - { 0x000006b7, 26238 }, /* Ukrainian_YI */ - { 0x000006a6, 26251 }, /* Ukranian_i */ - { 0x000006b6, 26262 }, /* Ukranian_I */ - { 0x000006a4, 26273 }, /* Ukranian_je */ - { 0x000006b4, 26285 }, /* Ukranian_JE */ - { 0x000006a7, 26297 }, /* Ukranian_yi */ - { 0x000006b7, 26309 }, /* Ukranian_YI */ - { 0x000003de, 26321 }, /* Umacron */ - { 0x000003fe, 26329 }, /* umacron */ - { 0x00000bc6, 26337 }, /* underbar */ - { 0x0000005f, 26346 }, /* underscore */ - { 0x0000ff65, 26357 }, /* Undo */ - { 0x000008dd, 26362 }, /* union */ - { 0x000003d9, 26368 }, /* Uogonek */ - { 0x000003f9, 26376 }, /* uogonek */ - { 0x0000ff52, 26384 }, /* Up */ - { 0x000008fc, 26387 }, /* uparrow */ - { 0x00000ba9, 26395 }, /* upcaret */ - { 0x000009ec, 26403 }, /* upleftcorner */ - { 0x000009eb, 26416 }, /* uprightcorner */ - { 0x00000bc3, 26430 }, /* upshoe */ - { 0x00000bd3, 26437 }, /* upstile */ - { 0x00000bce, 26445 }, /* uptack */ - { 0x000001d9, 26452 }, /* Uring */ - { 0x000001f9, 26458 }, /* uring */ - { 0x1000ff6e, 26464 }, /* User */ - { 0x000003dd, 26469 }, /* Utilde */ - { 0x000003fd, 26476 }, /* utilde */ - { 0x00000056, 26483 }, /* V */ - { 0x00000076, 26485 }, /* v */ - { 0x000008c1, 26487 }, /* variation */ - { 0x000009f8, 26497 }, /* vertbar */ - { 0x000008a6, 26505 }, /* vertconnector */ - { 0x000004de, 26519 }, /* voicedsound */ - { 0x00ffffff, 26531 }, /* VoidSymbol */ - { 0x000009e9, 26542 }, /* vt */ - { 0x00000057, 26545 }, /* W */ - { 0x00000077, 26547 }, /* w */ - { 0x01001e82, 26549 }, /* Wacute */ - { 0x01001e83, 26556 }, /* wacute */ - { 0x01000174, 26563 }, /* Wcircumflex */ - { 0x01000175, 26575 }, /* wcircumflex */ - { 0x01001e84, 26587 }, /* Wdiaeresis */ - { 0x01001e85, 26598 }, /* wdiaeresis */ - { 0x01001e80, 26609 }, /* Wgrave */ - { 0x01001e81, 26616 }, /* wgrave */ - { 0x010020a9, 26623 }, /* WonSign */ - { 0x00000058, 26631 }, /* X */ - { 0x00000078, 26633 }, /* x */ - { 0x01001e8a, 26635 }, /* Xabovedot */ - { 0x01001e8b, 26645 }, /* xabovedot */ - { 0x1008ff39, 26655 }, /* XF86AddFavorite */ - { 0x1008ff50, 26671 }, /* XF86ApplicationLeft */ - { 0x1008ff51, 26691 }, /* XF86ApplicationRight */ - { 0x1008ff9b, 26712 }, /* XF86AudioCycleTrack */ - { 0x1008ff97, 26732 }, /* XF86AudioForward */ - { 0x1008ff11, 26749 }, /* XF86AudioLowerVolume */ - { 0x1008ff32, 26770 }, /* XF86AudioMedia */ - { 0x1008ffb2, 26785 }, /* XF86AudioMicMute */ - { 0x1008ff12, 26802 }, /* XF86AudioMute */ - { 0x1008ff17, 26816 }, /* XF86AudioNext */ - { 0x1008ff31, 26830 }, /* XF86AudioPause */ - { 0x1008ff14, 26845 }, /* XF86AudioPlay */ - { 0x1008ffb6, 26859 }, /* XF86AudioPreset */ - { 0x1008ff16, 26875 }, /* XF86AudioPrev */ - { 0x1008ff13, 26889 }, /* XF86AudioRaiseVolume */ - { 0x1008ff99, 26910 }, /* XF86AudioRandomPlay */ - { 0x1008ff1c, 26930 }, /* XF86AudioRecord */ - { 0x1008ff98, 26946 }, /* XF86AudioRepeat */ - { 0x1008ff3e, 26962 }, /* XF86AudioRewind */ - { 0x1008ff15, 26978 }, /* XF86AudioStop */ - { 0x1008ff8d, 26992 }, /* XF86Away */ - { 0x1008ff26, 27001 }, /* XF86Back */ - { 0x1008ff3f, 27010 }, /* XF86BackForward */ - { 0x1008ff93, 27026 }, /* XF86Battery */ - { 0x1008ffa6, 27038 }, /* XF86Blue */ - { 0x1008ff94, 27047 }, /* XF86Bluetooth */ - { 0x1008ff52, 27061 }, /* XF86Book */ - { 0x1008ff3b, 27070 }, /* XF86BrightnessAdjust */ - { 0x1008ff54, 27091 }, /* XF86Calculater */ - { 0x1008ff1d, 27106 }, /* XF86Calculator */ - { 0x1008ff20, 27121 }, /* XF86Calendar */ - { 0x1008ff53, 27134 }, /* XF86CD */ - { 0x1008ff55, 27141 }, /* XF86Clear */ - { 0x1008fe21, 27151 }, /* XF86ClearGrab */ - { 0x1008ff56, 27165 }, /* XF86Close */ - { 0x1008ff3d, 27175 }, /* XF86Community */ - { 0x1008ff22, 27189 }, /* XF86ContrastAdjust */ - { 0x1008ff57, 27208 }, /* XF86Copy */ - { 0x1008ff58, 27217 }, /* XF86Cut */ - { 0x1008ff9c, 27225 }, /* XF86CycleAngle */ - { 0x1008ff59, 27240 }, /* XF86Display */ - { 0x1008ff5b, 27252 }, /* XF86Documents */ - { 0x1008ff5a, 27266 }, /* XF86DOS */ - { 0x1008ff2c, 27274 }, /* XF86Eject */ - { 0x1008ff5c, 27284 }, /* XF86Excel */ - { 0x1008ff5d, 27294 }, /* XF86Explorer */ - { 0x1008ff30, 27307 }, /* XF86Favorites */ - { 0x1008ff3c, 27321 }, /* XF86Finance */ - { 0x1008ff27, 27333 }, /* XF86Forward */ - { 0x1008ff9d, 27345 }, /* XF86FrameBack */ - { 0x1008ff9e, 27359 }, /* XF86FrameForward */ - { 0x1008ffb8, 27376 }, /* XF86FullScreen */ - { 0x1008ff5e, 27391 }, /* XF86Game */ - { 0x1008ff5f, 27400 }, /* XF86Go */ - { 0x1008ffa4, 27407 }, /* XF86Green */ - { 0x1008ffa8, 27417 }, /* XF86Hibernate */ - { 0x1008ff37, 27431 }, /* XF86History */ - { 0x1008ff18, 27443 }, /* XF86HomePage */ - { 0x1008ff3a, 27456 }, /* XF86HotLinks */ - { 0x1008ff60, 27469 }, /* XF86iTouch */ - { 0x1008ff06, 27480 }, /* XF86KbdBrightnessDown */ - { 0x1008ff05, 27502 }, /* XF86KbdBrightnessUp */ - { 0x1008ff04, 27522 }, /* XF86KbdLightOnOff */ - { 0x1008ffb3, 27540 }, /* XF86Keyboard */ - { 0x1008ff40, 27553 }, /* XF86Launch0 */ - { 0x1008ff41, 27565 }, /* XF86Launch1 */ - { 0x1008ff42, 27577 }, /* XF86Launch2 */ - { 0x1008ff43, 27589 }, /* XF86Launch3 */ - { 0x1008ff44, 27601 }, /* XF86Launch4 */ - { 0x1008ff45, 27613 }, /* XF86Launch5 */ - { 0x1008ff46, 27625 }, /* XF86Launch6 */ - { 0x1008ff47, 27637 }, /* XF86Launch7 */ - { 0x1008ff48, 27649 }, /* XF86Launch8 */ - { 0x1008ff49, 27661 }, /* XF86Launch9 */ - { 0x1008ff4a, 27673 }, /* XF86LaunchA */ - { 0x1008ff4b, 27685 }, /* XF86LaunchB */ - { 0x1008ff4c, 27697 }, /* XF86LaunchC */ - { 0x1008ff4d, 27709 }, /* XF86LaunchD */ - { 0x1008ff4e, 27721 }, /* XF86LaunchE */ - { 0x1008ff4f, 27733 }, /* XF86LaunchF */ - { 0x1008ff35, 27745 }, /* XF86LightBulb */ - { 0x1008fe25, 27759 }, /* XF86LogGrabInfo */ - { 0x1008ff61, 27775 }, /* XF86LogOff */ - { 0x1008fe24, 27786 }, /* XF86LogWindowTree */ - { 0x1008ff19, 27804 }, /* XF86Mail */ - { 0x1008ff90, 27813 }, /* XF86MailForward */ - { 0x1008ff62, 27829 }, /* XF86Market */ - { 0x1008ff63, 27840 }, /* XF86Meeting */ - { 0x1008ff1e, 27852 }, /* XF86Memo */ - { 0x1008ff65, 27861 }, /* XF86MenuKB */ - { 0x1008ff66, 27872 }, /* XF86MenuPB */ - { 0x1008ff8e, 27883 }, /* XF86Messenger */ - { 0x1008ff01, 27897 }, /* XF86ModeLock */ - { 0x1008ff07, 27910 }, /* XF86MonBrightnessCycle */ - { 0x1008ff03, 27933 }, /* XF86MonBrightnessDown */ - { 0x1008ff02, 27955 }, /* XF86MonBrightnessUp */ - { 0x1008ff92, 27975 }, /* XF86Music */ - { 0x1008ff33, 27985 }, /* XF86MyComputer */ - { 0x1008ff67, 28000 }, /* XF86MySites */ - { 0x1008ff68, 28012 }, /* XF86New */ - { 0x1008ff69, 28020 }, /* XF86News */ - { 0x1008fe22, 28029 }, /* XF86Next_VMode */ - { 0x1008ff6a, 28044 }, /* XF86OfficeHome */ - { 0x1008ff6b, 28059 }, /* XF86Open */ - { 0x1008ff38, 28068 }, /* XF86OpenURL */ - { 0x1008ff6c, 28080 }, /* XF86Option */ - { 0x1008ff6d, 28091 }, /* XF86Paste */ - { 0x1008ff6e, 28101 }, /* XF86Phone */ - { 0x1008ff91, 28111 }, /* XF86Pictures */ - { 0x1008ff21, 28124 }, /* XF86PowerDown */ - { 0x1008ff2a, 28138 }, /* XF86PowerOff */ - { 0x1008fe23, 28151 }, /* XF86Prev_VMode */ - { 0x1008ff70, 28166 }, /* XF86Q */ - { 0x1008ffa3, 28172 }, /* XF86Red */ - { 0x1008ff29, 28180 }, /* XF86Refresh */ - { 0x1008ff73, 28192 }, /* XF86Reload */ - { 0x1008ff72, 28203 }, /* XF86Reply */ - { 0x1008ffb5, 28213 }, /* XF86RFKill */ - { 0x1008ff24, 28224 }, /* XF86RockerDown */ - { 0x1008ff25, 28239 }, /* XF86RockerEnter */ - { 0x1008ff23, 28255 }, /* XF86RockerUp */ - { 0x1008ff74, 28268 }, /* XF86RotateWindows */ - { 0x1008ff76, 28286 }, /* XF86RotationKB */ - { 0x1008ffb7, 28301 }, /* XF86RotationLockToggle */ - { 0x1008ff75, 28324 }, /* XF86RotationPB */ - { 0x1008ff77, 28339 }, /* XF86Save */ - { 0x1008ff2d, 28348 }, /* XF86ScreenSaver */ - { 0x1008ff7a, 28364 }, /* XF86ScrollClick */ - { 0x1008ff79, 28380 }, /* XF86ScrollDown */ - { 0x1008ff78, 28395 }, /* XF86ScrollUp */ - { 0x1008ff1b, 28408 }, /* XF86Search */ - { 0x1008ffa0, 28419 }, /* XF86Select */ - { 0x1008ff7b, 28430 }, /* XF86Send */ - { 0x1008ff36, 28439 }, /* XF86Shop */ - { 0x1008ff2f, 28448 }, /* XF86Sleep */ - { 0x1008ff7c, 28458 }, /* XF86Spell */ - { 0x1008ff7d, 28468 }, /* XF86SplitScreen */ - { 0x1008ff10, 28484 }, /* XF86Standby */ - { 0x1008ff1a, 28496 }, /* XF86Start */ - { 0x1008ff28, 28506 }, /* XF86Stop */ - { 0x1008ff9a, 28515 }, /* XF86Subtitle */ - { 0x1008ff7e, 28528 }, /* XF86Support */ - { 0x1008ffa7, 28540 }, /* XF86Suspend */ - { 0x1008fe01, 28552 }, /* XF86Switch_VT_1 */ - { 0x1008fe0a, 28568 }, /* XF86Switch_VT_10 */ - { 0x1008fe0b, 28585 }, /* XF86Switch_VT_11 */ - { 0x1008fe0c, 28602 }, /* XF86Switch_VT_12 */ - { 0x1008fe02, 28619 }, /* XF86Switch_VT_2 */ - { 0x1008fe03, 28635 }, /* XF86Switch_VT_3 */ - { 0x1008fe04, 28651 }, /* XF86Switch_VT_4 */ - { 0x1008fe05, 28667 }, /* XF86Switch_VT_5 */ - { 0x1008fe06, 28683 }, /* XF86Switch_VT_6 */ - { 0x1008fe07, 28699 }, /* XF86Switch_VT_7 */ - { 0x1008fe08, 28715 }, /* XF86Switch_VT_8 */ - { 0x1008fe09, 28731 }, /* XF86Switch_VT_9 */ - { 0x1008ff7f, 28747 }, /* XF86TaskPane */ - { 0x1008ff80, 28760 }, /* XF86Terminal */ - { 0x1008ff9f, 28773 }, /* XF86Time */ - { 0x1008ff1f, 28782 }, /* XF86ToDoList */ - { 0x1008ff81, 28795 }, /* XF86Tools */ - { 0x1008ffa2, 28805 }, /* XF86TopMenu */ - { 0x1008ffb1, 28817 }, /* XF86TouchpadOff */ - { 0x1008ffb0, 28833 }, /* XF86TouchpadOn */ - { 0x1008ffa9, 28848 }, /* XF86TouchpadToggle */ - { 0x1008ff82, 28867 }, /* XF86Travel */ - { 0x1008fe20, 28878 }, /* XF86Ungrab */ - { 0x1008ff85, 28889 }, /* XF86User1KB */ - { 0x1008ff86, 28901 }, /* XF86User2KB */ - { 0x1008ff84, 28913 }, /* XF86UserPB */ - { 0x1008ff96, 28924 }, /* XF86UWB */ - { 0x1008ff34, 28932 }, /* XF86VendorHome */ - { 0x1008ff87, 28947 }, /* XF86Video */ - { 0x1008ffa1, 28957 }, /* XF86View */ - { 0x1008ff2b, 28966 }, /* XF86WakeUp */ - { 0x1008ff8f, 28977 }, /* XF86WebCam */ - { 0x1008ff88, 28988 }, /* XF86WheelButton */ - { 0x1008ff95, 29004 }, /* XF86WLAN */ - { 0x1008ff89, 29013 }, /* XF86Word */ - { 0x1008ffb4, 29022 }, /* XF86WWAN */ - { 0x1008ff2e, 29031 }, /* XF86WWW */ - { 0x1008ff8a, 29039 }, /* XF86Xfer */ - { 0x1008ffa5, 29048 }, /* XF86Yellow */ - { 0x1008ff8b, 29059 }, /* XF86ZoomIn */ - { 0x1008ff8c, 29070 }, /* XF86ZoomOut */ - { 0x00000059, 29082 }, /* Y */ - { 0x00000079, 29084 }, /* y */ - { 0x000000dd, 29086 }, /* Yacute */ - { 0x000000fd, 29093 }, /* yacute */ - { 0x01001ef4, 29100 }, /* Ybelowdot */ - { 0x01001ef5, 29110 }, /* ybelowdot */ - { 0x01000176, 29120 }, /* Ycircumflex */ - { 0x01000177, 29132 }, /* ycircumflex */ - { 0x000000ff, 29144 }, /* ydiaeresis */ - { 0x000013be, 29155 }, /* Ydiaeresis */ - { 0x000000a5, 29166 }, /* yen */ - { 0x01001ef2, 29170 }, /* Ygrave */ - { 0x01001ef3, 29177 }, /* ygrave */ - { 0x01001ef6, 29184 }, /* Yhook */ - { 0x01001ef7, 29190 }, /* yhook */ - { 0x01001ef8, 29196 }, /* Ytilde */ - { 0x01001ef9, 29203 }, /* ytilde */ - { 0x0000005a, 29210 }, /* Z */ - { 0x0000007a, 29212 }, /* z */ - { 0x000001af, 29214 }, /* Zabovedot */ - { 0x000001bf, 29224 }, /* zabovedot */ - { 0x000001ac, 29234 }, /* Zacute */ - { 0x000001bc, 29241 }, /* zacute */ - { 0x000001ae, 29248 }, /* Zcaron */ - { 0x000001be, 29255 }, /* zcaron */ - { 0x0000ff3d, 29262 }, /* Zen_Koho */ - { 0x0000ff28, 29271 }, /* Zenkaku */ - { 0x0000ff2a, 29279 }, /* Zenkaku_Hankaku */ - { 0x01002080, 29295 }, /* zerosubscript */ - { 0x01002070, 29309 }, /* zerosuperior */ - { 0x010001b5, 29322 }, /* Zstroke */ - { 0x010001b6, 29330 }, /* zstroke */ + { 0x01000301, 8680 }, /* combining_acute */ + { 0x01000323, 8696 }, /* combining_belowdot */ + { 0x01000300, 8715 }, /* combining_grave */ + { 0x01000309, 8731 }, /* combining_hook */ + { 0x01000303, 8746 }, /* combining_tilde */ + { 0x0000002c, 8762 }, /* comma */ + { 0x0100220b, 8768 }, /* containsas */ + { 0x0000ffe3, 8779 }, /* Control_L */ + { 0x0000ffe4, 8789 }, /* Control_R */ + { 0x000000a9, 8799 }, /* copyright */ + { 0x000009e4, 8809 }, /* cr */ + { 0x000009ee, 8812 }, /* crossinglines */ + { 0x010020a2, 8826 }, /* CruzeiroSign */ + { 0x0100221b, 8839 }, /* cuberoot */ + { 0x000000a4, 8848 }, /* currency */ + { 0x00000aff, 8857 }, /* cursor */ + { 0x000006c1, 8864 }, /* Cyrillic_a */ + { 0x000006e1, 8875 }, /* Cyrillic_A */ + { 0x000006c2, 8886 }, /* Cyrillic_be */ + { 0x000006e2, 8898 }, /* Cyrillic_BE */ + { 0x000006de, 8910 }, /* Cyrillic_che */ + { 0x000006fe, 8923 }, /* Cyrillic_CHE */ + { 0x010004b6, 8936 }, /* Cyrillic_CHE_descender */ + { 0x010004b7, 8959 }, /* Cyrillic_che_descender */ + { 0x010004b8, 8982 }, /* Cyrillic_CHE_vertstroke */ + { 0x010004b9, 9006 }, /* Cyrillic_che_vertstroke */ + { 0x000006c4, 9030 }, /* Cyrillic_de */ + { 0x000006e4, 9042 }, /* Cyrillic_DE */ + { 0x000006af, 9054 }, /* Cyrillic_dzhe */ + { 0x000006bf, 9068 }, /* Cyrillic_DZHE */ + { 0x000006dc, 9082 }, /* Cyrillic_e */ + { 0x000006fc, 9093 }, /* Cyrillic_E */ + { 0x000006c6, 9104 }, /* Cyrillic_ef */ + { 0x000006e6, 9116 }, /* Cyrillic_EF */ + { 0x000006cc, 9128 }, /* Cyrillic_el */ + { 0x000006ec, 9140 }, /* Cyrillic_EL */ + { 0x000006cd, 9152 }, /* Cyrillic_em */ + { 0x000006ed, 9164 }, /* Cyrillic_EM */ + { 0x000006ce, 9176 }, /* Cyrillic_en */ + { 0x000006ee, 9188 }, /* Cyrillic_EN */ + { 0x010004a2, 9200 }, /* Cyrillic_EN_descender */ + { 0x010004a3, 9222 }, /* Cyrillic_en_descender */ + { 0x000006d2, 9244 }, /* Cyrillic_er */ + { 0x000006f2, 9256 }, /* Cyrillic_ER */ + { 0x000006d3, 9268 }, /* Cyrillic_es */ + { 0x000006f3, 9280 }, /* Cyrillic_ES */ + { 0x000006c7, 9292 }, /* Cyrillic_ghe */ + { 0x000006e7, 9305 }, /* Cyrillic_GHE */ + { 0x01000492, 9318 }, /* Cyrillic_GHE_bar */ + { 0x01000493, 9335 }, /* Cyrillic_ghe_bar */ + { 0x000006c8, 9352 }, /* Cyrillic_ha */ + { 0x000006e8, 9364 }, /* Cyrillic_HA */ + { 0x010004b2, 9376 }, /* Cyrillic_HA_descender */ + { 0x010004b3, 9398 }, /* Cyrillic_ha_descender */ + { 0x000006df, 9420 }, /* Cyrillic_hardsign */ + { 0x000006ff, 9438 }, /* Cyrillic_HARDSIGN */ + { 0x000006c9, 9456 }, /* Cyrillic_i */ + { 0x000006e9, 9467 }, /* Cyrillic_I */ + { 0x010004e2, 9478 }, /* Cyrillic_I_macron */ + { 0x010004e3, 9496 }, /* Cyrillic_i_macron */ + { 0x000006c5, 9514 }, /* Cyrillic_ie */ + { 0x000006e5, 9526 }, /* Cyrillic_IE */ + { 0x000006a3, 9538 }, /* Cyrillic_io */ + { 0x000006b3, 9550 }, /* Cyrillic_IO */ + { 0x000006a8, 9562 }, /* Cyrillic_je */ + { 0x000006b8, 9574 }, /* Cyrillic_JE */ + { 0x000006cb, 9586 }, /* Cyrillic_ka */ + { 0x000006eb, 9598 }, /* Cyrillic_KA */ + { 0x0100049a, 9610 }, /* Cyrillic_KA_descender */ + { 0x0100049b, 9632 }, /* Cyrillic_ka_descender */ + { 0x0100049c, 9654 }, /* Cyrillic_KA_vertstroke */ + { 0x0100049d, 9677 }, /* Cyrillic_ka_vertstroke */ + { 0x000006a9, 9700 }, /* Cyrillic_lje */ + { 0x000006b9, 9713 }, /* Cyrillic_LJE */ + { 0x000006aa, 9726 }, /* Cyrillic_nje */ + { 0x000006ba, 9739 }, /* Cyrillic_NJE */ + { 0x000006cf, 9752 }, /* Cyrillic_o */ + { 0x000006ef, 9763 }, /* Cyrillic_O */ + { 0x010004e8, 9774 }, /* Cyrillic_O_bar */ + { 0x010004e9, 9789 }, /* Cyrillic_o_bar */ + { 0x000006d0, 9804 }, /* Cyrillic_pe */ + { 0x000006f0, 9816 }, /* Cyrillic_PE */ + { 0x010004d8, 9828 }, /* Cyrillic_SCHWA */ + { 0x010004d9, 9843 }, /* Cyrillic_schwa */ + { 0x000006db, 9858 }, /* Cyrillic_sha */ + { 0x000006fb, 9871 }, /* Cyrillic_SHA */ + { 0x000006dd, 9884 }, /* Cyrillic_shcha */ + { 0x000006fd, 9899 }, /* Cyrillic_SHCHA */ + { 0x010004ba, 9914 }, /* Cyrillic_SHHA */ + { 0x010004bb, 9928 }, /* Cyrillic_shha */ + { 0x000006ca, 9942 }, /* Cyrillic_shorti */ + { 0x000006ea, 9958 }, /* Cyrillic_SHORTI */ + { 0x000006d8, 9974 }, /* Cyrillic_softsign */ + { 0x000006f8, 9992 }, /* Cyrillic_SOFTSIGN */ + { 0x000006d4, 10010 }, /* Cyrillic_te */ + { 0x000006f4, 10022 }, /* Cyrillic_TE */ + { 0x000006c3, 10034 }, /* Cyrillic_tse */ + { 0x000006e3, 10047 }, /* Cyrillic_TSE */ + { 0x000006d5, 10060 }, /* Cyrillic_u */ + { 0x000006f5, 10071 }, /* Cyrillic_U */ + { 0x010004ee, 10082 }, /* Cyrillic_U_macron */ + { 0x010004ef, 10100 }, /* Cyrillic_u_macron */ + { 0x010004ae, 10118 }, /* Cyrillic_U_straight */ + { 0x010004af, 10138 }, /* Cyrillic_u_straight */ + { 0x010004b0, 10158 }, /* Cyrillic_U_straight_bar */ + { 0x010004b1, 10182 }, /* Cyrillic_u_straight_bar */ + { 0x000006d7, 10206 }, /* Cyrillic_ve */ + { 0x000006f7, 10218 }, /* Cyrillic_VE */ + { 0x000006d1, 10230 }, /* Cyrillic_ya */ + { 0x000006f1, 10242 }, /* Cyrillic_YA */ + { 0x000006d9, 10254 }, /* Cyrillic_yeru */ + { 0x000006f9, 10268 }, /* Cyrillic_YERU */ + { 0x000006c0, 10282 }, /* Cyrillic_yu */ + { 0x000006e0, 10294 }, /* Cyrillic_YU */ + { 0x000006da, 10306 }, /* Cyrillic_ze */ + { 0x000006fa, 10318 }, /* Cyrillic_ZE */ + { 0x000006d6, 10330 }, /* Cyrillic_zhe */ + { 0x000006f6, 10343 }, /* Cyrillic_ZHE */ + { 0x01000496, 10356 }, /* Cyrillic_ZHE_descender */ + { 0x01000497, 10379 }, /* Cyrillic_zhe_descender */ + { 0x00000044, 10402 }, /* D */ + { 0x00000064, 10404 }, /* d */ + { 0x01001e0a, 10406 }, /* Dabovedot */ + { 0x01001e0b, 10416 }, /* dabovedot */ + { 0x1000fe27, 10426 }, /* Dacute_accent */ + { 0x00000af1, 10440 }, /* dagger */ + { 0x000001cf, 10447 }, /* Dcaron */ + { 0x000001ef, 10454 }, /* dcaron */ + { 0x1000fe2c, 10461 }, /* Dcedilla_accent */ + { 0x1000fe5e, 10477 }, /* Dcircumflex_accent */ + { 0x1000fe22, 10496 }, /* Ddiaeresis */ + { 0x0000fe80, 10507 }, /* dead_a */ + { 0x0000fe81, 10514 }, /* dead_A */ + { 0x0000fe64, 10521 }, /* dead_abovecomma */ + { 0x0000fe56, 10537 }, /* dead_abovedot */ + { 0x0000fe65, 10551 }, /* dead_abovereversedcomma */ + { 0x0000fe58, 10575 }, /* dead_abovering */ + { 0x0000fe91, 10590 }, /* dead_aboveverticalline */ + { 0x0000fe51, 10613 }, /* dead_acute */ + { 0x0000fe6b, 10624 }, /* dead_belowbreve */ + { 0x0000fe69, 10640 }, /* dead_belowcircumflex */ + { 0x0000fe6e, 10661 }, /* dead_belowcomma */ + { 0x0000fe6c, 10677 }, /* dead_belowdiaeresis */ + { 0x0000fe60, 10697 }, /* dead_belowdot */ + { 0x0000fe68, 10711 }, /* dead_belowmacron */ + { 0x0000fe67, 10728 }, /* dead_belowring */ + { 0x0000fe6a, 10743 }, /* dead_belowtilde */ + { 0x0000fe92, 10759 }, /* dead_belowverticalline */ + { 0x0000fe55, 10782 }, /* dead_breve */ + { 0x0000fe8b, 10793 }, /* dead_capital_schwa */ + { 0x0000fe5a, 10812 }, /* dead_caron */ + { 0x0000fe5b, 10823 }, /* dead_cedilla */ + { 0x0000fe52, 10836 }, /* dead_circumflex */ + { 0x0000fe6f, 10852 }, /* dead_currency */ + { 0x0000fe65, 10866 }, /* dead_dasia */ + { 0x0000fe57, 10877 }, /* dead_diaeresis */ + { 0x0000fe59, 10892 }, /* dead_doubleacute */ + { 0x0000fe66, 10909 }, /* dead_doublegrave */ + { 0x0000fe82, 10926 }, /* dead_e */ + { 0x0000fe83, 10933 }, /* dead_E */ + { 0x0000fe50, 10940 }, /* dead_grave */ + { 0x0000fe8c, 10951 }, /* dead_greek */ + { 0x0000fe61, 10962 }, /* dead_hook */ + { 0x0000fe62, 10972 }, /* dead_horn */ + { 0x0000fe84, 10982 }, /* dead_i */ + { 0x0000fe85, 10989 }, /* dead_I */ + { 0x0000fe6d, 10996 }, /* dead_invertedbreve */ + { 0x0000fe5d, 11015 }, /* dead_iota */ + { 0x0000fe93, 11025 }, /* dead_longsolidusoverlay */ + { 0x0000fe90, 11049 }, /* dead_lowline */ + { 0x0000fe54, 11062 }, /* dead_macron */ + { 0x0000fe86, 11074 }, /* dead_o */ + { 0x0000fe87, 11081 }, /* dead_O */ + { 0x0000fe5c, 11088 }, /* dead_ogonek */ + { 0x0000fe53, 11100 }, /* dead_perispomeni */ + { 0x0000fe64, 11117 }, /* dead_psili */ + { 0x0000fe5f, 11128 }, /* dead_semivoiced_sound */ + { 0x0000fe8a, 11150 }, /* dead_small_schwa */ + { 0x0000fe63, 11167 }, /* dead_stroke */ + { 0x0000fe53, 11179 }, /* dead_tilde */ + { 0x0000fe88, 11190 }, /* dead_u */ + { 0x0000fe89, 11197 }, /* dead_U */ + { 0x0000fe5e, 11204 }, /* dead_voiced_sound */ + { 0x00000abd, 11222 }, /* decimalpoint */ + { 0x000000b0, 11235 }, /* degree */ + { 0x0000ffff, 11242 }, /* Delete */ + { 0x1000ff73, 11249 }, /* DeleteChar */ + { 0x1000ff71, 11260 }, /* DeleteLine */ + { 0x1000fe60, 11271 }, /* Dgrave_accent */ + { 0x000000a8, 11285 }, /* diaeresis */ + { 0x00000aed, 11295 }, /* diamond */ + { 0x00000aa5, 11303 }, /* digitspace */ + { 0x0100222c, 11314 }, /* dintegral */ + { 0x000000f7, 11324 }, /* division */ + { 0x00000024, 11333 }, /* dollar */ + { 0x010020ab, 11340 }, /* DongSign */ + { 0x00000aaf, 11349 }, /* doubbaselinedot */ + { 0x000001bd, 11365 }, /* doubleacute */ + { 0x00000af2, 11377 }, /* doubledagger */ + { 0x00000afe, 11390 }, /* doublelowquotemark */ + { 0x0000ff54, 11409 }, /* Down */ + { 0x000008fe, 11414 }, /* downarrow */ + { 0x00000ba8, 11424 }, /* downcaret */ + { 0x00000bd6, 11434 }, /* downshoe */ + { 0x00000bc4, 11443 }, /* downstile */ + { 0x00000bc2, 11453 }, /* downtack */ + { 0x1000ff00, 11462 }, /* DRemove */ + { 0x1000feb0, 11470 }, /* Dring_accent */ + { 0x000001d0, 11483 }, /* Dstroke */ + { 0x000001f0, 11491 }, /* dstroke */ + { 0x1000fe7e, 11499 }, /* Dtilde */ + { 0x00000045, 11506 }, /* E */ + { 0x00000065, 11508 }, /* e */ + { 0x000003cc, 11510 }, /* Eabovedot */ + { 0x000003ec, 11520 }, /* eabovedot */ + { 0x000000c9, 11530 }, /* Eacute */ + { 0x000000e9, 11537 }, /* eacute */ + { 0x01001eb8, 11544 }, /* Ebelowdot */ + { 0x01001eb9, 11554 }, /* ebelowdot */ + { 0x000001cc, 11564 }, /* Ecaron */ + { 0x000001ec, 11571 }, /* ecaron */ + { 0x000000ca, 11578 }, /* Ecircumflex */ + { 0x000000ea, 11590 }, /* ecircumflex */ + { 0x01001ebe, 11602 }, /* Ecircumflexacute */ + { 0x01001ebf, 11619 }, /* ecircumflexacute */ + { 0x01001ec6, 11636 }, /* Ecircumflexbelowdot */ + { 0x01001ec7, 11656 }, /* ecircumflexbelowdot */ + { 0x01001ec0, 11676 }, /* Ecircumflexgrave */ + { 0x01001ec1, 11693 }, /* ecircumflexgrave */ + { 0x01001ec2, 11710 }, /* Ecircumflexhook */ + { 0x01001ec3, 11726 }, /* ecircumflexhook */ + { 0x01001ec4, 11742 }, /* Ecircumflextilde */ + { 0x01001ec5, 11759 }, /* ecircumflextilde */ + { 0x010020a0, 11776 }, /* EcuSign */ + { 0x000000cb, 11784 }, /* Ediaeresis */ + { 0x000000eb, 11795 }, /* ediaeresis */ + { 0x000000c8, 11806 }, /* Egrave */ + { 0x000000e8, 11813 }, /* egrave */ + { 0x01001eba, 11820 }, /* Ehook */ + { 0x01001ebb, 11826 }, /* ehook */ + { 0x01002088, 11832 }, /* eightsubscript */ + { 0x01002078, 11847 }, /* eightsuperior */ + { 0x0000ff2f, 11861 }, /* Eisu_Shift */ + { 0x0000ff30, 11872 }, /* Eisu_toggle */ + { 0x01002208, 11884 }, /* elementof */ + { 0x00000aae, 11894 }, /* ellipsis */ + { 0x00000aa3, 11903 }, /* em3space */ + { 0x00000aa4, 11912 }, /* em4space */ + { 0x000003aa, 11921 }, /* Emacron */ + { 0x000003ba, 11929 }, /* emacron */ + { 0x00000aa9, 11937 }, /* emdash */ + { 0x00000ade, 11944 }, /* emfilledcircle */ + { 0x00000adf, 11959 }, /* emfilledrect */ + { 0x00000ace, 11972 }, /* emopencircle */ + { 0x00000acf, 11985 }, /* emopenrectangle */ + { 0x01002205, 12001 }, /* emptyset */ + { 0x00000aa1, 12010 }, /* emspace */ + { 0x0000ff57, 12018 }, /* End */ + { 0x00000aaa, 12022 }, /* endash */ + { 0x00000ae6, 12029 }, /* enfilledcircbullet */ + { 0x00000ae7, 12048 }, /* enfilledsqbullet */ + { 0x000003bd, 12065 }, /* ENG */ + { 0x000003bf, 12069 }, /* eng */ + { 0x00000ae0, 12073 }, /* enopencircbullet */ + { 0x00000ae1, 12090 }, /* enopensquarebullet */ + { 0x00000aa2, 12109 }, /* enspace */ + { 0x000001ca, 12117 }, /* Eogonek */ + { 0x000001ea, 12125 }, /* eogonek */ + { 0x0000003d, 12133 }, /* equal */ + { 0x0000ff1b, 12139 }, /* Escape */ + { 0x000000d0, 12146 }, /* ETH */ + { 0x000000d0, 12150 }, /* Eth */ + { 0x000000f0, 12154 }, /* eth */ + { 0x01001ebc, 12158 }, /* Etilde */ + { 0x01001ebd, 12165 }, /* etilde */ + { 0x000020ac, 12172 }, /* EuroSign */ + { 0x00000021, 12181 }, /* exclam */ + { 0x000000a1, 12188 }, /* exclamdown */ + { 0x0000ff62, 12199 }, /* Execute */ + { 0x1000ff76, 12207 }, /* Ext16bit_L */ + { 0x1000ff77, 12218 }, /* Ext16bit_R */ + { 0x010001b7, 12229 }, /* EZH */ + { 0x01000292, 12233 }, /* ezh */ + { 0x00000046, 12237 }, /* F */ + { 0x00000066, 12239 }, /* f */ + { 0x0000ffbe, 12241 }, /* F1 */ + { 0x0000ffc7, 12244 }, /* F10 */ + { 0x0000ffc8, 12248 }, /* F11 */ + { 0x0000ffc9, 12252 }, /* F12 */ + { 0x0000ffca, 12256 }, /* F13 */ + { 0x0000ffcb, 12260 }, /* F14 */ + { 0x0000ffcc, 12264 }, /* F15 */ + { 0x0000ffcd, 12268 }, /* F16 */ + { 0x0000ffce, 12272 }, /* F17 */ + { 0x0000ffcf, 12276 }, /* F18 */ + { 0x0000ffd0, 12280 }, /* F19 */ + { 0x0000ffbf, 12284 }, /* F2 */ + { 0x0000ffd1, 12287 }, /* F20 */ + { 0x0000ffd2, 12291 }, /* F21 */ + { 0x0000ffd3, 12295 }, /* F22 */ + { 0x0000ffd4, 12299 }, /* F23 */ + { 0x0000ffd5, 12303 }, /* F24 */ + { 0x0000ffd6, 12307 }, /* F25 */ + { 0x0000ffd7, 12311 }, /* F26 */ + { 0x0000ffd8, 12315 }, /* F27 */ + { 0x0000ffd9, 12319 }, /* F28 */ + { 0x0000ffda, 12323 }, /* F29 */ + { 0x0000ffc0, 12327 }, /* F3 */ + { 0x0000ffdb, 12330 }, /* F30 */ + { 0x0000ffdc, 12334 }, /* F31 */ + { 0x0000ffdd, 12338 }, /* F32 */ + { 0x0000ffde, 12342 }, /* F33 */ + { 0x0000ffdf, 12346 }, /* F34 */ + { 0x0000ffe0, 12350 }, /* F35 */ + { 0x0000ffc1, 12354 }, /* F4 */ + { 0x0000ffc2, 12357 }, /* F5 */ + { 0x0000ffc3, 12360 }, /* F6 */ + { 0x0000ffc4, 12363 }, /* F7 */ + { 0x0000ffc5, 12366 }, /* F8 */ + { 0x0000ffc6, 12369 }, /* F9 */ + { 0x01001e1e, 12372 }, /* Fabovedot */ + { 0x01001e1f, 12382 }, /* fabovedot */ + { 0x010006f0, 12392 }, /* Farsi_0 */ + { 0x010006f1, 12400 }, /* Farsi_1 */ + { 0x010006f2, 12408 }, /* Farsi_2 */ + { 0x010006f3, 12416 }, /* Farsi_3 */ + { 0x010006f4, 12424 }, /* Farsi_4 */ + { 0x010006f5, 12432 }, /* Farsi_5 */ + { 0x010006f6, 12440 }, /* Farsi_6 */ + { 0x010006f7, 12448 }, /* Farsi_7 */ + { 0x010006f8, 12456 }, /* Farsi_8 */ + { 0x010006f9, 12464 }, /* Farsi_9 */ + { 0x010006cc, 12472 }, /* Farsi_yeh */ + { 0x00000af8, 12482 }, /* femalesymbol */ + { 0x000009e3, 12495 }, /* ff */ + { 0x010020a3, 12498 }, /* FFrancSign */ + { 0x00000abb, 12509 }, /* figdash */ + { 0x00000adc, 12517 }, /* filledlefttribullet */ + { 0x00000adb, 12537 }, /* filledrectbullet */ + { 0x00000add, 12554 }, /* filledrighttribullet */ + { 0x00000ae9, 12575 }, /* filledtribulletdown */ + { 0x00000ae8, 12595 }, /* filledtribulletup */ + { 0x0000ff68, 12613 }, /* Find */ + { 0x0000fed0, 12618 }, /* First_Virtual_Screen */ + { 0x00000ac5, 12639 }, /* fiveeighths */ + { 0x00000ab7, 12651 }, /* fivesixths */ + { 0x01002085, 12662 }, /* fivesubscript */ + { 0x01002075, 12676 }, /* fivesuperior */ + { 0x00000ab5, 12689 }, /* fourfifths */ + { 0x01002084, 12700 }, /* foursubscript */ + { 0x01002074, 12714 }, /* foursuperior */ + { 0x0100221c, 12727 }, /* fourthroot */ + { 0x000008f6, 12738 }, /* function */ + { 0x00000047, 12747 }, /* G */ + { 0x00000067, 12749 }, /* g */ + { 0x000002d5, 12751 }, /* Gabovedot */ + { 0x000002f5, 12761 }, /* gabovedot */ + { 0x000002ab, 12771 }, /* Gbreve */ + { 0x000002bb, 12778 }, /* gbreve */ + { 0x010001e6, 12785 }, /* Gcaron */ + { 0x010001e7, 12792 }, /* gcaron */ + { 0x000003ab, 12799 }, /* Gcedilla */ + { 0x000003bb, 12808 }, /* gcedilla */ + { 0x000002d8, 12817 }, /* Gcircumflex */ + { 0x000002f8, 12829 }, /* gcircumflex */ + { 0x010010d0, 12841 }, /* Georgian_an */ + { 0x010010d1, 12853 }, /* Georgian_ban */ + { 0x010010ea, 12866 }, /* Georgian_can */ + { 0x010010ed, 12879 }, /* Georgian_char */ + { 0x010010e9, 12893 }, /* Georgian_chin */ + { 0x010010ec, 12907 }, /* Georgian_cil */ + { 0x010010d3, 12920 }, /* Georgian_don */ + { 0x010010d4, 12933 }, /* Georgian_en */ + { 0x010010f6, 12945 }, /* Georgian_fi */ + { 0x010010d2, 12957 }, /* Georgian_gan */ + { 0x010010e6, 12970 }, /* Georgian_ghan */ + { 0x010010f0, 12984 }, /* Georgian_hae */ + { 0x010010f4, 12997 }, /* Georgian_har */ + { 0x010010f1, 13010 }, /* Georgian_he */ + { 0x010010f2, 13022 }, /* Georgian_hie */ + { 0x010010f5, 13035 }, /* Georgian_hoe */ + { 0x010010d8, 13048 }, /* Georgian_in */ + { 0x010010ef, 13060 }, /* Georgian_jhan */ + { 0x010010eb, 13074 }, /* Georgian_jil */ + { 0x010010d9, 13087 }, /* Georgian_kan */ + { 0x010010e5, 13100 }, /* Georgian_khar */ + { 0x010010da, 13114 }, /* Georgian_las */ + { 0x010010db, 13127 }, /* Georgian_man */ + { 0x010010dc, 13140 }, /* Georgian_nar */ + { 0x010010dd, 13153 }, /* Georgian_on */ + { 0x010010de, 13165 }, /* Georgian_par */ + { 0x010010e4, 13178 }, /* Georgian_phar */ + { 0x010010e7, 13192 }, /* Georgian_qar */ + { 0x010010e0, 13205 }, /* Georgian_rae */ + { 0x010010e1, 13218 }, /* Georgian_san */ + { 0x010010e8, 13231 }, /* Georgian_shin */ + { 0x010010d7, 13245 }, /* Georgian_tan */ + { 0x010010e2, 13258 }, /* Georgian_tar */ + { 0x010010e3, 13271 }, /* Georgian_un */ + { 0x010010d5, 13283 }, /* Georgian_vin */ + { 0x010010f3, 13296 }, /* Georgian_we */ + { 0x010010ee, 13308 }, /* Georgian_xan */ + { 0x010010d6, 13321 }, /* Georgian_zen */ + { 0x010010df, 13334 }, /* Georgian_zhar */ + { 0x00000060, 13348 }, /* grave */ + { 0x0000003e, 13354 }, /* greater */ + { 0x000008be, 13362 }, /* greaterthanequal */ + { 0x000007ae, 13379 }, /* Greek_accentdieresis */ + { 0x000007c1, 13400 }, /* Greek_ALPHA */ + { 0x000007e1, 13412 }, /* Greek_alpha */ + { 0x000007a1, 13424 }, /* Greek_ALPHAaccent */ + { 0x000007b1, 13442 }, /* Greek_alphaaccent */ + { 0x000007c2, 13460 }, /* Greek_BETA */ + { 0x000007e2, 13471 }, /* Greek_beta */ + { 0x000007d7, 13482 }, /* Greek_CHI */ + { 0x000007f7, 13492 }, /* Greek_chi */ + { 0x000007c4, 13502 }, /* Greek_DELTA */ + { 0x000007e4, 13514 }, /* Greek_delta */ + { 0x000007c5, 13526 }, /* Greek_EPSILON */ + { 0x000007e5, 13540 }, /* Greek_epsilon */ + { 0x000007a2, 13554 }, /* Greek_EPSILONaccent */ + { 0x000007b2, 13574 }, /* Greek_epsilonaccent */ + { 0x000007c7, 13594 }, /* Greek_ETA */ + { 0x000007e7, 13604 }, /* Greek_eta */ + { 0x000007a3, 13614 }, /* Greek_ETAaccent */ + { 0x000007b3, 13630 }, /* Greek_etaaccent */ + { 0x000007f3, 13646 }, /* Greek_finalsmallsigma */ + { 0x000007c3, 13668 }, /* Greek_GAMMA */ + { 0x000007e3, 13680 }, /* Greek_gamma */ + { 0x000007af, 13692 }, /* Greek_horizbar */ + { 0x000007c9, 13707 }, /* Greek_IOTA */ + { 0x000007e9, 13718 }, /* Greek_iota */ + { 0x000007a4, 13729 }, /* Greek_IOTAaccent */ + { 0x000007b4, 13746 }, /* Greek_iotaaccent */ + { 0x000007b6, 13763 }, /* Greek_iotaaccentdieresis */ + { 0x000007a5, 13788 }, /* Greek_IOTAdiaeresis */ + { 0x000007a5, 13808 }, /* Greek_IOTAdieresis */ + { 0x000007b5, 13827 }, /* Greek_iotadieresis */ + { 0x000007ca, 13846 }, /* Greek_KAPPA */ + { 0x000007ea, 13858 }, /* Greek_kappa */ + { 0x000007cb, 13870 }, /* Greek_LAMBDA */ + { 0x000007eb, 13883 }, /* Greek_lambda */ + { 0x000007cb, 13896 }, /* Greek_LAMDA */ + { 0x000007eb, 13908 }, /* Greek_lamda */ + { 0x000007cc, 13920 }, /* Greek_MU */ + { 0x000007ec, 13929 }, /* Greek_mu */ + { 0x000007cd, 13938 }, /* Greek_NU */ + { 0x000007ed, 13947 }, /* Greek_nu */ + { 0x000007d9, 13956 }, /* Greek_OMEGA */ + { 0x000007f9, 13968 }, /* Greek_omega */ + { 0x000007ab, 13980 }, /* Greek_OMEGAaccent */ + { 0x000007bb, 13998 }, /* Greek_omegaaccent */ + { 0x000007cf, 14016 }, /* Greek_OMICRON */ + { 0x000007ef, 14030 }, /* Greek_omicron */ + { 0x000007a7, 14044 }, /* Greek_OMICRONaccent */ + { 0x000007b7, 14064 }, /* Greek_omicronaccent */ + { 0x000007d6, 14084 }, /* Greek_PHI */ + { 0x000007f6, 14094 }, /* Greek_phi */ + { 0x000007d0, 14104 }, /* Greek_PI */ + { 0x000007f0, 14113 }, /* Greek_pi */ + { 0x000007d8, 14122 }, /* Greek_PSI */ + { 0x000007f8, 14132 }, /* Greek_psi */ + { 0x000007d1, 14142 }, /* Greek_RHO */ + { 0x000007f1, 14152 }, /* Greek_rho */ + { 0x000007d2, 14162 }, /* Greek_SIGMA */ + { 0x000007f2, 14174 }, /* Greek_sigma */ + { 0x0000ff7e, 14186 }, /* Greek_switch */ + { 0x000007d4, 14199 }, /* Greek_TAU */ + { 0x000007f4, 14209 }, /* Greek_tau */ + { 0x000007c8, 14219 }, /* Greek_THETA */ + { 0x000007e8, 14231 }, /* Greek_theta */ + { 0x000007d5, 14243 }, /* Greek_UPSILON */ + { 0x000007f5, 14257 }, /* Greek_upsilon */ + { 0x000007a8, 14271 }, /* Greek_UPSILONaccent */ + { 0x000007b8, 14291 }, /* Greek_upsilonaccent */ + { 0x000007ba, 14311 }, /* Greek_upsilonaccentdieresis */ + { 0x000007a9, 14339 }, /* Greek_UPSILONdieresis */ + { 0x000007b9, 14361 }, /* Greek_upsilondieresis */ + { 0x000007ce, 14383 }, /* Greek_XI */ + { 0x000007ee, 14392 }, /* Greek_xi */ + { 0x000007c6, 14401 }, /* Greek_ZETA */ + { 0x000007e6, 14412 }, /* Greek_zeta */ + { 0x100000be, 14423 }, /* guilder */ + { 0x000000ab, 14431 }, /* guillemotleft */ + { 0x000000bb, 14445 }, /* guillemotright */ + { 0x00000048, 14460 }, /* H */ + { 0x00000068, 14462 }, /* h */ + { 0x00000aa8, 14464 }, /* hairspace */ + { 0x0000ff31, 14474 }, /* Hangul */ + { 0x00000ebf, 14481 }, /* Hangul_A */ + { 0x00000ec0, 14490 }, /* Hangul_AE */ + { 0x00000ef6, 14500 }, /* Hangul_AraeA */ + { 0x00000ef7, 14513 }, /* Hangul_AraeAE */ + { 0x0000ff39, 14527 }, /* Hangul_Banja */ + { 0x00000eba, 14540 }, /* Hangul_Cieuc */ + { 0x0000ff37, 14553 }, /* Hangul_Codeinput */ + { 0x00000ea7, 14570 }, /* Hangul_Dikeud */ + { 0x00000ec4, 14584 }, /* Hangul_E */ + { 0x0000ff33, 14593 }, /* Hangul_End */ + { 0x00000ec3, 14604 }, /* Hangul_EO */ + { 0x00000ed1, 14614 }, /* Hangul_EU */ + { 0x0000ff34, 14624 }, /* Hangul_Hanja */ + { 0x00000ebe, 14637 }, /* Hangul_Hieuh */ + { 0x00000ed3, 14650 }, /* Hangul_I */ + { 0x00000eb7, 14659 }, /* Hangul_Ieung */ + { 0x00000eea, 14672 }, /* Hangul_J_Cieuc */ + { 0x00000eda, 14687 }, /* Hangul_J_Dikeud */ + { 0x00000eee, 14703 }, /* Hangul_J_Hieuh */ + { 0x00000ee8, 14718 }, /* Hangul_J_Ieung */ + { 0x00000ee9, 14733 }, /* Hangul_J_Jieuj */ + { 0x00000eeb, 14748 }, /* Hangul_J_Khieuq */ + { 0x00000ed4, 14764 }, /* Hangul_J_Kiyeog */ + { 0x00000ed6, 14780 }, /* Hangul_J_KiyeogSios */ + { 0x00000ef9, 14800 }, /* Hangul_J_KkogjiDalrinIeung */ + { 0x00000ee3, 14827 }, /* Hangul_J_Mieum */ + { 0x00000ed7, 14842 }, /* Hangul_J_Nieun */ + { 0x00000ed9, 14857 }, /* Hangul_J_NieunHieuh */ + { 0x00000ed8, 14877 }, /* Hangul_J_NieunJieuj */ + { 0x00000ef8, 14897 }, /* Hangul_J_PanSios */ + { 0x00000eed, 14914 }, /* Hangul_J_Phieuf */ + { 0x00000ee4, 14930 }, /* Hangul_J_Pieub */ + { 0x00000ee5, 14945 }, /* Hangul_J_PieubSios */ + { 0x00000edb, 14964 }, /* Hangul_J_Rieul */ + { 0x00000ee2, 14979 }, /* Hangul_J_RieulHieuh */ + { 0x00000edc, 14999 }, /* Hangul_J_RieulKiyeog */ + { 0x00000edd, 15020 }, /* Hangul_J_RieulMieum */ + { 0x00000ee1, 15040 }, /* Hangul_J_RieulPhieuf */ + { 0x00000ede, 15061 }, /* Hangul_J_RieulPieub */ + { 0x00000edf, 15081 }, /* Hangul_J_RieulSios */ + { 0x00000ee0, 15100 }, /* Hangul_J_RieulTieut */ + { 0x00000ee6, 15120 }, /* Hangul_J_Sios */ + { 0x00000ed5, 15134 }, /* Hangul_J_SsangKiyeog */ + { 0x00000ee7, 15155 }, /* Hangul_J_SsangSios */ + { 0x00000eec, 15174 }, /* Hangul_J_Tieut */ + { 0x00000efa, 15189 }, /* Hangul_J_YeorinHieuh */ + { 0x0000ff35, 15210 }, /* Hangul_Jamo */ + { 0x0000ff38, 15222 }, /* Hangul_Jeonja */ + { 0x00000eb8, 15236 }, /* Hangul_Jieuj */ + { 0x00000ebb, 15249 }, /* Hangul_Khieuq */ + { 0x00000ea1, 15263 }, /* Hangul_Kiyeog */ + { 0x00000ea3, 15277 }, /* Hangul_KiyeogSios */ + { 0x00000ef3, 15295 }, /* Hangul_KkogjiDalrinIeung */ + { 0x00000eb1, 15320 }, /* Hangul_Mieum */ + { 0x0000ff3d, 15333 }, /* Hangul_MultipleCandidate */ + { 0x00000ea4, 15358 }, /* Hangul_Nieun */ + { 0x00000ea6, 15371 }, /* Hangul_NieunHieuh */ + { 0x00000ea5, 15389 }, /* Hangul_NieunJieuj */ + { 0x00000ec7, 15407 }, /* Hangul_O */ + { 0x00000eca, 15416 }, /* Hangul_OE */ + { 0x00000ef2, 15426 }, /* Hangul_PanSios */ + { 0x00000ebd, 15441 }, /* Hangul_Phieuf */ + { 0x00000eb2, 15455 }, /* Hangul_Pieub */ + { 0x00000eb4, 15468 }, /* Hangul_PieubSios */ + { 0x0000ff3b, 15485 }, /* Hangul_PostHanja */ + { 0x0000ff3a, 15502 }, /* Hangul_PreHanja */ + { 0x0000ff3e, 15518 }, /* Hangul_PreviousCandidate */ + { 0x00000ea9, 15543 }, /* Hangul_Rieul */ + { 0x00000eb0, 15556 }, /* Hangul_RieulHieuh */ + { 0x00000eaa, 15574 }, /* Hangul_RieulKiyeog */ + { 0x00000eab, 15593 }, /* Hangul_RieulMieum */ + { 0x00000eaf, 15611 }, /* Hangul_RieulPhieuf */ + { 0x00000eac, 15630 }, /* Hangul_RieulPieub */ + { 0x00000ead, 15648 }, /* Hangul_RieulSios */ + { 0x00000eae, 15665 }, /* Hangul_RieulTieut */ + { 0x00000eef, 15683 }, /* Hangul_RieulYeorinHieuh */ + { 0x0000ff36, 15707 }, /* Hangul_Romaja */ + { 0x0000ff3c, 15721 }, /* Hangul_SingleCandidate */ + { 0x00000eb5, 15744 }, /* Hangul_Sios */ + { 0x0000ff3f, 15756 }, /* Hangul_Special */ + { 0x00000ea8, 15771 }, /* Hangul_SsangDikeud */ + { 0x00000eb9, 15790 }, /* Hangul_SsangJieuj */ + { 0x00000ea2, 15808 }, /* Hangul_SsangKiyeog */ + { 0x00000eb3, 15827 }, /* Hangul_SsangPieub */ + { 0x00000eb6, 15845 }, /* Hangul_SsangSios */ + { 0x0000ff32, 15862 }, /* Hangul_Start */ + { 0x00000ef0, 15875 }, /* Hangul_SunkyeongeumMieum */ + { 0x00000ef4, 15900 }, /* Hangul_SunkyeongeumPhieuf */ + { 0x00000ef1, 15926 }, /* Hangul_SunkyeongeumPieub */ + { 0x0000ff7e, 15951 }, /* Hangul_switch */ + { 0x00000ebc, 15965 }, /* Hangul_Tieut */ + { 0x00000ecc, 15978 }, /* Hangul_U */ + { 0x00000ec8, 15987 }, /* Hangul_WA */ + { 0x00000ec9, 15997 }, /* Hangul_WAE */ + { 0x00000ece, 16008 }, /* Hangul_WE */ + { 0x00000ecd, 16018 }, /* Hangul_WEO */ + { 0x00000ecf, 16029 }, /* Hangul_WI */ + { 0x00000ec1, 16039 }, /* Hangul_YA */ + { 0x00000ec2, 16049 }, /* Hangul_YAE */ + { 0x00000ec6, 16060 }, /* Hangul_YE */ + { 0x00000ec5, 16070 }, /* Hangul_YEO */ + { 0x00000ef5, 16081 }, /* Hangul_YeorinHieuh */ + { 0x00000ed2, 16100 }, /* Hangul_YI */ + { 0x00000ecb, 16110 }, /* Hangul_YO */ + { 0x00000ed0, 16120 }, /* Hangul_YU */ + { 0x0000ff29, 16130 }, /* Hankaku */ + { 0x000002a6, 16138 }, /* Hcircumflex */ + { 0x000002b6, 16150 }, /* hcircumflex */ + { 0x00000aee, 16162 }, /* heart */ + { 0x00000ce0, 16168 }, /* hebrew_aleph */ + { 0x00000cf2, 16181 }, /* hebrew_ayin */ + { 0x00000ce1, 16193 }, /* hebrew_bet */ + { 0x00000ce1, 16204 }, /* hebrew_beth */ + { 0x00000ce7, 16216 }, /* hebrew_chet */ + { 0x00000ce3, 16228 }, /* hebrew_dalet */ + { 0x00000ce3, 16241 }, /* hebrew_daleth */ + { 0x00000cdf, 16255 }, /* hebrew_doublelowline */ + { 0x00000cea, 16276 }, /* hebrew_finalkaph */ + { 0x00000ced, 16293 }, /* hebrew_finalmem */ + { 0x00000cef, 16309 }, /* hebrew_finalnun */ + { 0x00000cf3, 16325 }, /* hebrew_finalpe */ + { 0x00000cf5, 16340 }, /* hebrew_finalzade */ + { 0x00000cf5, 16357 }, /* hebrew_finalzadi */ + { 0x00000ce2, 16374 }, /* hebrew_gimel */ + { 0x00000ce2, 16387 }, /* hebrew_gimmel */ + { 0x00000ce4, 16401 }, /* hebrew_he */ + { 0x00000ce7, 16411 }, /* hebrew_het */ + { 0x00000ceb, 16422 }, /* hebrew_kaph */ + { 0x00000cf7, 16434 }, /* hebrew_kuf */ + { 0x00000cec, 16445 }, /* hebrew_lamed */ + { 0x00000cee, 16458 }, /* hebrew_mem */ + { 0x00000cf0, 16469 }, /* hebrew_nun */ + { 0x00000cf4, 16480 }, /* hebrew_pe */ + { 0x00000cf7, 16490 }, /* hebrew_qoph */ + { 0x00000cf8, 16502 }, /* hebrew_resh */ + { 0x00000cf1, 16514 }, /* hebrew_samech */ + { 0x00000cf1, 16528 }, /* hebrew_samekh */ + { 0x00000cf9, 16542 }, /* hebrew_shin */ + { 0x0000ff7e, 16554 }, /* Hebrew_switch */ + { 0x00000cfa, 16568 }, /* hebrew_taf */ + { 0x00000cfa, 16579 }, /* hebrew_taw */ + { 0x00000ce8, 16590 }, /* hebrew_tet */ + { 0x00000ce8, 16601 }, /* hebrew_teth */ + { 0x00000ce5, 16613 }, /* hebrew_waw */ + { 0x00000ce9, 16624 }, /* hebrew_yod */ + { 0x00000cf6, 16635 }, /* hebrew_zade */ + { 0x00000cf6, 16647 }, /* hebrew_zadi */ + { 0x00000ce6, 16659 }, /* hebrew_zain */ + { 0x00000ce6, 16671 }, /* hebrew_zayin */ + { 0x0000ff6a, 16684 }, /* Help */ + { 0x0000ff23, 16689 }, /* Henkan */ + { 0x0000ff23, 16696 }, /* Henkan_Mode */ + { 0x00000ada, 16708 }, /* hexagram */ + { 0x0000ff25, 16717 }, /* Hiragana */ + { 0x0000ff27, 16726 }, /* Hiragana_Katakana */ + { 0x0000ff50, 16744 }, /* Home */ + { 0x000008a3, 16749 }, /* horizconnector */ + { 0x000009ef, 16764 }, /* horizlinescan1 */ + { 0x000009f0, 16779 }, /* horizlinescan3 */ + { 0x000009f1, 16794 }, /* horizlinescan5 */ + { 0x000009f2, 16809 }, /* horizlinescan7 */ + { 0x000009f3, 16824 }, /* horizlinescan9 */ + { 0x1000ff74, 16839 }, /* hpBackTab */ + { 0x100000fc, 16849 }, /* hpblock */ + { 0x1000ff6f, 16857 }, /* hpClearLine */ + { 0x1000ff73, 16869 }, /* hpDeleteChar */ + { 0x1000ff71, 16882 }, /* hpDeleteLine */ + { 0x100000be, 16895 }, /* hpguilder */ + { 0x1000ff72, 16905 }, /* hpInsertChar */ + { 0x1000ff70, 16918 }, /* hpInsertLine */ + { 0x100000ee, 16931 }, /* hpIO */ + { 0x1000ff75, 16936 }, /* hpKP_BackTab */ + { 0x100000af, 16949 }, /* hplira */ + { 0x100000f6, 16956 }, /* hplongminus */ + { 0x1000ff48, 16968 }, /* hpModelock1 */ + { 0x1000ff49, 16980 }, /* hpModelock2 */ + { 0x100000a8, 16992 }, /* hpmute_acute */ + { 0x100000aa, 17005 }, /* hpmute_asciicircum */ + { 0x100000ac, 17024 }, /* hpmute_asciitilde */ + { 0x100000ab, 17042 }, /* hpmute_diaeresis */ + { 0x100000a9, 17059 }, /* hpmute_grave */ + { 0x1000ff6c, 17072 }, /* hpReset */ + { 0x1000ff6d, 17080 }, /* hpSystem */ + { 0x1000ff6e, 17089 }, /* hpUser */ + { 0x100000ee, 17096 }, /* hpYdiaeresis */ + { 0x000002a1, 17109 }, /* Hstroke */ + { 0x000002b1, 17117 }, /* hstroke */ + { 0x000009e2, 17125 }, /* ht */ + { 0x0000ffed, 17128 }, /* Hyper_L */ + { 0x0000ffee, 17136 }, /* Hyper_R */ + { 0x000000ad, 17144 }, /* hyphen */ + { 0x00000049, 17151 }, /* I */ + { 0x00000069, 17153 }, /* i */ + { 0x000002a9, 17155 }, /* Iabovedot */ + { 0x000000cd, 17165 }, /* Iacute */ + { 0x000000ed, 17172 }, /* iacute */ + { 0x01001eca, 17179 }, /* Ibelowdot */ + { 0x01001ecb, 17189 }, /* ibelowdot */ + { 0x0100012c, 17199 }, /* Ibreve */ + { 0x0100012d, 17206 }, /* ibreve */ + { 0x000000ce, 17213 }, /* Icircumflex */ + { 0x000000ee, 17225 }, /* icircumflex */ + { 0x000008cf, 17237 }, /* identical */ + { 0x000000cf, 17247 }, /* Idiaeresis */ + { 0x000000ef, 17258 }, /* idiaeresis */ + { 0x000002b9, 17269 }, /* idotless */ + { 0x000008cd, 17278 }, /* ifonlyif */ + { 0x000000cc, 17287 }, /* Igrave */ + { 0x000000ec, 17294 }, /* igrave */ + { 0x01001ec8, 17301 }, /* Ihook */ + { 0x01001ec9, 17307 }, /* ihook */ + { 0x000003cf, 17313 }, /* Imacron */ + { 0x000003ef, 17321 }, /* imacron */ + { 0x000008ce, 17329 }, /* implies */ + { 0x000008da, 17337 }, /* includedin */ + { 0x000008db, 17348 }, /* includes */ + { 0x000008c2, 17357 }, /* infinity */ + { 0x0000ff63, 17366 }, /* Insert */ + { 0x1000ff72, 17373 }, /* InsertChar */ + { 0x1000ff70, 17384 }, /* InsertLine */ + { 0x000008bf, 17395 }, /* integral */ + { 0x000008dc, 17404 }, /* intersection */ + { 0x100000ee, 17417 }, /* IO */ + { 0x000003c7, 17420 }, /* Iogonek */ + { 0x000003e7, 17428 }, /* iogonek */ + { 0x0000fe33, 17436 }, /* ISO_Center_Object */ + { 0x0000fe30, 17454 }, /* ISO_Continuous_Underline */ + { 0x0000fe31, 17479 }, /* ISO_Discontinuous_Underline */ + { 0x0000fe32, 17507 }, /* ISO_Emphasize */ + { 0x0000fe34, 17521 }, /* ISO_Enter */ + { 0x0000fe2f, 17531 }, /* ISO_Fast_Cursor_Down */ + { 0x0000fe2c, 17552 }, /* ISO_Fast_Cursor_Left */ + { 0x0000fe2d, 17573 }, /* ISO_Fast_Cursor_Right */ + { 0x0000fe2e, 17595 }, /* ISO_Fast_Cursor_Up */ + { 0x0000fe0c, 17614 }, /* ISO_First_Group */ + { 0x0000fe0d, 17630 }, /* ISO_First_Group_Lock */ + { 0x0000fe06, 17651 }, /* ISO_Group_Latch */ + { 0x0000fe07, 17667 }, /* ISO_Group_Lock */ + { 0x0000ff7e, 17682 }, /* ISO_Group_Shift */ + { 0x0000fe0e, 17698 }, /* ISO_Last_Group */ + { 0x0000fe0f, 17713 }, /* ISO_Last_Group_Lock */ + { 0x0000fe20, 17733 }, /* ISO_Left_Tab */ + { 0x0000fe02, 17746 }, /* ISO_Level2_Latch */ + { 0x0000fe04, 17763 }, /* ISO_Level3_Latch */ + { 0x0000fe05, 17780 }, /* ISO_Level3_Lock */ + { 0x0000fe03, 17796 }, /* ISO_Level3_Shift */ + { 0x0000fe12, 17813 }, /* ISO_Level5_Latch */ + { 0x0000fe13, 17830 }, /* ISO_Level5_Lock */ + { 0x0000fe11, 17846 }, /* ISO_Level5_Shift */ + { 0x0000fe01, 17863 }, /* ISO_Lock */ + { 0x0000fe22, 17872 }, /* ISO_Move_Line_Down */ + { 0x0000fe21, 17891 }, /* ISO_Move_Line_Up */ + { 0x0000fe08, 17908 }, /* ISO_Next_Group */ + { 0x0000fe09, 17923 }, /* ISO_Next_Group_Lock */ + { 0x0000fe24, 17943 }, /* ISO_Partial_Line_Down */ + { 0x0000fe23, 17965 }, /* ISO_Partial_Line_Up */ + { 0x0000fe25, 17985 }, /* ISO_Partial_Space_Left */ + { 0x0000fe26, 18008 }, /* ISO_Partial_Space_Right */ + { 0x0000fe0a, 18032 }, /* ISO_Prev_Group */ + { 0x0000fe0b, 18047 }, /* ISO_Prev_Group_Lock */ + { 0x0000fe2b, 18067 }, /* ISO_Release_Both_Margins */ + { 0x0000fe29, 18092 }, /* ISO_Release_Margin_Left */ + { 0x0000fe2a, 18116 }, /* ISO_Release_Margin_Right */ + { 0x0000fe27, 18141 }, /* ISO_Set_Margin_Left */ + { 0x0000fe28, 18161 }, /* ISO_Set_Margin_Right */ + { 0x000003a5, 18182 }, /* Itilde */ + { 0x000003b5, 18189 }, /* itilde */ + { 0x0000004a, 18196 }, /* J */ + { 0x0000006a, 18198 }, /* j */ + { 0x000002ac, 18200 }, /* Jcircumflex */ + { 0x000002bc, 18212 }, /* jcircumflex */ + { 0x00000bca, 18224 }, /* jot */ + { 0x0000004b, 18228 }, /* K */ + { 0x0000006b, 18230 }, /* k */ + { 0x000004a7, 18232 }, /* kana_a */ + { 0x000004b1, 18239 }, /* kana_A */ + { 0x000004c1, 18246 }, /* kana_CHI */ + { 0x000004a3, 18255 }, /* kana_closingbracket */ + { 0x000004a4, 18275 }, /* kana_comma */ + { 0x000004a5, 18286 }, /* kana_conjunctive */ + { 0x000004aa, 18303 }, /* kana_e */ + { 0x000004b4, 18310 }, /* kana_E */ + { 0x000004cc, 18317 }, /* kana_FU */ + { 0x000004a1, 18325 }, /* kana_fullstop */ + { 0x000004ca, 18339 }, /* kana_HA */ + { 0x000004cd, 18347 }, /* kana_HE */ + { 0x000004cb, 18355 }, /* kana_HI */ + { 0x000004ce, 18363 }, /* kana_HO */ + { 0x000004cc, 18371 }, /* kana_HU */ + { 0x000004a8, 18379 }, /* kana_i */ + { 0x000004b2, 18386 }, /* kana_I */ + { 0x000004b6, 18393 }, /* kana_KA */ + { 0x000004b9, 18401 }, /* kana_KE */ + { 0x000004b7, 18409 }, /* kana_KI */ + { 0x000004ba, 18417 }, /* kana_KO */ + { 0x000004b8, 18425 }, /* kana_KU */ + { 0x0000ff2d, 18433 }, /* Kana_Lock */ + { 0x000004cf, 18443 }, /* kana_MA */ + { 0x000004d2, 18451 }, /* kana_ME */ + { 0x000004d0, 18459 }, /* kana_MI */ + { 0x000004a5, 18467 }, /* kana_middledot */ + { 0x000004d3, 18482 }, /* kana_MO */ + { 0x000004d1, 18490 }, /* kana_MU */ + { 0x000004dd, 18498 }, /* kana_N */ + { 0x000004c5, 18505 }, /* kana_NA */ + { 0x000004c8, 18513 }, /* kana_NE */ + { 0x000004c6, 18521 }, /* kana_NI */ + { 0x000004c9, 18529 }, /* kana_NO */ + { 0x000004c7, 18537 }, /* kana_NU */ + { 0x000004ab, 18545 }, /* kana_o */ + { 0x000004b5, 18552 }, /* kana_O */ + { 0x000004a2, 18559 }, /* kana_openingbracket */ + { 0x000004d7, 18579 }, /* kana_RA */ + { 0x000004da, 18587 }, /* kana_RE */ + { 0x000004d8, 18595 }, /* kana_RI */ + { 0x000004db, 18603 }, /* kana_RO */ + { 0x000004d9, 18611 }, /* kana_RU */ + { 0x000004bb, 18619 }, /* kana_SA */ + { 0x000004be, 18627 }, /* kana_SE */ + { 0x000004bc, 18635 }, /* kana_SHI */ + { 0x0000ff2e, 18644 }, /* Kana_Shift */ + { 0x000004bf, 18655 }, /* kana_SO */ + { 0x000004bd, 18663 }, /* kana_SU */ + { 0x0000ff7e, 18671 }, /* kana_switch */ + { 0x000004c0, 18683 }, /* kana_TA */ + { 0x000004c3, 18691 }, /* kana_TE */ + { 0x000004c1, 18699 }, /* kana_TI */ + { 0x000004c4, 18707 }, /* kana_TO */ + { 0x000004af, 18715 }, /* kana_tsu */ + { 0x000004c2, 18724 }, /* kana_TSU */ + { 0x000004af, 18733 }, /* kana_tu */ + { 0x000004c2, 18741 }, /* kana_TU */ + { 0x000004a9, 18749 }, /* kana_u */ + { 0x000004b3, 18756 }, /* kana_U */ + { 0x000004dc, 18763 }, /* kana_WA */ + { 0x000004a6, 18771 }, /* kana_WO */ + { 0x000004ac, 18779 }, /* kana_ya */ + { 0x000004d4, 18787 }, /* kana_YA */ + { 0x000004ae, 18795 }, /* kana_yo */ + { 0x000004d6, 18803 }, /* kana_YO */ + { 0x000004ad, 18811 }, /* kana_yu */ + { 0x000004d5, 18819 }, /* kana_YU */ + { 0x0000ff21, 18827 }, /* Kanji */ + { 0x0000ff37, 18833 }, /* Kanji_Bangou */ + { 0x000003a2, 18846 }, /* kappa */ + { 0x0000ff26, 18852 }, /* Katakana */ + { 0x000003d3, 18861 }, /* Kcedilla */ + { 0x000003f3, 18870 }, /* kcedilla */ + { 0x00000eff, 18879 }, /* Korean_Won */ + { 0x0000ffb0, 18890 }, /* KP_0 */ + { 0x0000ffb1, 18895 }, /* KP_1 */ + { 0x0000ffb2, 18900 }, /* KP_2 */ + { 0x0000ffb3, 18905 }, /* KP_3 */ + { 0x0000ffb4, 18910 }, /* KP_4 */ + { 0x0000ffb5, 18915 }, /* KP_5 */ + { 0x0000ffb6, 18920 }, /* KP_6 */ + { 0x0000ffb7, 18925 }, /* KP_7 */ + { 0x0000ffb8, 18930 }, /* KP_8 */ + { 0x0000ffb9, 18935 }, /* KP_9 */ + { 0x0000ffab, 18940 }, /* KP_Add */ + { 0x1000ff75, 18947 }, /* KP_BackTab */ + { 0x0000ff9d, 18958 }, /* KP_Begin */ + { 0x0000ffae, 18967 }, /* KP_Decimal */ + { 0x0000ff9f, 18978 }, /* KP_Delete */ + { 0x0000ffaf, 18988 }, /* KP_Divide */ + { 0x0000ff99, 18998 }, /* KP_Down */ + { 0x0000ff9c, 19006 }, /* KP_End */ + { 0x0000ff8d, 19013 }, /* KP_Enter */ + { 0x0000ffbd, 19022 }, /* KP_Equal */ + { 0x0000ff91, 19031 }, /* KP_F1 */ + { 0x0000ff92, 19037 }, /* KP_F2 */ + { 0x0000ff93, 19043 }, /* KP_F3 */ + { 0x0000ff94, 19049 }, /* KP_F4 */ + { 0x0000ff95, 19055 }, /* KP_Home */ + { 0x0000ff9e, 19063 }, /* KP_Insert */ + { 0x0000ff96, 19073 }, /* KP_Left */ + { 0x0000ffaa, 19081 }, /* KP_Multiply */ + { 0x0000ff9b, 19093 }, /* KP_Next */ + { 0x0000ff9b, 19101 }, /* KP_Page_Down */ + { 0x0000ff9a, 19114 }, /* KP_Page_Up */ + { 0x0000ff9a, 19125 }, /* KP_Prior */ + { 0x0000ff98, 19134 }, /* KP_Right */ + { 0x0000ffac, 19143 }, /* KP_Separator */ + { 0x0000ff80, 19156 }, /* KP_Space */ + { 0x0000ffad, 19165 }, /* KP_Subtract */ + { 0x0000ff89, 19177 }, /* KP_Tab */ + { 0x0000ff97, 19184 }, /* KP_Up */ + { 0x000003a2, 19190 }, /* kra */ + { 0x0000004c, 19194 }, /* L */ + { 0x0000006c, 19196 }, /* l */ + { 0x0000ffc8, 19198 }, /* L1 */ + { 0x0000ffd1, 19201 }, /* L10 */ + { 0x0000ffc9, 19205 }, /* L2 */ + { 0x0000ffca, 19208 }, /* L3 */ + { 0x0000ffcb, 19211 }, /* L4 */ + { 0x0000ffcc, 19214 }, /* L5 */ + { 0x0000ffcd, 19217 }, /* L6 */ + { 0x0000ffce, 19220 }, /* L7 */ + { 0x0000ffcf, 19223 }, /* L8 */ + { 0x0000ffd0, 19226 }, /* L9 */ + { 0x000001c5, 19229 }, /* Lacute */ + { 0x000001e5, 19236 }, /* lacute */ + { 0x0000fed4, 19243 }, /* Last_Virtual_Screen */ + { 0x00000ad9, 19263 }, /* latincross */ + { 0x01001e36, 19274 }, /* Lbelowdot */ + { 0x01001e37, 19284 }, /* lbelowdot */ + { 0x000001a5, 19294 }, /* Lcaron */ + { 0x000001b5, 19301 }, /* lcaron */ + { 0x000003a6, 19308 }, /* Lcedilla */ + { 0x000003b6, 19317 }, /* lcedilla */ + { 0x0000ff51, 19326 }, /* Left */ + { 0x00000abc, 19331 }, /* leftanglebracket */ + { 0x000008fb, 19348 }, /* leftarrow */ + { 0x00000ba3, 19358 }, /* leftcaret */ + { 0x00000ad2, 19368 }, /* leftdoublequotemark */ + { 0x000008af, 19388 }, /* leftmiddlecurlybrace */ + { 0x00000acc, 19409 }, /* leftopentriangle */ + { 0x00000aea, 19426 }, /* leftpointer */ + { 0x000008a1, 19438 }, /* leftradical */ + { 0x00000bda, 19450 }, /* leftshoe */ + { 0x00000ad0, 19459 }, /* leftsinglequotemark */ + { 0x000009f4, 19479 }, /* leftt */ + { 0x00000bdc, 19485 }, /* lefttack */ + { 0x0000003c, 19494 }, /* less */ + { 0x000008bc, 19499 }, /* lessthanequal */ + { 0x000009e5, 19513 }, /* lf */ + { 0x0000ff0a, 19516 }, /* Linefeed */ + { 0x100000af, 19525 }, /* lira */ + { 0x010020a4, 19530 }, /* LiraSign */ + { 0x000008de, 19539 }, /* logicaland */ + { 0x000008df, 19550 }, /* logicalor */ + { 0x100000f6, 19560 }, /* longminus */ + { 0x000009ed, 19570 }, /* lowleftcorner */ + { 0x000009ea, 19584 }, /* lowrightcorner */ + { 0x000001a3, 19599 }, /* Lstroke */ + { 0x000001b3, 19607 }, /* lstroke */ + { 0x0000004d, 19615 }, /* M */ + { 0x0000006d, 19617 }, /* m */ + { 0x01001e40, 19619 }, /* Mabovedot */ + { 0x01001e41, 19629 }, /* mabovedot */ + { 0x000006a5, 19639 }, /* Macedonia_dse */ + { 0x000006b5, 19653 }, /* Macedonia_DSE */ + { 0x000006a2, 19667 }, /* Macedonia_gje */ + { 0x000006b2, 19681 }, /* Macedonia_GJE */ + { 0x000006ac, 19695 }, /* Macedonia_kje */ + { 0x000006bc, 19709 }, /* Macedonia_KJE */ + { 0x000000af, 19723 }, /* macron */ + { 0x0000ff3e, 19730 }, /* Mae_Koho */ + { 0x00000af7, 19739 }, /* malesymbol */ + { 0x00000af0, 19750 }, /* maltesecross */ + { 0x00000abf, 19763 }, /* marker */ + { 0x000000ba, 19770 }, /* masculine */ + { 0x0000ff2c, 19780 }, /* Massyo */ + { 0x0000ff67, 19787 }, /* Menu */ + { 0x0000ffe7, 19792 }, /* Meta_L */ + { 0x0000ffe8, 19799 }, /* Meta_R */ + { 0x010020a5, 19806 }, /* MillSign */ + { 0x0000002d, 19815 }, /* minus */ + { 0x00000ad6, 19821 }, /* minutes */ + { 0x0000ff7e, 19829 }, /* Mode_switch */ + { 0x0000fe77, 19841 }, /* MouseKeys_Accel_Enable */ + { 0x0000fe76, 19864 }, /* MouseKeys_Enable */ + { 0x000000b5, 19881 }, /* mu */ + { 0x0000ff22, 19884 }, /* Muhenkan */ + { 0x0000ff20, 19893 }, /* Multi_key */ + { 0x0000ff3d, 19903 }, /* MultipleCandidate */ + { 0x000000d7, 19921 }, /* multiply */ + { 0x00000af6, 19930 }, /* musicalflat */ + { 0x00000af5, 19942 }, /* musicalsharp */ + { 0x100000a8, 19955 }, /* mute_acute */ + { 0x100000aa, 19966 }, /* mute_asciicircum */ + { 0x100000ac, 19983 }, /* mute_asciitilde */ + { 0x100000ab, 19999 }, /* mute_diaeresis */ + { 0x100000a9, 20014 }, /* mute_grave */ + { 0x0000004e, 20025 }, /* N */ + { 0x0000006e, 20027 }, /* n */ + { 0x000008c5, 20029 }, /* nabla */ + { 0x000001d1, 20035 }, /* Nacute */ + { 0x000001f1, 20042 }, /* nacute */ + { 0x010020a6, 20049 }, /* NairaSign */ + { 0x000001d2, 20059 }, /* Ncaron */ + { 0x000001f2, 20066 }, /* ncaron */ + { 0x000003d1, 20073 }, /* Ncedilla */ + { 0x000003f1, 20082 }, /* ncedilla */ + { 0x010020aa, 20091 }, /* NewSheqelSign */ + { 0x0000ff56, 20105 }, /* Next */ + { 0x0000fed2, 20110 }, /* Next_Virtual_Screen */ + { 0x01002089, 20130 }, /* ninesubscript */ + { 0x01002079, 20144 }, /* ninesuperior */ + { 0x000009e8, 20157 }, /* nl */ + { 0x000000a0, 20160 }, /* nobreakspace */ + { 0x00000000, 20173 }, /* NoSymbol */ + { 0x01002247, 20182 }, /* notapproxeq */ + { 0x01002209, 20194 }, /* notelementof */ + { 0x000008bd, 20207 }, /* notequal */ + { 0x01002262, 20216 }, /* notidentical */ + { 0x000000ac, 20229 }, /* notsign */ + { 0x000000d1, 20237 }, /* Ntilde */ + { 0x000000f1, 20244 }, /* ntilde */ + { 0x0000ff7f, 20251 }, /* Num_Lock */ + { 0x00000023, 20260 }, /* numbersign */ + { 0x000006b0, 20271 }, /* numerosign */ + { 0x0000004f, 20282 }, /* O */ + { 0x0000006f, 20284 }, /* o */ + { 0x000000d3, 20286 }, /* Oacute */ + { 0x000000f3, 20293 }, /* oacute */ + { 0x0100019f, 20300 }, /* Obarred */ + { 0x01000275, 20308 }, /* obarred */ + { 0x01001ecc, 20316 }, /* Obelowdot */ + { 0x01001ecd, 20326 }, /* obelowdot */ + { 0x010001d1, 20336 }, /* Ocaron */ + { 0x010001d2, 20343 }, /* ocaron */ + { 0x000000d4, 20350 }, /* Ocircumflex */ + { 0x000000f4, 20362 }, /* ocircumflex */ + { 0x01001ed0, 20374 }, /* Ocircumflexacute */ + { 0x01001ed1, 20391 }, /* ocircumflexacute */ + { 0x01001ed8, 20408 }, /* Ocircumflexbelowdot */ + { 0x01001ed9, 20428 }, /* ocircumflexbelowdot */ + { 0x01001ed2, 20448 }, /* Ocircumflexgrave */ + { 0x01001ed3, 20465 }, /* ocircumflexgrave */ + { 0x01001ed4, 20482 }, /* Ocircumflexhook */ + { 0x01001ed5, 20498 }, /* ocircumflexhook */ + { 0x01001ed6, 20514 }, /* Ocircumflextilde */ + { 0x01001ed7, 20531 }, /* ocircumflextilde */ + { 0x000000d6, 20548 }, /* Odiaeresis */ + { 0x000000f6, 20559 }, /* odiaeresis */ + { 0x000001d5, 20570 }, /* Odoubleacute */ + { 0x000001f5, 20583 }, /* odoubleacute */ + { 0x000013bc, 20596 }, /* OE */ + { 0x000013bd, 20599 }, /* oe */ + { 0x000001b2, 20602 }, /* ogonek */ + { 0x000000d2, 20609 }, /* Ograve */ + { 0x000000f2, 20616 }, /* ograve */ + { 0x01001ece, 20623 }, /* Ohook */ + { 0x01001ecf, 20629 }, /* ohook */ + { 0x010001a0, 20635 }, /* Ohorn */ + { 0x010001a1, 20641 }, /* ohorn */ + { 0x01001eda, 20647 }, /* Ohornacute */ + { 0x01001edb, 20658 }, /* ohornacute */ + { 0x01001ee2, 20669 }, /* Ohornbelowdot */ + { 0x01001ee3, 20683 }, /* ohornbelowdot */ + { 0x01001edc, 20697 }, /* Ohorngrave */ + { 0x01001edd, 20708 }, /* ohorngrave */ + { 0x01001ede, 20719 }, /* Ohornhook */ + { 0x01001edf, 20729 }, /* ohornhook */ + { 0x01001ee0, 20739 }, /* Ohorntilde */ + { 0x01001ee1, 20750 }, /* ohorntilde */ + { 0x000003d2, 20761 }, /* Omacron */ + { 0x000003f2, 20769 }, /* omacron */ + { 0x00000ac3, 20777 }, /* oneeighth */ + { 0x00000ab2, 20787 }, /* onefifth */ + { 0x000000bd, 20796 }, /* onehalf */ + { 0x000000bc, 20804 }, /* onequarter */ + { 0x00000ab6, 20815 }, /* onesixth */ + { 0x01002081, 20824 }, /* onesubscript */ + { 0x000000b9, 20837 }, /* onesuperior */ + { 0x00000ab0, 20849 }, /* onethird */ + { 0x000000d8, 20858 }, /* Ooblique */ + { 0x000000f8, 20867 }, /* ooblique */ + { 0x00000ae2, 20876 }, /* openrectbullet */ + { 0x00000ae5, 20891 }, /* openstar */ + { 0x00000ae4, 20900 }, /* opentribulletdown */ + { 0x00000ae3, 20918 }, /* opentribulletup */ + { 0x000000aa, 20934 }, /* ordfeminine */ + { 0x1004ff44, 20946 }, /* osfActivate */ + { 0x1004ff31, 20958 }, /* osfAddMode */ + { 0x1004ff08, 20969 }, /* osfBackSpace */ + { 0x1004ff07, 20982 }, /* osfBackTab */ + { 0x1004ff5a, 20993 }, /* osfBeginData */ + { 0x1004ff58, 21006 }, /* osfBeginLine */ + { 0x1004ff69, 21019 }, /* osfCancel */ + { 0x1004ff0b, 21029 }, /* osfClear */ + { 0x1004ff02, 21038 }, /* osfCopy */ + { 0x1004ff03, 21046 }, /* osfCut */ + { 0x1004ffff, 21053 }, /* osfDelete */ + { 0x1004ff72, 21063 }, /* osfDeselectAll */ + { 0x1004ff54, 21078 }, /* osfDown */ + { 0x1004ff59, 21086 }, /* osfEndData */ + { 0x1004ff57, 21097 }, /* osfEndLine */ + { 0x1004ff1b, 21108 }, /* osfEscape */ + { 0x1004ff74, 21118 }, /* osfExtend */ + { 0x1004ff6a, 21128 }, /* osfHelp */ + { 0x1004ff63, 21136 }, /* osfInsert */ + { 0x1004ff51, 21146 }, /* osfLeft */ + { 0x1004ff67, 21154 }, /* osfMenu */ + { 0x1004ff45, 21162 }, /* osfMenuBar */ + { 0x1004ff5e, 21173 }, /* osfNextField */ + { 0x1004ff5c, 21186 }, /* osfNextMenu */ + { 0x1004ff42, 21198 }, /* osfPageDown */ + { 0x1004ff40, 21210 }, /* osfPageLeft */ + { 0x1004ff43, 21222 }, /* osfPageRight */ + { 0x1004ff41, 21235 }, /* osfPageUp */ + { 0x1004ff04, 21245 }, /* osfPaste */ + { 0x1004ff5d, 21254 }, /* osfPrevField */ + { 0x1004ff5b, 21267 }, /* osfPrevMenu */ + { 0x1004ff32, 21279 }, /* osfPrimaryPaste */ + { 0x1004ff33, 21295 }, /* osfQuickPaste */ + { 0x1004ff73, 21309 }, /* osfReselect */ + { 0x1004ff78, 21321 }, /* osfRestore */ + { 0x1004ff53, 21332 }, /* osfRight */ + { 0x1004ff60, 21341 }, /* osfSelect */ + { 0x1004ff71, 21351 }, /* osfSelectAll */ + { 0x1004ff65, 21364 }, /* osfUndo */ + { 0x1004ff52, 21372 }, /* osfUp */ + { 0x000000d8, 21378 }, /* Oslash */ + { 0x000000f8, 21385 }, /* oslash */ + { 0x000000d5, 21392 }, /* Otilde */ + { 0x000000f5, 21399 }, /* otilde */ + { 0x00000bc0, 21406 }, /* overbar */ + { 0x0000fe78, 21414 }, /* Overlay1_Enable */ + { 0x0000fe79, 21430 }, /* Overlay2_Enable */ + { 0x0000047e, 21446 }, /* overline */ + { 0x00000050, 21455 }, /* P */ + { 0x00000070, 21457 }, /* p */ + { 0x01001e56, 21459 }, /* Pabovedot */ + { 0x01001e57, 21469 }, /* pabovedot */ + { 0x0000ff56, 21479 }, /* Page_Down */ + { 0x0000ff55, 21489 }, /* Page_Up */ + { 0x000000b6, 21497 }, /* paragraph */ + { 0x00000028, 21507 }, /* parenleft */ + { 0x00000029, 21517 }, /* parenright */ + { 0x01002202, 21528 }, /* partdifferential */ + { 0x000008ef, 21545 }, /* partialderivative */ + { 0x0000ff13, 21563 }, /* Pause */ + { 0x00000025, 21569 }, /* percent */ + { 0x0000002e, 21577 }, /* period */ + { 0x000000b7, 21584 }, /* periodcentered */ + { 0x00000ad5, 21599 }, /* permille */ + { 0x010020a7, 21608 }, /* PesetaSign */ + { 0x00000afb, 21619 }, /* phonographcopyright */ + { 0x0000002b, 21639 }, /* plus */ + { 0x000000b1, 21644 }, /* plusminus */ + { 0x0000fefa, 21654 }, /* Pointer_Accelerate */ + { 0x0000fee9, 21673 }, /* Pointer_Button1 */ + { 0x0000feea, 21689 }, /* Pointer_Button2 */ + { 0x0000feeb, 21705 }, /* Pointer_Button3 */ + { 0x0000feec, 21721 }, /* Pointer_Button4 */ + { 0x0000feed, 21737 }, /* Pointer_Button5 */ + { 0x0000fee8, 21753 }, /* Pointer_Button_Dflt */ + { 0x0000feef, 21773 }, /* Pointer_DblClick1 */ + { 0x0000fef0, 21791 }, /* Pointer_DblClick2 */ + { 0x0000fef1, 21809 }, /* Pointer_DblClick3 */ + { 0x0000fef2, 21827 }, /* Pointer_DblClick4 */ + { 0x0000fef3, 21845 }, /* Pointer_DblClick5 */ + { 0x0000feee, 21863 }, /* Pointer_DblClick_Dflt */ + { 0x0000fefb, 21885 }, /* Pointer_DfltBtnNext */ + { 0x0000fefc, 21905 }, /* Pointer_DfltBtnPrev */ + { 0x0000fee3, 21925 }, /* Pointer_Down */ + { 0x0000fee6, 21938 }, /* Pointer_DownLeft */ + { 0x0000fee7, 21955 }, /* Pointer_DownRight */ + { 0x0000fef5, 21973 }, /* Pointer_Drag1 */ + { 0x0000fef6, 21987 }, /* Pointer_Drag2 */ + { 0x0000fef7, 22001 }, /* Pointer_Drag3 */ + { 0x0000fef8, 22015 }, /* Pointer_Drag4 */ + { 0x0000fefd, 22029 }, /* Pointer_Drag5 */ + { 0x0000fef4, 22043 }, /* Pointer_Drag_Dflt */ + { 0x0000fef9, 22061 }, /* Pointer_EnableKeys */ + { 0x0000fee0, 22080 }, /* Pointer_Left */ + { 0x0000fee1, 22093 }, /* Pointer_Right */ + { 0x0000fee2, 22107 }, /* Pointer_Up */ + { 0x0000fee4, 22118 }, /* Pointer_UpLeft */ + { 0x0000fee5, 22133 }, /* Pointer_UpRight */ + { 0x00000ad4, 22149 }, /* prescription */ + { 0x0000fed1, 22162 }, /* Prev_Virtual_Screen */ + { 0x0000ff3e, 22182 }, /* PreviousCandidate */ + { 0x0000ff61, 22200 }, /* Print */ + { 0x0000ff55, 22206 }, /* Prior */ + { 0x000004b0, 22212 }, /* prolongedsound */ + { 0x00000aa6, 22227 }, /* punctspace */ + { 0x00000051, 22238 }, /* Q */ + { 0x00000071, 22240 }, /* q */ + { 0x00000bcc, 22242 }, /* quad */ + { 0x0000003f, 22247 }, /* question */ + { 0x000000bf, 22256 }, /* questiondown */ + { 0x00000022, 22269 }, /* quotedbl */ + { 0x00000060, 22278 }, /* quoteleft */ + { 0x00000027, 22288 }, /* quoteright */ + { 0x00000052, 22299 }, /* R */ + { 0x00000072, 22301 }, /* r */ + { 0x0000ffd2, 22303 }, /* R1 */ + { 0x0000ffdb, 22306 }, /* R10 */ + { 0x0000ffdc, 22310 }, /* R11 */ + { 0x0000ffdd, 22314 }, /* R12 */ + { 0x0000ffde, 22318 }, /* R13 */ + { 0x0000ffdf, 22322 }, /* R14 */ + { 0x0000ffe0, 22326 }, /* R15 */ + { 0x0000ffd3, 22330 }, /* R2 */ + { 0x0000ffd4, 22333 }, /* R3 */ + { 0x0000ffd5, 22336 }, /* R4 */ + { 0x0000ffd6, 22339 }, /* R5 */ + { 0x0000ffd7, 22342 }, /* R6 */ + { 0x0000ffd8, 22345 }, /* R7 */ + { 0x0000ffd9, 22348 }, /* R8 */ + { 0x0000ffda, 22351 }, /* R9 */ + { 0x000001c0, 22354 }, /* Racute */ + { 0x000001e0, 22361 }, /* racute */ + { 0x000008d6, 22368 }, /* radical */ + { 0x000001d8, 22376 }, /* Rcaron */ + { 0x000001f8, 22383 }, /* rcaron */ + { 0x000003a3, 22390 }, /* Rcedilla */ + { 0x000003b3, 22399 }, /* rcedilla */ + { 0x0000ff66, 22408 }, /* Redo */ + { 0x000000ae, 22413 }, /* registered */ + { 0x0000fe72, 22424 }, /* RepeatKeys_Enable */ + { 0x1000ff6c, 22442 }, /* Reset */ + { 0x0000ff0d, 22448 }, /* Return */ + { 0x0000ff53, 22455 }, /* Right */ + { 0x00000abe, 22461 }, /* rightanglebracket */ + { 0x000008fd, 22479 }, /* rightarrow */ + { 0x00000ba6, 22490 }, /* rightcaret */ + { 0x00000ad3, 22501 }, /* rightdoublequotemark */ + { 0x000008b0, 22522 }, /* rightmiddlecurlybrace */ + { 0x000008b7, 22544 }, /* rightmiddlesummation */ + { 0x00000acd, 22565 }, /* rightopentriangle */ + { 0x00000aeb, 22583 }, /* rightpointer */ + { 0x00000bd8, 22596 }, /* rightshoe */ + { 0x00000ad1, 22606 }, /* rightsinglequotemark */ + { 0x000009f5, 22627 }, /* rightt */ + { 0x00000bfc, 22634 }, /* righttack */ + { 0x0000ff24, 22644 }, /* Romaji */ + { 0x010020a8, 22651 }, /* RupeeSign */ + { 0x00000053, 22661 }, /* S */ + { 0x00000073, 22663 }, /* s */ + { 0x01001e60, 22665 }, /* Sabovedot */ + { 0x01001e61, 22675 }, /* sabovedot */ + { 0x000001a6, 22685 }, /* Sacute */ + { 0x000001b6, 22692 }, /* sacute */ + { 0x000001a9, 22699 }, /* Scaron */ + { 0x000001b9, 22706 }, /* scaron */ + { 0x000001aa, 22713 }, /* Scedilla */ + { 0x000001ba, 22722 }, /* scedilla */ + { 0x0100018f, 22731 }, /* SCHWA */ + { 0x01000259, 22737 }, /* schwa */ + { 0x000002de, 22743 }, /* Scircumflex */ + { 0x000002fe, 22755 }, /* scircumflex */ + { 0x0000ff7e, 22767 }, /* script_switch */ + { 0x0000ff14, 22781 }, /* Scroll_Lock */ + { 0x00000ad7, 22793 }, /* seconds */ + { 0x000000a7, 22801 }, /* section */ + { 0x0000ff60, 22809 }, /* Select */ + { 0x0000003b, 22816 }, /* semicolon */ + { 0x000004df, 22826 }, /* semivoicedsound */ + { 0x000006a1, 22842 }, /* Serbian_dje */ + { 0x000006b1, 22854 }, /* Serbian_DJE */ + { 0x000006af, 22866 }, /* Serbian_dze */ + { 0x000006bf, 22878 }, /* Serbian_DZE */ + { 0x000006a8, 22890 }, /* Serbian_je */ + { 0x000006b8, 22901 }, /* Serbian_JE */ + { 0x000006a9, 22912 }, /* Serbian_lje */ + { 0x000006b9, 22924 }, /* Serbian_LJE */ + { 0x000006aa, 22936 }, /* Serbian_nje */ + { 0x000006ba, 22948 }, /* Serbian_NJE */ + { 0x000006ab, 22960 }, /* Serbian_tshe */ + { 0x000006bb, 22973 }, /* Serbian_TSHE */ + { 0x00000ac6, 22986 }, /* seveneighths */ + { 0x01002087, 22999 }, /* sevensubscript */ + { 0x01002077, 23014 }, /* sevensuperior */ + { 0x0000ffe1, 23028 }, /* Shift_L */ + { 0x0000ffe6, 23036 }, /* Shift_Lock */ + { 0x0000ffe2, 23047 }, /* Shift_R */ + { 0x00000aca, 23055 }, /* signaturemark */ + { 0x00000aac, 23069 }, /* signifblank */ + { 0x000008c9, 23081 }, /* similarequal */ + { 0x0000ff3c, 23094 }, /* SingleCandidate */ + { 0x00000afd, 23110 }, /* singlelowquotemark */ + { 0x01000d85, 23129 }, /* Sinh_a */ + { 0x01000d86, 23136 }, /* Sinh_aa */ + { 0x01000dcf, 23144 }, /* Sinh_aa2 */ + { 0x01000d87, 23153 }, /* Sinh_ae */ + { 0x01000dd0, 23161 }, /* Sinh_ae2 */ + { 0x01000d88, 23170 }, /* Sinh_aee */ + { 0x01000dd1, 23179 }, /* Sinh_aee2 */ + { 0x01000d93, 23189 }, /* Sinh_ai */ + { 0x01000ddb, 23197 }, /* Sinh_ai2 */ + { 0x01000dca, 23206 }, /* Sinh_al */ + { 0x01000d96, 23214 }, /* Sinh_au */ + { 0x01000dde, 23222 }, /* Sinh_au2 */ + { 0x01000db6, 23231 }, /* Sinh_ba */ + { 0x01000db7, 23239 }, /* Sinh_bha */ + { 0x01000da0, 23248 }, /* Sinh_ca */ + { 0x01000da1, 23256 }, /* Sinh_cha */ + { 0x01000da9, 23265 }, /* Sinh_dda */ + { 0x01000daa, 23274 }, /* Sinh_ddha */ + { 0x01000daf, 23284 }, /* Sinh_dha */ + { 0x01000db0, 23293 }, /* Sinh_dhha */ + { 0x01000d91, 23303 }, /* Sinh_e */ + { 0x01000dd9, 23310 }, /* Sinh_e2 */ + { 0x01000d92, 23318 }, /* Sinh_ee */ + { 0x01000dda, 23326 }, /* Sinh_ee2 */ + { 0x01000dc6, 23335 }, /* Sinh_fa */ + { 0x01000d9c, 23343 }, /* Sinh_ga */ + { 0x01000d9d, 23351 }, /* Sinh_gha */ + { 0x01000d83, 23360 }, /* Sinh_h2 */ + { 0x01000dc4, 23368 }, /* Sinh_ha */ + { 0x01000d89, 23376 }, /* Sinh_i */ + { 0x01000dd2, 23383 }, /* Sinh_i2 */ + { 0x01000d8a, 23391 }, /* Sinh_ii */ + { 0x01000dd3, 23399 }, /* Sinh_ii2 */ + { 0x01000da2, 23408 }, /* Sinh_ja */ + { 0x01000da3, 23416 }, /* Sinh_jha */ + { 0x01000da5, 23425 }, /* Sinh_jnya */ + { 0x01000d9a, 23435 }, /* Sinh_ka */ + { 0x01000d9b, 23443 }, /* Sinh_kha */ + { 0x01000df4, 23452 }, /* Sinh_kunddaliya */ + { 0x01000dbd, 23468 }, /* Sinh_la */ + { 0x01000dc5, 23476 }, /* Sinh_lla */ + { 0x01000d8f, 23485 }, /* Sinh_lu */ + { 0x01000ddf, 23493 }, /* Sinh_lu2 */ + { 0x01000d90, 23502 }, /* Sinh_luu */ + { 0x01000df3, 23511 }, /* Sinh_luu2 */ + { 0x01000db8, 23521 }, /* Sinh_ma */ + { 0x01000db9, 23529 }, /* Sinh_mba */ + { 0x01000db1, 23538 }, /* Sinh_na */ + { 0x01000dac, 23546 }, /* Sinh_ndda */ + { 0x01000db3, 23556 }, /* Sinh_ndha */ + { 0x01000d82, 23566 }, /* Sinh_ng */ + { 0x01000d9e, 23574 }, /* Sinh_ng2 */ + { 0x01000d9f, 23583 }, /* Sinh_nga */ + { 0x01000da6, 23592 }, /* Sinh_nja */ + { 0x01000dab, 23601 }, /* Sinh_nna */ + { 0x01000da4, 23610 }, /* Sinh_nya */ + { 0x01000d94, 23619 }, /* Sinh_o */ + { 0x01000ddc, 23626 }, /* Sinh_o2 */ + { 0x01000d95, 23634 }, /* Sinh_oo */ + { 0x01000ddd, 23642 }, /* Sinh_oo2 */ + { 0x01000db4, 23651 }, /* Sinh_pa */ + { 0x01000db5, 23659 }, /* Sinh_pha */ + { 0x01000dbb, 23668 }, /* Sinh_ra */ + { 0x01000d8d, 23676 }, /* Sinh_ri */ + { 0x01000d8e, 23684 }, /* Sinh_rii */ + { 0x01000dd8, 23693 }, /* Sinh_ru2 */ + { 0x01000df2, 23702 }, /* Sinh_ruu2 */ + { 0x01000dc3, 23712 }, /* Sinh_sa */ + { 0x01000dc1, 23720 }, /* Sinh_sha */ + { 0x01000dc2, 23729 }, /* Sinh_ssha */ + { 0x01000dad, 23739 }, /* Sinh_tha */ + { 0x01000dae, 23748 }, /* Sinh_thha */ + { 0x01000da7, 23758 }, /* Sinh_tta */ + { 0x01000da8, 23767 }, /* Sinh_ttha */ + { 0x01000d8b, 23777 }, /* Sinh_u */ + { 0x01000dd4, 23784 }, /* Sinh_u2 */ + { 0x01000d8c, 23792 }, /* Sinh_uu */ + { 0x01000dd6, 23800 }, /* Sinh_uu2 */ + { 0x01000dc0, 23809 }, /* Sinh_va */ + { 0x01000dba, 23817 }, /* Sinh_ya */ + { 0x01002086, 23825 }, /* sixsubscript */ + { 0x01002076, 23838 }, /* sixsuperior */ + { 0x0000002f, 23850 }, /* slash */ + { 0x0000fe73, 23856 }, /* SlowKeys_Enable */ + { 0x000009e0, 23872 }, /* soliddiamond */ + { 0x00000020, 23885 }, /* space */ + { 0x0100221a, 23891 }, /* squareroot */ + { 0x000000df, 23902 }, /* ssharp */ + { 0x000000a3, 23909 }, /* sterling */ + { 0x0000fe75, 23918 }, /* StickyKeys_Enable */ + { 0x01002263, 23936 }, /* stricteq */ + { 0x0000ff66, 23945 }, /* SunAgain */ + { 0x0000ff7e, 23954 }, /* SunAltGraph */ + { 0x1005ff77, 23966 }, /* SunAudioLowerVolume */ + { 0x1005ff78, 23986 }, /* SunAudioMute */ + { 0x1005ff79, 23999 }, /* SunAudioRaiseVolume */ + { 0x0000ff20, 24019 }, /* SunCompose */ + { 0x1005ff72, 24030 }, /* SunCopy */ + { 0x1005ff75, 24038 }, /* SunCut */ + { 0x1005ff10, 24045 }, /* SunF36 */ + { 0x1005ff11, 24052 }, /* SunF37 */ + { 0x1005ff03, 24059 }, /* SunFA_Acute */ + { 0x1005ff05, 24071 }, /* SunFA_Cedilla */ + { 0x1005ff01, 24085 }, /* SunFA_Circum */ + { 0x1005ff04, 24098 }, /* SunFA_Diaeresis */ + { 0x1005ff00, 24114 }, /* SunFA_Grave */ + { 0x1005ff02, 24126 }, /* SunFA_Tilde */ + { 0x0000ff68, 24138 }, /* SunFind */ + { 0x1005ff71, 24146 }, /* SunFront */ + { 0x1005ff73, 24155 }, /* SunOpen */ + { 0x0000ff56, 24163 }, /* SunPageDown */ + { 0x0000ff55, 24175 }, /* SunPageUp */ + { 0x1005ff74, 24185 }, /* SunPaste */ + { 0x1005ff76, 24194 }, /* SunPowerSwitch */ + { 0x1005ff7d, 24209 }, /* SunPowerSwitchShift */ + { 0x0000ff61, 24229 }, /* SunPrint_Screen */ + { 0x1005ff70, 24245 }, /* SunProps */ + { 0x0000ff69, 24254 }, /* SunStop */ + { 0x1005ff60, 24262 }, /* SunSys_Req */ + { 0x0000ff65, 24273 }, /* SunUndo */ + { 0x1005ff7a, 24281 }, /* SunVideoDegauss */ + { 0x1005ff7b, 24297 }, /* SunVideoLowerBrightness */ + { 0x1005ff7c, 24321 }, /* SunVideoRaiseBrightness */ + { 0x0000ffeb, 24345 }, /* Super_L */ + { 0x0000ffec, 24353 }, /* Super_R */ + { 0x0000ff15, 24361 }, /* Sys_Req */ + { 0x1000ff6d, 24369 }, /* System */ + { 0x00000054, 24376 }, /* T */ + { 0x00000074, 24378 }, /* t */ + { 0x0000ff09, 24380 }, /* Tab */ + { 0x01001e6a, 24384 }, /* Tabovedot */ + { 0x01001e6b, 24394 }, /* tabovedot */ + { 0x000001ab, 24404 }, /* Tcaron */ + { 0x000001bb, 24411 }, /* tcaron */ + { 0x000001de, 24418 }, /* Tcedilla */ + { 0x000001fe, 24427 }, /* tcedilla */ + { 0x00000af9, 24436 }, /* telephone */ + { 0x00000afa, 24446 }, /* telephonerecorder */ + { 0x0000fed5, 24464 }, /* Terminate_Server */ + { 0x00000ddf, 24481 }, /* Thai_baht */ + { 0x00000dba, 24491 }, /* Thai_bobaimai */ + { 0x00000da8, 24505 }, /* Thai_chochan */ + { 0x00000daa, 24518 }, /* Thai_chochang */ + { 0x00000da9, 24532 }, /* Thai_choching */ + { 0x00000dac, 24546 }, /* Thai_chochoe */ + { 0x00000dae, 24559 }, /* Thai_dochada */ + { 0x00000db4, 24572 }, /* Thai_dodek */ + { 0x00000dbd, 24583 }, /* Thai_fofa */ + { 0x00000dbf, 24593 }, /* Thai_fofan */ + { 0x00000dcb, 24604 }, /* Thai_hohip */ + { 0x00000dce, 24615 }, /* Thai_honokhuk */ + { 0x00000da2, 24629 }, /* Thai_khokhai */ + { 0x00000da5, 24642 }, /* Thai_khokhon */ + { 0x00000da3, 24655 }, /* Thai_khokhuat */ + { 0x00000da4, 24669 }, /* Thai_khokhwai */ + { 0x00000da6, 24683 }, /* Thai_khorakhang */ + { 0x00000da1, 24699 }, /* Thai_kokai */ + { 0x00000de5, 24710 }, /* Thai_lakkhangyao */ + { 0x00000df7, 24727 }, /* Thai_lekchet */ + { 0x00000df5, 24740 }, /* Thai_lekha */ + { 0x00000df6, 24751 }, /* Thai_lekhok */ + { 0x00000df9, 24763 }, /* Thai_lekkao */ + { 0x00000df1, 24775 }, /* Thai_leknung */ + { 0x00000df8, 24788 }, /* Thai_lekpaet */ + { 0x00000df3, 24801 }, /* Thai_leksam */ + { 0x00000df4, 24813 }, /* Thai_leksi */ + { 0x00000df2, 24824 }, /* Thai_leksong */ + { 0x00000df0, 24837 }, /* Thai_leksun */ + { 0x00000dcc, 24849 }, /* Thai_lochula */ + { 0x00000dc5, 24862 }, /* Thai_loling */ + { 0x00000dc6, 24874 }, /* Thai_lu */ + { 0x00000deb, 24882 }, /* Thai_maichattawa */ + { 0x00000de8, 24899 }, /* Thai_maiek */ + { 0x00000dd1, 24910 }, /* Thai_maihanakat */ + { 0x00000dde, 24926 }, /* Thai_maihanakat_maitho */ + { 0x00000de7, 24949 }, /* Thai_maitaikhu */ + { 0x00000de9, 24964 }, /* Thai_maitho */ + { 0x00000dea, 24976 }, /* Thai_maitri */ + { 0x00000de6, 24988 }, /* Thai_maiyamok */ + { 0x00000dc1, 25002 }, /* Thai_moma */ + { 0x00000da7, 25012 }, /* Thai_ngongu */ + { 0x00000ded, 25024 }, /* Thai_nikhahit */ + { 0x00000db3, 25038 }, /* Thai_nonen */ + { 0x00000db9, 25049 }, /* Thai_nonu */ + { 0x00000dcd, 25059 }, /* Thai_oang */ + { 0x00000dcf, 25069 }, /* Thai_paiyannoi */ + { 0x00000dda, 25084 }, /* Thai_phinthu */ + { 0x00000dbe, 25097 }, /* Thai_phophan */ + { 0x00000dbc, 25110 }, /* Thai_phophung */ + { 0x00000dc0, 25124 }, /* Thai_phosamphao */ + { 0x00000dbb, 25140 }, /* Thai_popla */ + { 0x00000dc3, 25151 }, /* Thai_rorua */ + { 0x00000dc4, 25162 }, /* Thai_ru */ + { 0x00000dd0, 25170 }, /* Thai_saraa */ + { 0x00000dd2, 25181 }, /* Thai_saraaa */ + { 0x00000de1, 25193 }, /* Thai_saraae */ + { 0x00000de4, 25205 }, /* Thai_saraaimaimalai */ + { 0x00000de3, 25225 }, /* Thai_saraaimaimuan */ + { 0x00000dd3, 25244 }, /* Thai_saraam */ + { 0x00000de0, 25256 }, /* Thai_sarae */ + { 0x00000dd4, 25267 }, /* Thai_sarai */ + { 0x00000dd5, 25278 }, /* Thai_saraii */ + { 0x00000de2, 25290 }, /* Thai_sarao */ + { 0x00000dd8, 25301 }, /* Thai_sarau */ + { 0x00000dd6, 25312 }, /* Thai_saraue */ + { 0x00000dd7, 25324 }, /* Thai_sarauee */ + { 0x00000dd9, 25337 }, /* Thai_sarauu */ + { 0x00000dc9, 25349 }, /* Thai_sorusi */ + { 0x00000dc8, 25361 }, /* Thai_sosala */ + { 0x00000dab, 25373 }, /* Thai_soso */ + { 0x00000dca, 25383 }, /* Thai_sosua */ + { 0x00000dec, 25394 }, /* Thai_thanthakhat */ + { 0x00000db1, 25411 }, /* Thai_thonangmontho */ + { 0x00000db2, 25430 }, /* Thai_thophuthao */ + { 0x00000db7, 25446 }, /* Thai_thothahan */ + { 0x00000db0, 25461 }, /* Thai_thothan */ + { 0x00000db8, 25474 }, /* Thai_thothong */ + { 0x00000db6, 25488 }, /* Thai_thothung */ + { 0x00000daf, 25502 }, /* Thai_topatak */ + { 0x00000db5, 25515 }, /* Thai_totao */ + { 0x00000dc7, 25526 }, /* Thai_wowaen */ + { 0x00000dc2, 25538 }, /* Thai_yoyak */ + { 0x00000dad, 25549 }, /* Thai_yoying */ + { 0x000008c0, 25561 }, /* therefore */ + { 0x00000aa7, 25571 }, /* thinspace */ + { 0x000000de, 25581 }, /* THORN */ + { 0x000000de, 25587 }, /* Thorn */ + { 0x000000fe, 25593 }, /* thorn */ + { 0x00000ac4, 25599 }, /* threeeighths */ + { 0x00000ab4, 25612 }, /* threefifths */ + { 0x000000be, 25624 }, /* threequarters */ + { 0x01002083, 25638 }, /* threesubscript */ + { 0x000000b3, 25653 }, /* threesuperior */ + { 0x0100222d, 25667 }, /* tintegral */ + { 0x000008a4, 25677 }, /* topintegral */ + { 0x000008ab, 25689 }, /* topleftparens */ + { 0x000008a2, 25703 }, /* topleftradical */ + { 0x000008a7, 25718 }, /* topleftsqbracket */ + { 0x000008b1, 25735 }, /* topleftsummation */ + { 0x000008ad, 25752 }, /* toprightparens */ + { 0x000008a9, 25767 }, /* toprightsqbracket */ + { 0x000008b5, 25785 }, /* toprightsummation */ + { 0x000009f7, 25803 }, /* topt */ + { 0x000008b3, 25808 }, /* topvertsummationconnector */ + { 0x0000ff2b, 25834 }, /* Touroku */ + { 0x00000ac9, 25842 }, /* trademark */ + { 0x00000acb, 25852 }, /* trademarkincircle */ + { 0x000003ac, 25870 }, /* Tslash */ + { 0x000003bc, 25877 }, /* tslash */ + { 0x00000ab3, 25884 }, /* twofifths */ + { 0x01002082, 25894 }, /* twosubscript */ + { 0x000000b2, 25907 }, /* twosuperior */ + { 0x00000ab1, 25919 }, /* twothirds */ + { 0x00000055, 25929 }, /* U */ + { 0x00000075, 25931 }, /* u */ + { 0x000000da, 25933 }, /* Uacute */ + { 0x000000fa, 25940 }, /* uacute */ + { 0x01001ee4, 25947 }, /* Ubelowdot */ + { 0x01001ee5, 25957 }, /* ubelowdot */ + { 0x000002dd, 25967 }, /* Ubreve */ + { 0x000002fd, 25974 }, /* ubreve */ + { 0x000000db, 25981 }, /* Ucircumflex */ + { 0x000000fb, 25993 }, /* ucircumflex */ + { 0x000000dc, 26005 }, /* Udiaeresis */ + { 0x000000fc, 26016 }, /* udiaeresis */ + { 0x000001db, 26027 }, /* Udoubleacute */ + { 0x000001fb, 26040 }, /* udoubleacute */ + { 0x000000d9, 26053 }, /* Ugrave */ + { 0x000000f9, 26060 }, /* ugrave */ + { 0x01001ee6, 26067 }, /* Uhook */ + { 0x01001ee7, 26073 }, /* uhook */ + { 0x010001af, 26079 }, /* Uhorn */ + { 0x010001b0, 26085 }, /* uhorn */ + { 0x01001ee8, 26091 }, /* Uhornacute */ + { 0x01001ee9, 26102 }, /* uhornacute */ + { 0x01001ef0, 26113 }, /* Uhornbelowdot */ + { 0x01001ef1, 26127 }, /* uhornbelowdot */ + { 0x01001eea, 26141 }, /* Uhorngrave */ + { 0x01001eeb, 26152 }, /* uhorngrave */ + { 0x01001eec, 26163 }, /* Uhornhook */ + { 0x01001eed, 26173 }, /* uhornhook */ + { 0x01001eee, 26183 }, /* Uhorntilde */ + { 0x01001eef, 26194 }, /* uhorntilde */ + { 0x000006ad, 26205 }, /* Ukrainian_ghe_with_upturn */ + { 0x000006bd, 26231 }, /* Ukrainian_GHE_WITH_UPTURN */ + { 0x000006a6, 26257 }, /* Ukrainian_i */ + { 0x000006b6, 26269 }, /* Ukrainian_I */ + { 0x000006a4, 26281 }, /* Ukrainian_ie */ + { 0x000006b4, 26294 }, /* Ukrainian_IE */ + { 0x000006a7, 26307 }, /* Ukrainian_yi */ + { 0x000006b7, 26320 }, /* Ukrainian_YI */ + { 0x000006a6, 26333 }, /* Ukranian_i */ + { 0x000006b6, 26344 }, /* Ukranian_I */ + { 0x000006a4, 26355 }, /* Ukranian_je */ + { 0x000006b4, 26367 }, /* Ukranian_JE */ + { 0x000006a7, 26379 }, /* Ukranian_yi */ + { 0x000006b7, 26391 }, /* Ukranian_YI */ + { 0x000003de, 26403 }, /* Umacron */ + { 0x000003fe, 26411 }, /* umacron */ + { 0x00000bc6, 26419 }, /* underbar */ + { 0x0000005f, 26428 }, /* underscore */ + { 0x0000ff65, 26439 }, /* Undo */ + { 0x000008dd, 26444 }, /* union */ + { 0x000003d9, 26450 }, /* Uogonek */ + { 0x000003f9, 26458 }, /* uogonek */ + { 0x0000ff52, 26466 }, /* Up */ + { 0x000008fc, 26469 }, /* uparrow */ + { 0x00000ba9, 26477 }, /* upcaret */ + { 0x000009ec, 26485 }, /* upleftcorner */ + { 0x000009eb, 26498 }, /* uprightcorner */ + { 0x00000bc3, 26512 }, /* upshoe */ + { 0x00000bd3, 26519 }, /* upstile */ + { 0x00000bce, 26527 }, /* uptack */ + { 0x000001d9, 26534 }, /* Uring */ + { 0x000001f9, 26540 }, /* uring */ + { 0x1000ff6e, 26546 }, /* User */ + { 0x000003dd, 26551 }, /* Utilde */ + { 0x000003fd, 26558 }, /* utilde */ + { 0x00000056, 26565 }, /* V */ + { 0x00000076, 26567 }, /* v */ + { 0x000008c1, 26569 }, /* variation */ + { 0x000009f8, 26579 }, /* vertbar */ + { 0x000008a6, 26587 }, /* vertconnector */ + { 0x000004de, 26601 }, /* voicedsound */ + { 0x00ffffff, 26613 }, /* VoidSymbol */ + { 0x000009e9, 26624 }, /* vt */ + { 0x00000057, 26627 }, /* W */ + { 0x00000077, 26629 }, /* w */ + { 0x01001e82, 26631 }, /* Wacute */ + { 0x01001e83, 26638 }, /* wacute */ + { 0x01000174, 26645 }, /* Wcircumflex */ + { 0x01000175, 26657 }, /* wcircumflex */ + { 0x01001e84, 26669 }, /* Wdiaeresis */ + { 0x01001e85, 26680 }, /* wdiaeresis */ + { 0x01001e80, 26691 }, /* Wgrave */ + { 0x01001e81, 26698 }, /* wgrave */ + { 0x010020a9, 26705 }, /* WonSign */ + { 0x00000058, 26713 }, /* X */ + { 0x00000078, 26715 }, /* x */ + { 0x01001e8a, 26717 }, /* Xabovedot */ + { 0x01001e8b, 26727 }, /* xabovedot */ + { 0x100811b9, 26737 }, /* XF8610ChannelsDown */ + { 0x100811b8, 26756 }, /* XF8610ChannelsUp */ + { 0x1008126f, 26773 }, /* XF863DMode */ + { 0x1008ff39, 26784 }, /* XF86AddFavorite */ + { 0x100811ad, 26800 }, /* XF86Addressbook */ + { 0x10081230, 26816 }, /* XF86ALSToggle */ + { 0x1008ff50, 26830 }, /* XF86ApplicationLeft */ + { 0x1008ff51, 26850 }, /* XF86ApplicationRight */ + { 0x10081244, 26871 }, /* XF86AppSelect */ + { 0x10081177, 26885 }, /* XF86AspectRatio */ + { 0x10081247, 26901 }, /* XF86Assistant */ + { 0x1008121c, 26915 }, /* XF86AttendantOff */ + { 0x1008121b, 26932 }, /* XF86AttendantOn */ + { 0x1008121d, 26948 }, /* XF86AttendantToggle */ + { 0x10081188, 26968 }, /* XF86Audio */ + { 0x1008ff9b, 26978 }, /* XF86AudioCycleTrack */ + { 0x1008126e, 26998 }, /* XF86AudioDesc */ + { 0x1008ff97, 27012 }, /* XF86AudioForward */ + { 0x1008ff11, 27029 }, /* XF86AudioLowerVolume */ + { 0x1008ff32, 27050 }, /* XF86AudioMedia */ + { 0x1008ffb2, 27065 }, /* XF86AudioMicMute */ + { 0x1008ff12, 27082 }, /* XF86AudioMute */ + { 0x1008ff17, 27096 }, /* XF86AudioNext */ + { 0x1008ff31, 27110 }, /* XF86AudioPause */ + { 0x1008ff14, 27125 }, /* XF86AudioPlay */ + { 0x1008ffb6, 27139 }, /* XF86AudioPreset */ + { 0x1008ff16, 27155 }, /* XF86AudioPrev */ + { 0x1008ff13, 27169 }, /* XF86AudioRaiseVolume */ + { 0x1008ff99, 27190 }, /* XF86AudioRandomPlay */ + { 0x1008ff1c, 27210 }, /* XF86AudioRecord */ + { 0x1008ff98, 27226 }, /* XF86AudioRepeat */ + { 0x1008ff3e, 27242 }, /* XF86AudioRewind */ + { 0x1008ff15, 27258 }, /* XF86AudioStop */ + { 0x1008ff8d, 27272 }, /* XF86Away */ + { 0x1008ff26, 27281 }, /* XF86Back */ + { 0x1008ff3f, 27290 }, /* XF86BackForward */ + { 0x1008ff93, 27306 }, /* XF86Battery */ + { 0x1008ffa6, 27318 }, /* XF86Blue */ + { 0x1008ff94, 27327 }, /* XF86Bluetooth */ + { 0x1008ff52, 27341 }, /* XF86Book */ + { 0x1008119b, 27350 }, /* XF86Break */ + { 0x1008ff3b, 27360 }, /* XF86BrightnessAdjust */ + { 0x100810f4, 27381 }, /* XF86BrightnessAuto */ + { 0x10081251, 27400 }, /* XF86BrightnessMax */ + { 0x10081250, 27418 }, /* XF86BrightnessMin */ + { 0x10081240, 27436 }, /* XF86Buttonconfig */ + { 0x1008ff54, 27453 }, /* XF86Calculater */ + { 0x1008ff1d, 27468 }, /* XF86Calculator */ + { 0x1008ff20, 27483 }, /* XF86Calendar */ + { 0x10081218, 27496 }, /* XF86CameraDown */ + { 0x10081210, 27511 }, /* XF86CameraFocus */ + { 0x10081219, 27527 }, /* XF86CameraLeft */ + { 0x1008121a, 27542 }, /* XF86CameraRight */ + { 0x10081217, 27558 }, /* XF86CameraUp */ + { 0x10081215, 27571 }, /* XF86CameraZoomIn */ + { 0x10081216, 27588 }, /* XF86CameraZoomOut */ + { 0x1008ff53, 27606 }, /* XF86CD */ + { 0x10081193, 27613 }, /* XF86ChannelDown */ + { 0x10081192, 27629 }, /* XF86ChannelUp */ + { 0x1008ff55, 27643 }, /* XF86Clear */ + { 0x1008fe21, 27653 }, /* XF86ClearGrab */ + { 0x1008ff56, 27667 }, /* XF86Close */ + { 0x1008ff3d, 27677 }, /* XF86Community */ + { 0x100811b6, 27691 }, /* XF86ContextMenu */ + { 0x1008ff22, 27707 }, /* XF86ContrastAdjust */ + { 0x10081243, 27726 }, /* XF86ControlPanel */ + { 0x1008ff57, 27743 }, /* XF86Copy */ + { 0x1008ff58, 27752 }, /* XF86Cut */ + { 0x1008ff9c, 27760 }, /* XF86CycleAngle */ + { 0x10081277, 27775 }, /* XF86Data */ + { 0x100811aa, 27784 }, /* XF86Database */ + { 0x1008ff59, 27797 }, /* XF86Display */ + { 0x100810f5, 27809 }, /* XF86DisplayOff */ + { 0x100811af, 27824 }, /* XF86DisplayToggle */ + { 0x1008ff5b, 27842 }, /* XF86Documents */ + { 0x1008ff5a, 27856 }, /* XF86DOS */ + { 0x10081185, 27864 }, /* XF86DVD */ + { 0x100811a6, 27872 }, /* XF86Editor */ + { 0x1008ff2c, 27883 }, /* XF86Eject */ + { 0x1008ff5c, 27893 }, /* XF86Excel */ + { 0x1008ff5d, 27903 }, /* XF86Explorer */ + { 0x10081275, 27916 }, /* XF86FastReverse */ + { 0x1008ff30, 27932 }, /* XF86Favorites */ + { 0x1008ff3c, 27946 }, /* XF86Finance */ + { 0x100811d0, 27958 }, /* XF86Fn */ + { 0x100811d1, 27965 }, /* XF86Fn_Esc */ + { 0x100811e5, 27976 }, /* XF86FnRightShift */ + { 0x1008ff27, 27993 }, /* XF86Forward */ + { 0x1008ff9d, 28005 }, /* XF86FrameBack */ + { 0x1008ff9e, 28019 }, /* XF86FrameForward */ + { 0x1008ffb8, 28036 }, /* XF86FullScreen */ + { 0x1008ff5e, 28051 }, /* XF86Game */ + { 0x1008ff5f, 28060 }, /* XF86Go */ + { 0x100811a8, 28067 }, /* XF86GraphicsEditor */ + { 0x1008ffa4, 28086 }, /* XF86Green */ + { 0x100811be, 28096 }, /* XF86HangupPhone */ + { 0x1008ffa8, 28112 }, /* XF86Hibernate */ + { 0x1008ff37, 28126 }, /* XF86History */ + { 0x1008ff18, 28138 }, /* XF86HomePage */ + { 0x1008ff3a, 28151 }, /* XF86HotLinks */ + { 0x100811ba, 28164 }, /* XF86Images */ + { 0x10081166, 28175 }, /* XF86Info */ + { 0x1008ff60, 28184 }, /* XF86iTouch */ + { 0x10081242, 28195 }, /* XF86Journal */ + { 0x1008ff06, 28207 }, /* XF86KbdBrightnessDown */ + { 0x1008ff05, 28229 }, /* XF86KbdBrightnessUp */ + { 0x10081264, 28249 }, /* XF86KbdInputAssistAccept */ + { 0x10081265, 28274 }, /* XF86KbdInputAssistCancel */ + { 0x10081261, 28299 }, /* XF86KbdInputAssistNext */ + { 0x10081263, 28322 }, /* XF86KbdInputAssistNextgroup */ + { 0x10081260, 28350 }, /* XF86KbdInputAssistPrev */ + { 0x10081262, 28373 }, /* XF86KbdInputAssistPrevgroup */ + { 0x100812b8, 28401 }, /* XF86KbdLcdMenu1 */ + { 0x100812b9, 28417 }, /* XF86KbdLcdMenu2 */ + { 0x100812ba, 28433 }, /* XF86KbdLcdMenu3 */ + { 0x100812bb, 28449 }, /* XF86KbdLcdMenu4 */ + { 0x100812bc, 28465 }, /* XF86KbdLcdMenu5 */ + { 0x1008ff04, 28481 }, /* XF86KbdLightOnOff */ + { 0x1008ffb3, 28499 }, /* XF86Keyboard */ + { 0x1008ff40, 28512 }, /* XF86Launch0 */ + { 0x1008ff41, 28524 }, /* XF86Launch1 */ + { 0x1008ff42, 28536 }, /* XF86Launch2 */ + { 0x1008ff43, 28548 }, /* XF86Launch3 */ + { 0x1008ff44, 28560 }, /* XF86Launch4 */ + { 0x1008ff45, 28572 }, /* XF86Launch5 */ + { 0x1008ff46, 28584 }, /* XF86Launch6 */ + { 0x1008ff47, 28596 }, /* XF86Launch7 */ + { 0x1008ff48, 28608 }, /* XF86Launch8 */ + { 0x1008ff49, 28620 }, /* XF86Launch9 */ + { 0x1008ff4a, 28632 }, /* XF86LaunchA */ + { 0x1008ff4b, 28644 }, /* XF86LaunchB */ + { 0x1008ff4c, 28656 }, /* XF86LaunchC */ + { 0x1008ff4d, 28668 }, /* XF86LaunchD */ + { 0x1008ff4e, 28680 }, /* XF86LaunchE */ + { 0x1008ff4f, 28692 }, /* XF86LaunchF */ + { 0x10081269, 28704 }, /* XF86LeftDown */ + { 0x10081268, 28717 }, /* XF86LeftUp */ + { 0x1008ff35, 28728 }, /* XF86LightBulb */ + { 0x1008121e, 28742 }, /* XF86LightsToggle */ + { 0x1008fe25, 28759 }, /* XF86LogGrabInfo */ + { 0x1008ff61, 28775 }, /* XF86LogOff */ + { 0x1008fe24, 28786 }, /* XF86LogWindowTree */ + { 0x10081290, 28804 }, /* XF86Macro1 */ + { 0x10081299, 28815 }, /* XF86Macro10 */ + { 0x1008129a, 28827 }, /* XF86Macro11 */ + { 0x1008129b, 28839 }, /* XF86Macro12 */ + { 0x1008129c, 28851 }, /* XF86Macro13 */ + { 0x1008129d, 28863 }, /* XF86Macro14 */ + { 0x1008129e, 28875 }, /* XF86Macro15 */ + { 0x1008129f, 28887 }, /* XF86Macro16 */ + { 0x100812a0, 28899 }, /* XF86Macro17 */ + { 0x100812a1, 28911 }, /* XF86Macro18 */ + { 0x100812a2, 28923 }, /* XF86Macro19 */ + { 0x10081291, 28935 }, /* XF86Macro2 */ + { 0x100812a3, 28946 }, /* XF86Macro20 */ + { 0x100812a4, 28958 }, /* XF86Macro21 */ + { 0x100812a5, 28970 }, /* XF86Macro22 */ + { 0x100812a6, 28982 }, /* XF86Macro23 */ + { 0x100812a7, 28994 }, /* XF86Macro24 */ + { 0x100812a8, 29006 }, /* XF86Macro25 */ + { 0x100812a9, 29018 }, /* XF86Macro26 */ + { 0x100812aa, 29030 }, /* XF86Macro27 */ + { 0x100812ab, 29042 }, /* XF86Macro28 */ + { 0x100812ac, 29054 }, /* XF86Macro29 */ + { 0x10081292, 29066 }, /* XF86Macro3 */ + { 0x100812ad, 29077 }, /* XF86Macro30 */ + { 0x10081293, 29089 }, /* XF86Macro4 */ + { 0x10081294, 29100 }, /* XF86Macro5 */ + { 0x10081295, 29111 }, /* XF86Macro6 */ + { 0x10081296, 29122 }, /* XF86Macro7 */ + { 0x10081297, 29133 }, /* XF86Macro8 */ + { 0x10081298, 29144 }, /* XF86Macro9 */ + { 0x100812b3, 29155 }, /* XF86MacroPreset1 */ + { 0x100812b4, 29172 }, /* XF86MacroPreset2 */ + { 0x100812b5, 29189 }, /* XF86MacroPreset3 */ + { 0x100812b2, 29206 }, /* XF86MacroPresetCycle */ + { 0x100812b0, 29227 }, /* XF86MacroRecordStart */ + { 0x100812b1, 29248 }, /* XF86MacroRecordStop */ + { 0x1008ff19, 29268 }, /* XF86Mail */ + { 0x1008ff90, 29277 }, /* XF86MailForward */ + { 0x1008ff62, 29293 }, /* XF86Market */ + { 0x100811b7, 29304 }, /* XF86MediaRepeat */ + { 0x1008126b, 29320 }, /* XF86MediaTopMenu */ + { 0x1008ff63, 29337 }, /* XF86Meeting */ + { 0x1008ff1e, 29349 }, /* XF86Memo */ + { 0x1008ff65, 29358 }, /* XF86MenuKB */ + { 0x1008ff66, 29369 }, /* XF86MenuPB */ + { 0x1008ff8e, 29380 }, /* XF86Messenger */ + { 0x1008ff01, 29394 }, /* XF86ModeLock */ + { 0x1008ff07, 29407 }, /* XF86MonBrightnessCycle */ + { 0x1008ff03, 29430 }, /* XF86MonBrightnessDown */ + { 0x1008ff02, 29452 }, /* XF86MonBrightnessUp */ + { 0x1008ff92, 29472 }, /* XF86Music */ + { 0x1008ff33, 29482 }, /* XF86MyComputer */ + { 0x1008ff67, 29497 }, /* XF86MySites */ + { 0x1008ff68, 29509 }, /* XF86New */ + { 0x1008ff69, 29517 }, /* XF86News */ + { 0x1008fe22, 29526 }, /* XF86Next_VMode */ + { 0x10081270, 29541 }, /* XF86NextFavorite */ + { 0x100811bc, 29558 }, /* XF86NotificationCenter */ + { 0x10081200, 29581 }, /* XF86Numeric0 */ + { 0x10081201, 29594 }, /* XF86Numeric1 */ + { 0x1008126c, 29607 }, /* XF86Numeric11 */ + { 0x1008126d, 29621 }, /* XF86Numeric12 */ + { 0x10081202, 29635 }, /* XF86Numeric2 */ + { 0x10081203, 29648 }, /* XF86Numeric3 */ + { 0x10081204, 29661 }, /* XF86Numeric4 */ + { 0x10081205, 29674 }, /* XF86Numeric5 */ + { 0x10081206, 29687 }, /* XF86Numeric6 */ + { 0x10081207, 29700 }, /* XF86Numeric7 */ + { 0x10081208, 29713 }, /* XF86Numeric8 */ + { 0x10081209, 29726 }, /* XF86Numeric9 */ + { 0x1008120c, 29739 }, /* XF86NumericA */ + { 0x1008120d, 29752 }, /* XF86NumericB */ + { 0x1008120e, 29765 }, /* XF86NumericC */ + { 0x1008120f, 29778 }, /* XF86NumericD */ + { 0x1008120b, 29791 }, /* XF86NumericPound */ + { 0x1008120a, 29808 }, /* XF86NumericStar */ + { 0x1008ff6a, 29824 }, /* XF86OfficeHome */ + { 0x10081278, 29839 }, /* XF86OnScreenKeyboard */ + { 0x1008ff6b, 29860 }, /* XF86Open */ + { 0x1008ff38, 29869 }, /* XF86OpenURL */ + { 0x1008ff6c, 29881 }, /* XF86Option */ + { 0x1008ff6d, 29892 }, /* XF86Paste */ + { 0x10081272, 29902 }, /* XF86PauseRecord */ + { 0x1008ff6e, 29918 }, /* XF86Phone */ + { 0x100811bd, 29928 }, /* XF86PickupPhone */ + { 0x1008ff91, 29944 }, /* XF86Pictures */ + { 0x1008ff21, 29957 }, /* XF86PowerDown */ + { 0x1008ff2a, 29971 }, /* XF86PowerOff */ + { 0x100811a9, 29984 }, /* XF86Presentation */ + { 0x1008fe23, 30001 }, /* XF86Prev_VMode */ + { 0x10081279, 30016 }, /* XF86PrivacyScreenToggle */ + { 0x1008ff70, 30040 }, /* XF86Q */ + { 0x1008ffa3, 30046 }, /* XF86Red */ + { 0x1008ff29, 30054 }, /* XF86Refresh */ + { 0x1008ff73, 30066 }, /* XF86Reload */ + { 0x1008ff72, 30077 }, /* XF86Reply */ + { 0x1008ffb5, 30087 }, /* XF86RFKill */ + { 0x10081267, 30098 }, /* XF86RightDown */ + { 0x10081266, 30112 }, /* XF86RightUp */ + { 0x1008ff24, 30124 }, /* XF86RockerDown */ + { 0x1008ff25, 30139 }, /* XF86RockerEnter */ + { 0x1008ff23, 30155 }, /* XF86RockerUp */ + { 0x1008126a, 30168 }, /* XF86RootMenu */ + { 0x1008ff74, 30181 }, /* XF86RotateWindows */ + { 0x1008ff76, 30199 }, /* XF86RotationKB */ + { 0x1008ffb7, 30214 }, /* XF86RotationLockToggle */ + { 0x1008ff75, 30237 }, /* XF86RotationPB */ + { 0x1008ff77, 30252 }, /* XF86Save */ + { 0x1008ff2d, 30261 }, /* XF86ScreenSaver */ + { 0x10081245, 30277 }, /* XF86Screensaver */ + { 0x1008ff7a, 30293 }, /* XF86ScrollClick */ + { 0x1008ff79, 30309 }, /* XF86ScrollDown */ + { 0x1008ff78, 30324 }, /* XF86ScrollUp */ + { 0x1008ff1b, 30337 }, /* XF86Search */ + { 0x1008ffa0, 30348 }, /* XF86Select */ + { 0x1008127a, 30359 }, /* XF86SelectiveScreenshot */ + { 0x1008ff7b, 30383 }, /* XF86Send */ + { 0x1008ff36, 30392 }, /* XF86Shop */ + { 0x1008ff2f, 30401 }, /* XF86Sleep */ + { 0x10081276, 30411 }, /* XF86SlowReverse */ + { 0x1008ff7c, 30427 }, /* XF86Spell */ + { 0x100811b0, 30437 }, /* XF86SpellCheck */ + { 0x1008ff7d, 30452 }, /* XF86SplitScreen */ + { 0x1008ff10, 30468 }, /* XF86Standby */ + { 0x1008ff1a, 30480 }, /* XF86Start */ + { 0x1008ff28, 30490 }, /* XF86Stop */ + { 0x10081271, 30499 }, /* XF86StopRecord */ + { 0x1008ff9a, 30514 }, /* XF86Subtitle */ + { 0x1008ff7e, 30527 }, /* XF86Support */ + { 0x1008ffa7, 30539 }, /* XF86Suspend */ + { 0x1008fe01, 30551 }, /* XF86Switch_VT_1 */ + { 0x1008fe0a, 30567 }, /* XF86Switch_VT_10 */ + { 0x1008fe0b, 30584 }, /* XF86Switch_VT_11 */ + { 0x1008fe0c, 30601 }, /* XF86Switch_VT_12 */ + { 0x1008fe02, 30618 }, /* XF86Switch_VT_2 */ + { 0x1008fe03, 30634 }, /* XF86Switch_VT_3 */ + { 0x1008fe04, 30650 }, /* XF86Switch_VT_4 */ + { 0x1008fe05, 30666 }, /* XF86Switch_VT_5 */ + { 0x1008fe06, 30682 }, /* XF86Switch_VT_6 */ + { 0x1008fe07, 30698 }, /* XF86Switch_VT_7 */ + { 0x1008fe08, 30714 }, /* XF86Switch_VT_8 */ + { 0x1008fe09, 30730 }, /* XF86Switch_VT_9 */ + { 0x10081241, 30746 }, /* XF86Taskmanager */ + { 0x1008ff7f, 30762 }, /* XF86TaskPane */ + { 0x1008ff80, 30775 }, /* XF86Terminal */ + { 0x1008ff9f, 30788 }, /* XF86Time */ + { 0x1008ff1f, 30797 }, /* XF86ToDoList */ + { 0x1008ff81, 30810 }, /* XF86Tools */ + { 0x1008ffa2, 30820 }, /* XF86TopMenu */ + { 0x1008ffb1, 30832 }, /* XF86TouchpadOff */ + { 0x1008ffb0, 30848 }, /* XF86TouchpadOn */ + { 0x1008ffa9, 30863 }, /* XF86TouchpadToggle */ + { 0x1008ff82, 30882 }, /* XF86Travel */ + { 0x1008fe20, 30893 }, /* XF86Ungrab */ + { 0x10081274, 30904 }, /* XF86Unmute */ + { 0x1008ff85, 30915 }, /* XF86User1KB */ + { 0x1008ff86, 30927 }, /* XF86User2KB */ + { 0x1008ff84, 30939 }, /* XF86UserPB */ + { 0x1008ff96, 30950 }, /* XF86UWB */ + { 0x1008ff34, 30958 }, /* XF86VendorHome */ + { 0x1008ff87, 30973 }, /* XF86Video */ + { 0x100811a0, 30983 }, /* XF86VideoPhone */ + { 0x1008ffa1, 30998 }, /* XF86View */ + { 0x10081273, 31007 }, /* XF86VOD */ + { 0x10081246, 31015 }, /* XF86VoiceCommand */ + { 0x100811ac, 31032 }, /* XF86Voicemail */ + { 0x1008ff2b, 31046 }, /* XF86WakeUp */ + { 0x1008ff8f, 31057 }, /* XF86WebCam */ + { 0x1008ff88, 31068 }, /* XF86WheelButton */ + { 0x1008ff95, 31084 }, /* XF86WLAN */ + { 0x1008ff89, 31093 }, /* XF86Word */ + { 0x10081211, 31102 }, /* XF86WPSButton */ + { 0x1008ffb4, 31116 }, /* XF86WWAN */ + { 0x1008ff2e, 31125 }, /* XF86WWW */ + { 0x1008ff8a, 31133 }, /* XF86Xfer */ + { 0x1008ffa5, 31142 }, /* XF86Yellow */ + { 0x1008ff8b, 31153 }, /* XF86ZoomIn */ + { 0x1008ff8c, 31164 }, /* XF86ZoomOut */ + { 0x100811a4, 31176 }, /* XF86ZoomReset */ + { 0x00000059, 31190 }, /* Y */ + { 0x00000079, 31192 }, /* y */ + { 0x000000dd, 31194 }, /* Yacute */ + { 0x000000fd, 31201 }, /* yacute */ + { 0x01001ef4, 31208 }, /* Ybelowdot */ + { 0x01001ef5, 31218 }, /* ybelowdot */ + { 0x01000176, 31228 }, /* Ycircumflex */ + { 0x01000177, 31240 }, /* ycircumflex */ + { 0x000000ff, 31252 }, /* ydiaeresis */ + { 0x000013be, 31263 }, /* Ydiaeresis */ + { 0x000000a5, 31274 }, /* yen */ + { 0x01001ef2, 31278 }, /* Ygrave */ + { 0x01001ef3, 31285 }, /* ygrave */ + { 0x01001ef6, 31292 }, /* Yhook */ + { 0x01001ef7, 31298 }, /* yhook */ + { 0x01001ef8, 31304 }, /* Ytilde */ + { 0x01001ef9, 31311 }, /* ytilde */ + { 0x0000005a, 31318 }, /* Z */ + { 0x0000007a, 31320 }, /* z */ + { 0x000001af, 31322 }, /* Zabovedot */ + { 0x000001bf, 31332 }, /* zabovedot */ + { 0x000001ac, 31342 }, /* Zacute */ + { 0x000001bc, 31349 }, /* zacute */ + { 0x000001ae, 31356 }, /* Zcaron */ + { 0x000001be, 31363 }, /* zcaron */ + { 0x0000ff3d, 31370 }, /* Zen_Koho */ + { 0x0000ff28, 31379 }, /* Zenkaku */ + { 0x0000ff2a, 31387 }, /* Zenkaku_Hankaku */ + { 0x01002080, 31403 }, /* zerosubscript */ + { 0x01002070, 31417 }, /* zerosuperior */ + { 0x010001b5, 31430 }, /* Zstroke */ + { 0x010001b6, 31438 }, /* zstroke */ }; static const struct name_keysym keysym_to_name[] = { - { 0x00000000, 20091 }, /* NoSymbol */ - { 0x00000020, 23803 }, /* space */ - { 0x00000021, 12099 }, /* exclam */ - { 0x00000022, 22187 }, /* quotedbl */ - { 0x00000023, 20178 }, /* numbersign */ - { 0x00000024, 11251 }, /* dollar */ - { 0x00000025, 21487 }, /* percent */ + { 0x00000000, 20173 }, /* NoSymbol */ + { 0x00000020, 23885 }, /* space */ + { 0x00000021, 12181 }, /* exclam */ + { 0x00000022, 22269 }, /* quotedbl */ + { 0x00000023, 20260 }, /* numbersign */ + { 0x00000024, 11333 }, /* dollar */ + { 0x00000025, 21569 }, /* percent */ { 0x00000026, 908 }, /* ampersand */ { 0x00000027, 934 }, /* apostrophe */ - { 0x00000028, 21425 }, /* parenleft */ - { 0x00000029, 21435 }, /* parenright */ + { 0x00000028, 21507 }, /* parenleft */ + { 0x00000029, 21517 }, /* parenright */ { 0x0000002a, 3283 }, /* asterisk */ - { 0x0000002b, 21557 }, /* plus */ - { 0x0000002c, 8680 }, /* comma */ - { 0x0000002d, 19733 }, /* minus */ - { 0x0000002e, 21495 }, /* period */ - { 0x0000002f, 23768 }, /* slash */ + { 0x0000002b, 21639 }, /* plus */ + { 0x0000002c, 8762 }, /* comma */ + { 0x0000002d, 19815 }, /* minus */ + { 0x0000002e, 21577 }, /* period */ + { 0x0000002f, 23850 }, /* slash */ { 0x00000030, 0 }, /* 0 */ { 0x00000031, 2 }, /* 1 */ { 0x00000032, 4 }, /* 2 */ @@ -4870,106 +5471,106 @@ static const struct name_keysym keysym_to_name[] = { { 0x00000038, 394 }, /* 8 */ { 0x00000039, 396 }, /* 9 */ { 0x0000003a, 8664 }, /* colon */ - { 0x0000003b, 22734 }, /* semicolon */ - { 0x0000003c, 19412 }, /* less */ - { 0x0000003d, 12051 }, /* equal */ - { 0x0000003e, 13272 }, /* greater */ - { 0x0000003f, 22165 }, /* question */ + { 0x0000003b, 22816 }, /* semicolon */ + { 0x0000003c, 19494 }, /* less */ + { 0x0000003d, 12133 }, /* equal */ + { 0x0000003e, 13354 }, /* greater */ + { 0x0000003f, 22247 }, /* question */ { 0x00000040, 3292 }, /* at */ { 0x00000041, 398 }, /* A */ { 0x00000042, 3328 }, /* B */ { 0x00000043, 8439 }, /* C */ - { 0x00000044, 10320 }, /* D */ - { 0x00000045, 11424 }, /* E */ - { 0x00000046, 12155 }, /* F */ - { 0x00000047, 12665 }, /* G */ - { 0x00000048, 14378 }, /* H */ - { 0x00000049, 17069 }, /* I */ - { 0x0000004a, 18114 }, /* J */ - { 0x0000004b, 18146 }, /* K */ - { 0x0000004c, 19112 }, /* L */ - { 0x0000004d, 19533 }, /* M */ - { 0x0000004e, 19943 }, /* N */ - { 0x0000004f, 20200 }, /* O */ - { 0x00000050, 21373 }, /* P */ - { 0x00000051, 22156 }, /* Q */ - { 0x00000052, 22217 }, /* R */ - { 0x00000053, 22579 }, /* S */ - { 0x00000054, 24294 }, /* T */ - { 0x00000055, 25847 }, /* U */ - { 0x00000056, 26483 }, /* V */ - { 0x00000057, 26545 }, /* W */ - { 0x00000058, 26631 }, /* X */ - { 0x00000059, 29082 }, /* Y */ - { 0x0000005a, 29210 }, /* Z */ + { 0x00000044, 10402 }, /* D */ + { 0x00000045, 11506 }, /* E */ + { 0x00000046, 12237 }, /* F */ + { 0x00000047, 12747 }, /* G */ + { 0x00000048, 14460 }, /* H */ + { 0x00000049, 17151 }, /* I */ + { 0x0000004a, 18196 }, /* J */ + { 0x0000004b, 18228 }, /* K */ + { 0x0000004c, 19194 }, /* L */ + { 0x0000004d, 19615 }, /* M */ + { 0x0000004e, 20025 }, /* N */ + { 0x0000004f, 20282 }, /* O */ + { 0x00000050, 21455 }, /* P */ + { 0x00000051, 22238 }, /* Q */ + { 0x00000052, 22299 }, /* R */ + { 0x00000053, 22661 }, /* S */ + { 0x00000054, 24376 }, /* T */ + { 0x00000055, 25929 }, /* U */ + { 0x00000056, 26565 }, /* V */ + { 0x00000057, 26627 }, /* W */ + { 0x00000058, 26713 }, /* X */ + { 0x00000059, 31190 }, /* Y */ + { 0x0000005a, 31318 }, /* Z */ { 0x0000005b, 3603 }, /* bracketleft */ { 0x0000005c, 3352 }, /* backslash */ { 0x0000005d, 3615 }, /* bracketright */ { 0x0000005e, 3260 }, /* asciicircum */ - { 0x0000005f, 26346 }, /* underscore */ - { 0x00000060, 13266 }, /* grave */ + { 0x0000005f, 26428 }, /* underscore */ + { 0x00000060, 13348 }, /* grave */ { 0x00000061, 400 }, /* a */ { 0x00000062, 3330 }, /* b */ { 0x00000063, 8441 }, /* c */ - { 0x00000064, 10322 }, /* d */ - { 0x00000065, 11426 }, /* e */ - { 0x00000066, 12157 }, /* f */ - { 0x00000067, 12667 }, /* g */ - { 0x00000068, 14380 }, /* h */ - { 0x00000069, 17071 }, /* i */ - { 0x0000006a, 18116 }, /* j */ - { 0x0000006b, 18148 }, /* k */ - { 0x0000006c, 19114 }, /* l */ - { 0x0000006d, 19535 }, /* m */ - { 0x0000006e, 19945 }, /* n */ - { 0x0000006f, 20202 }, /* o */ - { 0x00000070, 21375 }, /* p */ - { 0x00000071, 22158 }, /* q */ - { 0x00000072, 22219 }, /* r */ - { 0x00000073, 22581 }, /* s */ - { 0x00000074, 24296 }, /* t */ - { 0x00000075, 25849 }, /* u */ - { 0x00000076, 26485 }, /* v */ - { 0x00000077, 26547 }, /* w */ - { 0x00000078, 26633 }, /* x */ - { 0x00000079, 29084 }, /* y */ - { 0x0000007a, 29212 }, /* z */ + { 0x00000064, 10404 }, /* d */ + { 0x00000065, 11508 }, /* e */ + { 0x00000066, 12239 }, /* f */ + { 0x00000067, 12749 }, /* g */ + { 0x00000068, 14462 }, /* h */ + { 0x00000069, 17153 }, /* i */ + { 0x0000006a, 18198 }, /* j */ + { 0x0000006b, 18230 }, /* k */ + { 0x0000006c, 19196 }, /* l */ + { 0x0000006d, 19617 }, /* m */ + { 0x0000006e, 20027 }, /* n */ + { 0x0000006f, 20284 }, /* o */ + { 0x00000070, 21457 }, /* p */ + { 0x00000071, 22240 }, /* q */ + { 0x00000072, 22301 }, /* r */ + { 0x00000073, 22663 }, /* s */ + { 0x00000074, 24378 }, /* t */ + { 0x00000075, 25931 }, /* u */ + { 0x00000076, 26567 }, /* v */ + { 0x00000077, 26629 }, /* w */ + { 0x00000078, 26715 }, /* x */ + { 0x00000079, 31192 }, /* y */ + { 0x0000007a, 31320 }, /* z */ { 0x0000007b, 3582 }, /* braceleft */ { 0x0000007c, 3392 }, /* bar */ { 0x0000007d, 3592 }, /* braceright */ { 0x0000007e, 3272 }, /* asciitilde */ - { 0x000000a0, 20078 }, /* nobreakspace */ - { 0x000000a1, 12106 }, /* exclamdown */ + { 0x000000a0, 20160 }, /* nobreakspace */ + { 0x000000a1, 12188 }, /* exclamdown */ { 0x000000a2, 8589 }, /* cent */ - { 0x000000a3, 23827 }, /* sterling */ - { 0x000000a4, 8766 }, /* currency */ - { 0x000000a5, 29166 }, /* yen */ + { 0x000000a3, 23909 }, /* sterling */ + { 0x000000a4, 8848 }, /* currency */ + { 0x000000a5, 31274 }, /* yen */ { 0x000000a6, 8389 }, /* brokenbar */ - { 0x000000a7, 22719 }, /* section */ - { 0x000000a8, 11203 }, /* diaeresis */ - { 0x000000a9, 8717 }, /* copyright */ - { 0x000000aa, 20852 }, /* ordfeminine */ - { 0x000000ab, 14349 }, /* guillemotleft */ - { 0x000000ac, 20147 }, /* notsign */ - { 0x000000ad, 17062 }, /* hyphen */ - { 0x000000ae, 22331 }, /* registered */ - { 0x000000af, 19641 }, /* macron */ - { 0x000000b0, 11153 }, /* degree */ - { 0x000000b1, 21562 }, /* plusminus */ - { 0x000000b2, 25825 }, /* twosuperior */ - { 0x000000b3, 25571 }, /* threesuperior */ + { 0x000000a7, 22801 }, /* section */ + { 0x000000a8, 11285 }, /* diaeresis */ + { 0x000000a9, 8799 }, /* copyright */ + { 0x000000aa, 20934 }, /* ordfeminine */ + { 0x000000ab, 14431 }, /* guillemotleft */ + { 0x000000ac, 20229 }, /* notsign */ + { 0x000000ad, 17144 }, /* hyphen */ + { 0x000000ae, 22413 }, /* registered */ + { 0x000000af, 19723 }, /* macron */ + { 0x000000b0, 11235 }, /* degree */ + { 0x000000b1, 21644 }, /* plusminus */ + { 0x000000b2, 25907 }, /* twosuperior */ + { 0x000000b3, 25653 }, /* threesuperior */ { 0x000000b4, 820 }, /* acute */ - { 0x000000b5, 19799 }, /* mu */ - { 0x000000b6, 21415 }, /* paragraph */ - { 0x000000b7, 21502 }, /* periodcentered */ + { 0x000000b5, 19881 }, /* mu */ + { 0x000000b6, 21497 }, /* paragraph */ + { 0x000000b7, 21584 }, /* periodcentered */ { 0x000000b8, 8581 }, /* cedilla */ - { 0x000000b9, 20755 }, /* onesuperior */ - { 0x000000ba, 19688 }, /* masculine */ - { 0x000000bb, 14363 }, /* guillemotright */ - { 0x000000bc, 20722 }, /* onequarter */ - { 0x000000bd, 20714 }, /* onehalf */ - { 0x000000be, 25542 }, /* threequarters */ - { 0x000000bf, 22174 }, /* questiondown */ + { 0x000000b9, 20837 }, /* onesuperior */ + { 0x000000ba, 19770 }, /* masculine */ + { 0x000000bb, 14445 }, /* guillemotright */ + { 0x000000bc, 20804 }, /* onequarter */ + { 0x000000bd, 20796 }, /* onehalf */ + { 0x000000be, 25624 }, /* threequarters */ + { 0x000000bf, 22256 }, /* questiondown */ { 0x000000c0, 854 }, /* Agrave */ { 0x000000c1, 402 }, /* Aacute */ { 0x000000c2, 622 }, /* Acircumflex */ @@ -4978,30 +5579,30 @@ static const struct name_keysym keysym_to_name[] = { { 0x000000c5, 2036 }, /* Aring */ { 0x000000c6, 848 }, /* AE */ { 0x000000c7, 8539 }, /* Ccedilla */ - { 0x000000c8, 11724 }, /* Egrave */ - { 0x000000c9, 11448 }, /* Eacute */ - { 0x000000ca, 11496 }, /* Ecircumflex */ - { 0x000000cb, 11702 }, /* Ediaeresis */ - { 0x000000cc, 17205 }, /* Igrave */ - { 0x000000cd, 17083 }, /* Iacute */ - { 0x000000ce, 17131 }, /* Icircumflex */ - { 0x000000cf, 17165 }, /* Idiaeresis */ - { 0x000000d0, 12064 }, /* ETH */ - { 0x000000d1, 20155 }, /* Ntilde */ - { 0x000000d2, 20527 }, /* Ograve */ - { 0x000000d3, 20204 }, /* Oacute */ - { 0x000000d4, 20268 }, /* Ocircumflex */ - { 0x000000d5, 21310 }, /* Otilde */ - { 0x000000d6, 20466 }, /* Odiaeresis */ - { 0x000000d7, 19839 }, /* multiply */ - { 0x000000d8, 21296 }, /* Oslash */ - { 0x000000d9, 25971 }, /* Ugrave */ - { 0x000000da, 25851 }, /* Uacute */ - { 0x000000db, 25899 }, /* Ucircumflex */ - { 0x000000dc, 25923 }, /* Udiaeresis */ - { 0x000000dd, 29086 }, /* Yacute */ - { 0x000000de, 25499 }, /* THORN */ - { 0x000000df, 23820 }, /* ssharp */ + { 0x000000c8, 11806 }, /* Egrave */ + { 0x000000c9, 11530 }, /* Eacute */ + { 0x000000ca, 11578 }, /* Ecircumflex */ + { 0x000000cb, 11784 }, /* Ediaeresis */ + { 0x000000cc, 17287 }, /* Igrave */ + { 0x000000cd, 17165 }, /* Iacute */ + { 0x000000ce, 17213 }, /* Icircumflex */ + { 0x000000cf, 17247 }, /* Idiaeresis */ + { 0x000000d0, 12146 }, /* ETH */ + { 0x000000d1, 20237 }, /* Ntilde */ + { 0x000000d2, 20609 }, /* Ograve */ + { 0x000000d3, 20286 }, /* Oacute */ + { 0x000000d4, 20350 }, /* Ocircumflex */ + { 0x000000d5, 21392 }, /* Otilde */ + { 0x000000d6, 20548 }, /* Odiaeresis */ + { 0x000000d7, 19921 }, /* multiply */ + { 0x000000d8, 21378 }, /* Oslash */ + { 0x000000d9, 26053 }, /* Ugrave */ + { 0x000000da, 25933 }, /* Uacute */ + { 0x000000db, 25981 }, /* Ucircumflex */ + { 0x000000dc, 26005 }, /* Udiaeresis */ + { 0x000000dd, 31194 }, /* Yacute */ + { 0x000000de, 25581 }, /* THORN */ + { 0x000000df, 23902 }, /* ssharp */ { 0x000000e0, 861 }, /* agrave */ { 0x000000e1, 409 }, /* aacute */ { 0x000000e2, 634 }, /* acircumflex */ @@ -5010,208 +5611,208 @@ static const struct name_keysym keysym_to_name[] = { { 0x000000e5, 2042 }, /* aring */ { 0x000000e6, 851 }, /* ae */ { 0x000000e7, 8548 }, /* ccedilla */ - { 0x000000e8, 11731 }, /* egrave */ - { 0x000000e9, 11455 }, /* eacute */ - { 0x000000ea, 11508 }, /* ecircumflex */ - { 0x000000eb, 11713 }, /* ediaeresis */ - { 0x000000ec, 17212 }, /* igrave */ - { 0x000000ed, 17090 }, /* iacute */ - { 0x000000ee, 17143 }, /* icircumflex */ - { 0x000000ef, 17176 }, /* idiaeresis */ - { 0x000000f0, 12072 }, /* eth */ - { 0x000000f1, 20162 }, /* ntilde */ - { 0x000000f2, 20534 }, /* ograve */ - { 0x000000f3, 20211 }, /* oacute */ - { 0x000000f4, 20280 }, /* ocircumflex */ - { 0x000000f5, 21317 }, /* otilde */ - { 0x000000f6, 20477 }, /* odiaeresis */ - { 0x000000f7, 11242 }, /* division */ - { 0x000000f8, 21303 }, /* oslash */ - { 0x000000f9, 25978 }, /* ugrave */ - { 0x000000fa, 25858 }, /* uacute */ - { 0x000000fb, 25911 }, /* ucircumflex */ - { 0x000000fc, 25934 }, /* udiaeresis */ - { 0x000000fd, 29093 }, /* yacute */ - { 0x000000fe, 25511 }, /* thorn */ - { 0x000000ff, 29144 }, /* ydiaeresis */ + { 0x000000e8, 11813 }, /* egrave */ + { 0x000000e9, 11537 }, /* eacute */ + { 0x000000ea, 11590 }, /* ecircumflex */ + { 0x000000eb, 11795 }, /* ediaeresis */ + { 0x000000ec, 17294 }, /* igrave */ + { 0x000000ed, 17172 }, /* iacute */ + { 0x000000ee, 17225 }, /* icircumflex */ + { 0x000000ef, 17258 }, /* idiaeresis */ + { 0x000000f0, 12154 }, /* eth */ + { 0x000000f1, 20244 }, /* ntilde */ + { 0x000000f2, 20616 }, /* ograve */ + { 0x000000f3, 20293 }, /* oacute */ + { 0x000000f4, 20362 }, /* ocircumflex */ + { 0x000000f5, 21399 }, /* otilde */ + { 0x000000f6, 20559 }, /* odiaeresis */ + { 0x000000f7, 11324 }, /* division */ + { 0x000000f8, 21385 }, /* oslash */ + { 0x000000f9, 26060 }, /* ugrave */ + { 0x000000fa, 25940 }, /* uacute */ + { 0x000000fb, 25993 }, /* ucircumflex */ + { 0x000000fc, 26016 }, /* udiaeresis */ + { 0x000000fd, 31201 }, /* yacute */ + { 0x000000fe, 25593 }, /* thorn */ + { 0x000000ff, 31252 }, /* ydiaeresis */ { 0x000001a1, 918 }, /* Aogonek */ { 0x000001a2, 8383 }, /* breve */ - { 0x000001a3, 19517 }, /* Lstroke */ - { 0x000001a5, 19212 }, /* Lcaron */ - { 0x000001a6, 22603 }, /* Sacute */ - { 0x000001a9, 22617 }, /* Scaron */ - { 0x000001aa, 22631 }, /* Scedilla */ - { 0x000001ab, 24322 }, /* Tcaron */ - { 0x000001ac, 29234 }, /* Zacute */ - { 0x000001ae, 29248 }, /* Zcaron */ - { 0x000001af, 29214 }, /* Zabovedot */ + { 0x000001a3, 19599 }, /* Lstroke */ + { 0x000001a5, 19294 }, /* Lcaron */ + { 0x000001a6, 22685 }, /* Sacute */ + { 0x000001a9, 22699 }, /* Scaron */ + { 0x000001aa, 22713 }, /* Scedilla */ + { 0x000001ab, 24404 }, /* Tcaron */ + { 0x000001ac, 31342 }, /* Zacute */ + { 0x000001ae, 31356 }, /* Zcaron */ + { 0x000001af, 31322 }, /* Zabovedot */ { 0x000001b1, 926 }, /* aogonek */ - { 0x000001b2, 20520 }, /* ogonek */ - { 0x000001b3, 19525 }, /* lstroke */ - { 0x000001b5, 19219 }, /* lcaron */ - { 0x000001b6, 22610 }, /* sacute */ + { 0x000001b2, 20602 }, /* ogonek */ + { 0x000001b3, 19607 }, /* lstroke */ + { 0x000001b5, 19301 }, /* lcaron */ + { 0x000001b6, 22692 }, /* sacute */ { 0x000001b7, 8519 }, /* caron */ - { 0x000001b9, 22624 }, /* scaron */ - { 0x000001ba, 22640 }, /* scedilla */ - { 0x000001bb, 24329 }, /* tcaron */ - { 0x000001bc, 29241 }, /* zacute */ - { 0x000001bd, 11283 }, /* doubleacute */ - { 0x000001be, 29255 }, /* zcaron */ - { 0x000001bf, 29224 }, /* zabovedot */ - { 0x000001c0, 22272 }, /* Racute */ + { 0x000001b9, 22706 }, /* scaron */ + { 0x000001ba, 22722 }, /* scedilla */ + { 0x000001bb, 24411 }, /* tcaron */ + { 0x000001bc, 31349 }, /* zacute */ + { 0x000001bd, 11365 }, /* doubleacute */ + { 0x000001be, 31363 }, /* zcaron */ + { 0x000001bf, 31332 }, /* zabovedot */ + { 0x000001c0, 22354 }, /* Racute */ { 0x000001c3, 445 }, /* Abreve */ - { 0x000001c5, 19147 }, /* Lacute */ + { 0x000001c5, 19229 }, /* Lacute */ { 0x000001c6, 8475 }, /* Cacute */ { 0x000001c8, 8525 }, /* Ccaron */ - { 0x000001ca, 12035 }, /* Eogonek */ - { 0x000001cc, 11482 }, /* Ecaron */ - { 0x000001cf, 10365 }, /* Dcaron */ - { 0x000001d0, 11401 }, /* Dstroke */ - { 0x000001d1, 19953 }, /* Nacute */ - { 0x000001d2, 19977 }, /* Ncaron */ - { 0x000001d5, 20488 }, /* Odoubleacute */ - { 0x000001d8, 22294 }, /* Rcaron */ - { 0x000001d9, 26452 }, /* Uring */ - { 0x000001db, 25945 }, /* Udoubleacute */ - { 0x000001de, 24336 }, /* Tcedilla */ - { 0x000001e0, 22279 }, /* racute */ + { 0x000001ca, 12117 }, /* Eogonek */ + { 0x000001cc, 11564 }, /* Ecaron */ + { 0x000001cf, 10447 }, /* Dcaron */ + { 0x000001d0, 11483 }, /* Dstroke */ + { 0x000001d1, 20035 }, /* Nacute */ + { 0x000001d2, 20059 }, /* Ncaron */ + { 0x000001d5, 20570 }, /* Odoubleacute */ + { 0x000001d8, 22376 }, /* Rcaron */ + { 0x000001d9, 26534 }, /* Uring */ + { 0x000001db, 26027 }, /* Udoubleacute */ + { 0x000001de, 24418 }, /* Tcedilla */ + { 0x000001e0, 22361 }, /* racute */ { 0x000001e3, 452 }, /* abreve */ - { 0x000001e5, 19154 }, /* lacute */ + { 0x000001e5, 19236 }, /* lacute */ { 0x000001e6, 8482 }, /* cacute */ { 0x000001e8, 8532 }, /* ccaron */ - { 0x000001ea, 12043 }, /* eogonek */ - { 0x000001ec, 11489 }, /* ecaron */ - { 0x000001ef, 10372 }, /* dcaron */ - { 0x000001f0, 11409 }, /* dstroke */ - { 0x000001f1, 19960 }, /* nacute */ - { 0x000001f2, 19984 }, /* ncaron */ - { 0x000001f5, 20501 }, /* odoubleacute */ - { 0x000001f8, 22301 }, /* rcaron */ - { 0x000001f9, 26458 }, /* uring */ - { 0x000001fb, 25958 }, /* udoubleacute */ - { 0x000001fe, 24345 }, /* tcedilla */ + { 0x000001ea, 12125 }, /* eogonek */ + { 0x000001ec, 11571 }, /* ecaron */ + { 0x000001ef, 10454 }, /* dcaron */ + { 0x000001f0, 11491 }, /* dstroke */ + { 0x000001f1, 20042 }, /* nacute */ + { 0x000001f2, 20066 }, /* ncaron */ + { 0x000001f5, 20583 }, /* odoubleacute */ + { 0x000001f8, 22383 }, /* rcaron */ + { 0x000001f9, 26540 }, /* uring */ + { 0x000001fb, 26040 }, /* udoubleacute */ + { 0x000001fe, 24427 }, /* tcedilla */ { 0x000001ff, 436 }, /* abovedot */ - { 0x000002a1, 17027 }, /* Hstroke */ - { 0x000002a6, 16056 }, /* Hcircumflex */ - { 0x000002a9, 17073 }, /* Iabovedot */ - { 0x000002ab, 12689 }, /* Gbreve */ - { 0x000002ac, 18118 }, /* Jcircumflex */ - { 0x000002b1, 17035 }, /* hstroke */ - { 0x000002b6, 16068 }, /* hcircumflex */ - { 0x000002b9, 17187 }, /* idotless */ - { 0x000002bb, 12696 }, /* gbreve */ - { 0x000002bc, 18130 }, /* jcircumflex */ + { 0x000002a1, 17109 }, /* Hstroke */ + { 0x000002a6, 16138 }, /* Hcircumflex */ + { 0x000002a9, 17155 }, /* Iabovedot */ + { 0x000002ab, 12771 }, /* Gbreve */ + { 0x000002ac, 18200 }, /* Jcircumflex */ + { 0x000002b1, 17117 }, /* hstroke */ + { 0x000002b6, 16150 }, /* hcircumflex */ + { 0x000002b9, 17269 }, /* idotless */ + { 0x000002bb, 12778 }, /* gbreve */ + { 0x000002bc, 18212 }, /* jcircumflex */ { 0x000002c5, 8455 }, /* Cabovedot */ { 0x000002c6, 8557 }, /* Ccircumflex */ - { 0x000002d5, 12669 }, /* Gabovedot */ - { 0x000002d8, 12735 }, /* Gcircumflex */ - { 0x000002dd, 25885 }, /* Ubreve */ - { 0x000002de, 22661 }, /* Scircumflex */ + { 0x000002d5, 12751 }, /* Gabovedot */ + { 0x000002d8, 12817 }, /* Gcircumflex */ + { 0x000002dd, 25967 }, /* Ubreve */ + { 0x000002de, 22743 }, /* Scircumflex */ { 0x000002e5, 8465 }, /* cabovedot */ { 0x000002e6, 8569 }, /* ccircumflex */ - { 0x000002f5, 12679 }, /* gabovedot */ - { 0x000002f8, 12747 }, /* gcircumflex */ - { 0x000002fd, 25892 }, /* ubreve */ - { 0x000002fe, 22673 }, /* scircumflex */ - { 0x000003a2, 19108 }, /* kra */ - { 0x000003a3, 22308 }, /* Rcedilla */ - { 0x000003a5, 18100 }, /* Itilde */ - { 0x000003a6, 19226 }, /* Lcedilla */ - { 0x000003aa, 11839 }, /* Emacron */ - { 0x000003ab, 12717 }, /* Gcedilla */ - { 0x000003ac, 25788 }, /* Tslash */ - { 0x000003b3, 22317 }, /* rcedilla */ - { 0x000003b5, 18107 }, /* itilde */ - { 0x000003b6, 19235 }, /* lcedilla */ - { 0x000003ba, 11847 }, /* emacron */ - { 0x000003bb, 12726 }, /* gcedilla */ - { 0x000003bc, 25795 }, /* tslash */ - { 0x000003bd, 11983 }, /* ENG */ - { 0x000003bf, 11987 }, /* eng */ + { 0x000002f5, 12761 }, /* gabovedot */ + { 0x000002f8, 12829 }, /* gcircumflex */ + { 0x000002fd, 25974 }, /* ubreve */ + { 0x000002fe, 22755 }, /* scircumflex */ + { 0x000003a2, 19190 }, /* kra */ + { 0x000003a3, 22390 }, /* Rcedilla */ + { 0x000003a5, 18182 }, /* Itilde */ + { 0x000003a6, 19308 }, /* Lcedilla */ + { 0x000003aa, 11921 }, /* Emacron */ + { 0x000003ab, 12799 }, /* Gcedilla */ + { 0x000003ac, 25870 }, /* Tslash */ + { 0x000003b3, 22399 }, /* rcedilla */ + { 0x000003b5, 18189 }, /* itilde */ + { 0x000003b6, 19317 }, /* lcedilla */ + { 0x000003ba, 11929 }, /* emacron */ + { 0x000003bb, 12808 }, /* gcedilla */ + { 0x000003bc, 25877 }, /* tslash */ + { 0x000003bd, 12065 }, /* ENG */ + { 0x000003bf, 12069 }, /* eng */ { 0x000003c0, 892 }, /* Amacron */ - { 0x000003c7, 17338 }, /* Iogonek */ - { 0x000003cc, 11428 }, /* Eabovedot */ - { 0x000003cf, 17231 }, /* Imacron */ - { 0x000003d1, 19991 }, /* Ncedilla */ - { 0x000003d2, 20679 }, /* Omacron */ - { 0x000003d3, 18779 }, /* Kcedilla */ - { 0x000003d9, 26368 }, /* Uogonek */ - { 0x000003dd, 26469 }, /* Utilde */ - { 0x000003de, 26321 }, /* Umacron */ + { 0x000003c7, 17420 }, /* Iogonek */ + { 0x000003cc, 11510 }, /* Eabovedot */ + { 0x000003cf, 17313 }, /* Imacron */ + { 0x000003d1, 20073 }, /* Ncedilla */ + { 0x000003d2, 20761 }, /* Omacron */ + { 0x000003d3, 18861 }, /* Kcedilla */ + { 0x000003d9, 26450 }, /* Uogonek */ + { 0x000003dd, 26551 }, /* Utilde */ + { 0x000003de, 26403 }, /* Umacron */ { 0x000003e0, 900 }, /* amacron */ - { 0x000003e7, 17346 }, /* iogonek */ - { 0x000003ec, 11438 }, /* eabovedot */ - { 0x000003ef, 17239 }, /* imacron */ - { 0x000003f1, 20000 }, /* ncedilla */ - { 0x000003f2, 20687 }, /* omacron */ - { 0x000003f3, 18788 }, /* kcedilla */ - { 0x000003f9, 26376 }, /* uogonek */ - { 0x000003fd, 26476 }, /* utilde */ - { 0x000003fe, 26329 }, /* umacron */ - { 0x0000047e, 21364 }, /* overline */ - { 0x000004a1, 18243 }, /* kana_fullstop */ - { 0x000004a2, 18477 }, /* kana_openingbracket */ - { 0x000004a3, 18173 }, /* kana_closingbracket */ - { 0x000004a4, 18193 }, /* kana_comma */ - { 0x000004a5, 18204 }, /* kana_conjunctive */ - { 0x000004a6, 18689 }, /* kana_WO */ - { 0x000004a7, 18150 }, /* kana_a */ - { 0x000004a8, 18297 }, /* kana_i */ - { 0x000004a9, 18667 }, /* kana_u */ - { 0x000004aa, 18221 }, /* kana_e */ - { 0x000004ab, 18463 }, /* kana_o */ - { 0x000004ac, 18697 }, /* kana_ya */ - { 0x000004ad, 18729 }, /* kana_yu */ - { 0x000004ae, 18713 }, /* kana_yo */ - { 0x000004af, 18633 }, /* kana_tsu */ - { 0x000004b0, 22130 }, /* prolongedsound */ - { 0x000004b1, 18157 }, /* kana_A */ - { 0x000004b2, 18304 }, /* kana_I */ - { 0x000004b3, 18674 }, /* kana_U */ - { 0x000004b4, 18228 }, /* kana_E */ - { 0x000004b5, 18470 }, /* kana_O */ - { 0x000004b6, 18311 }, /* kana_KA */ - { 0x000004b7, 18327 }, /* kana_KI */ - { 0x000004b8, 18343 }, /* kana_KU */ - { 0x000004b9, 18319 }, /* kana_KE */ - { 0x000004ba, 18335 }, /* kana_KO */ - { 0x000004bb, 18537 }, /* kana_SA */ - { 0x000004bc, 18553 }, /* kana_SHI */ - { 0x000004bd, 18581 }, /* kana_SU */ - { 0x000004be, 18545 }, /* kana_SE */ - { 0x000004bf, 18573 }, /* kana_SO */ - { 0x000004c0, 18601 }, /* kana_TA */ - { 0x000004c1, 18164 }, /* kana_CHI */ - { 0x000004c2, 18642 }, /* kana_TSU */ - { 0x000004c3, 18609 }, /* kana_TE */ - { 0x000004c4, 18625 }, /* kana_TO */ - { 0x000004c5, 18423 }, /* kana_NA */ - { 0x000004c6, 18439 }, /* kana_NI */ - { 0x000004c7, 18455 }, /* kana_NU */ - { 0x000004c8, 18431 }, /* kana_NE */ - { 0x000004c9, 18447 }, /* kana_NO */ - { 0x000004ca, 18257 }, /* kana_HA */ - { 0x000004cb, 18273 }, /* kana_HI */ - { 0x000004cc, 18235 }, /* kana_FU */ - { 0x000004cd, 18265 }, /* kana_HE */ - { 0x000004ce, 18281 }, /* kana_HO */ - { 0x000004cf, 18361 }, /* kana_MA */ - { 0x000004d0, 18377 }, /* kana_MI */ - { 0x000004d1, 18408 }, /* kana_MU */ - { 0x000004d2, 18369 }, /* kana_ME */ - { 0x000004d3, 18400 }, /* kana_MO */ - { 0x000004d4, 18705 }, /* kana_YA */ - { 0x000004d5, 18737 }, /* kana_YU */ - { 0x000004d6, 18721 }, /* kana_YO */ - { 0x000004d7, 18497 }, /* kana_RA */ - { 0x000004d8, 18513 }, /* kana_RI */ - { 0x000004d9, 18529 }, /* kana_RU */ - { 0x000004da, 18505 }, /* kana_RE */ - { 0x000004db, 18521 }, /* kana_RO */ - { 0x000004dc, 18681 }, /* kana_WA */ - { 0x000004dd, 18416 }, /* kana_N */ - { 0x000004de, 26519 }, /* voicedsound */ - { 0x000004df, 22744 }, /* semivoicedsound */ + { 0x000003e7, 17428 }, /* iogonek */ + { 0x000003ec, 11520 }, /* eabovedot */ + { 0x000003ef, 17321 }, /* imacron */ + { 0x000003f1, 20082 }, /* ncedilla */ + { 0x000003f2, 20769 }, /* omacron */ + { 0x000003f3, 18870 }, /* kcedilla */ + { 0x000003f9, 26458 }, /* uogonek */ + { 0x000003fd, 26558 }, /* utilde */ + { 0x000003fe, 26411 }, /* umacron */ + { 0x0000047e, 21446 }, /* overline */ + { 0x000004a1, 18325 }, /* kana_fullstop */ + { 0x000004a2, 18559 }, /* kana_openingbracket */ + { 0x000004a3, 18255 }, /* kana_closingbracket */ + { 0x000004a4, 18275 }, /* kana_comma */ + { 0x000004a5, 18286 }, /* kana_conjunctive */ + { 0x000004a6, 18771 }, /* kana_WO */ + { 0x000004a7, 18232 }, /* kana_a */ + { 0x000004a8, 18379 }, /* kana_i */ + { 0x000004a9, 18749 }, /* kana_u */ + { 0x000004aa, 18303 }, /* kana_e */ + { 0x000004ab, 18545 }, /* kana_o */ + { 0x000004ac, 18779 }, /* kana_ya */ + { 0x000004ad, 18811 }, /* kana_yu */ + { 0x000004ae, 18795 }, /* kana_yo */ + { 0x000004af, 18715 }, /* kana_tsu */ + { 0x000004b0, 22212 }, /* prolongedsound */ + { 0x000004b1, 18239 }, /* kana_A */ + { 0x000004b2, 18386 }, /* kana_I */ + { 0x000004b3, 18756 }, /* kana_U */ + { 0x000004b4, 18310 }, /* kana_E */ + { 0x000004b5, 18552 }, /* kana_O */ + { 0x000004b6, 18393 }, /* kana_KA */ + { 0x000004b7, 18409 }, /* kana_KI */ + { 0x000004b8, 18425 }, /* kana_KU */ + { 0x000004b9, 18401 }, /* kana_KE */ + { 0x000004ba, 18417 }, /* kana_KO */ + { 0x000004bb, 18619 }, /* kana_SA */ + { 0x000004bc, 18635 }, /* kana_SHI */ + { 0x000004bd, 18663 }, /* kana_SU */ + { 0x000004be, 18627 }, /* kana_SE */ + { 0x000004bf, 18655 }, /* kana_SO */ + { 0x000004c0, 18683 }, /* kana_TA */ + { 0x000004c1, 18246 }, /* kana_CHI */ + { 0x000004c2, 18724 }, /* kana_TSU */ + { 0x000004c3, 18691 }, /* kana_TE */ + { 0x000004c4, 18707 }, /* kana_TO */ + { 0x000004c5, 18505 }, /* kana_NA */ + { 0x000004c6, 18521 }, /* kana_NI */ + { 0x000004c7, 18537 }, /* kana_NU */ + { 0x000004c8, 18513 }, /* kana_NE */ + { 0x000004c9, 18529 }, /* kana_NO */ + { 0x000004ca, 18339 }, /* kana_HA */ + { 0x000004cb, 18355 }, /* kana_HI */ + { 0x000004cc, 18317 }, /* kana_FU */ + { 0x000004cd, 18347 }, /* kana_HE */ + { 0x000004ce, 18363 }, /* kana_HO */ + { 0x000004cf, 18443 }, /* kana_MA */ + { 0x000004d0, 18459 }, /* kana_MI */ + { 0x000004d1, 18490 }, /* kana_MU */ + { 0x000004d2, 18451 }, /* kana_ME */ + { 0x000004d3, 18482 }, /* kana_MO */ + { 0x000004d4, 18787 }, /* kana_YA */ + { 0x000004d5, 18819 }, /* kana_YU */ + { 0x000004d6, 18803 }, /* kana_YO */ + { 0x000004d7, 18579 }, /* kana_RA */ + { 0x000004d8, 18595 }, /* kana_RI */ + { 0x000004d9, 18611 }, /* kana_RU */ + { 0x000004da, 18587 }, /* kana_RE */ + { 0x000004db, 18603 }, /* kana_RO */ + { 0x000004dc, 18763 }, /* kana_WA */ + { 0x000004dd, 18498 }, /* kana_N */ + { 0x000004de, 26601 }, /* voicedsound */ + { 0x000004df, 22826 }, /* semivoicedsound */ { 0x000005ac, 1109 }, /* Arabic_comma */ { 0x000005bb, 1764 }, /* Arabic_semicolon */ { 0x000005bf, 1698 }, /* Arabic_question_mark */ @@ -5260,555 +5861,555 @@ static const struct name_keysym keysym_to_name[] = { { 0x000005f0, 1515 }, /* Arabic_kasra */ { 0x000005f1, 1781 }, /* Arabic_shadda */ { 0x000005f2, 1808 }, /* Arabic_sukun */ - { 0x000006a1, 22760 }, /* Serbian_dje */ - { 0x000006a2, 19585 }, /* Macedonia_gje */ - { 0x000006a3, 9456 }, /* Cyrillic_io */ - { 0x000006a4, 26199 }, /* Ukrainian_ie */ - { 0x000006a5, 19557 }, /* Macedonia_dse */ - { 0x000006a6, 26175 }, /* Ukrainian_i */ - { 0x000006a7, 26225 }, /* Ukrainian_yi */ - { 0x000006a8, 9480 }, /* Cyrillic_je */ - { 0x000006a9, 9618 }, /* Cyrillic_lje */ - { 0x000006aa, 9644 }, /* Cyrillic_nje */ - { 0x000006ab, 22878 }, /* Serbian_tshe */ - { 0x000006ac, 19613 }, /* Macedonia_kje */ - { 0x000006ad, 26123 }, /* Ukrainian_ghe_with_upturn */ + { 0x000006a1, 22842 }, /* Serbian_dje */ + { 0x000006a2, 19667 }, /* Macedonia_gje */ + { 0x000006a3, 9538 }, /* Cyrillic_io */ + { 0x000006a4, 26281 }, /* Ukrainian_ie */ + { 0x000006a5, 19639 }, /* Macedonia_dse */ + { 0x000006a6, 26257 }, /* Ukrainian_i */ + { 0x000006a7, 26307 }, /* Ukrainian_yi */ + { 0x000006a8, 9562 }, /* Cyrillic_je */ + { 0x000006a9, 9700 }, /* Cyrillic_lje */ + { 0x000006aa, 9726 }, /* Cyrillic_nje */ + { 0x000006ab, 22960 }, /* Serbian_tshe */ + { 0x000006ac, 19695 }, /* Macedonia_kje */ + { 0x000006ad, 26205 }, /* Ukrainian_ghe_with_upturn */ { 0x000006ae, 8399 }, /* Byelorussian_shortu */ - { 0x000006af, 8972 }, /* Cyrillic_dzhe */ - { 0x000006b0, 20189 }, /* numerosign */ - { 0x000006b1, 22772 }, /* Serbian_DJE */ - { 0x000006b2, 19599 }, /* Macedonia_GJE */ - { 0x000006b3, 9468 }, /* Cyrillic_IO */ - { 0x000006b4, 26212 }, /* Ukrainian_IE */ - { 0x000006b5, 19571 }, /* Macedonia_DSE */ - { 0x000006b6, 26187 }, /* Ukrainian_I */ - { 0x000006b7, 26238 }, /* Ukrainian_YI */ - { 0x000006b8, 9492 }, /* Cyrillic_JE */ - { 0x000006b9, 9631 }, /* Cyrillic_LJE */ - { 0x000006ba, 9657 }, /* Cyrillic_NJE */ - { 0x000006bb, 22891 }, /* Serbian_TSHE */ - { 0x000006bc, 19627 }, /* Macedonia_KJE */ - { 0x000006bd, 26149 }, /* Ukrainian_GHE_WITH_UPTURN */ + { 0x000006af, 9054 }, /* Cyrillic_dzhe */ + { 0x000006b0, 20271 }, /* numerosign */ + { 0x000006b1, 22854 }, /* Serbian_DJE */ + { 0x000006b2, 19681 }, /* Macedonia_GJE */ + { 0x000006b3, 9550 }, /* Cyrillic_IO */ + { 0x000006b4, 26294 }, /* Ukrainian_IE */ + { 0x000006b5, 19653 }, /* Macedonia_DSE */ + { 0x000006b6, 26269 }, /* Ukrainian_I */ + { 0x000006b7, 26320 }, /* Ukrainian_YI */ + { 0x000006b8, 9574 }, /* Cyrillic_JE */ + { 0x000006b9, 9713 }, /* Cyrillic_LJE */ + { 0x000006ba, 9739 }, /* Cyrillic_NJE */ + { 0x000006bb, 22973 }, /* Serbian_TSHE */ + { 0x000006bc, 19709 }, /* Macedonia_KJE */ + { 0x000006bd, 26231 }, /* Ukrainian_GHE_WITH_UPTURN */ { 0x000006be, 8419 }, /* Byelorussian_SHORTU */ - { 0x000006bf, 8986 }, /* Cyrillic_DZHE */ - { 0x000006c0, 10200 }, /* Cyrillic_yu */ - { 0x000006c1, 8782 }, /* Cyrillic_a */ - { 0x000006c2, 8804 }, /* Cyrillic_be */ - { 0x000006c3, 9952 }, /* Cyrillic_tse */ - { 0x000006c4, 8948 }, /* Cyrillic_de */ - { 0x000006c5, 9432 }, /* Cyrillic_ie */ - { 0x000006c6, 9022 }, /* Cyrillic_ef */ - { 0x000006c7, 9210 }, /* Cyrillic_ghe */ - { 0x000006c8, 9270 }, /* Cyrillic_ha */ - { 0x000006c9, 9374 }, /* Cyrillic_i */ - { 0x000006ca, 9860 }, /* Cyrillic_shorti */ - { 0x000006cb, 9504 }, /* Cyrillic_ka */ - { 0x000006cc, 9046 }, /* Cyrillic_el */ - { 0x000006cd, 9070 }, /* Cyrillic_em */ - { 0x000006ce, 9094 }, /* Cyrillic_en */ - { 0x000006cf, 9670 }, /* Cyrillic_o */ - { 0x000006d0, 9722 }, /* Cyrillic_pe */ - { 0x000006d1, 10148 }, /* Cyrillic_ya */ - { 0x000006d2, 9162 }, /* Cyrillic_er */ - { 0x000006d3, 9186 }, /* Cyrillic_es */ - { 0x000006d4, 9928 }, /* Cyrillic_te */ - { 0x000006d5, 9978 }, /* Cyrillic_u */ - { 0x000006d6, 10248 }, /* Cyrillic_zhe */ - { 0x000006d7, 10124 }, /* Cyrillic_ve */ - { 0x000006d8, 9892 }, /* Cyrillic_softsign */ - { 0x000006d9, 10172 }, /* Cyrillic_yeru */ - { 0x000006da, 10224 }, /* Cyrillic_ze */ - { 0x000006db, 9776 }, /* Cyrillic_sha */ - { 0x000006dc, 9000 }, /* Cyrillic_e */ - { 0x000006dd, 9802 }, /* Cyrillic_shcha */ - { 0x000006de, 8828 }, /* Cyrillic_che */ - { 0x000006df, 9338 }, /* Cyrillic_hardsign */ - { 0x000006e0, 10212 }, /* Cyrillic_YU */ - { 0x000006e1, 8793 }, /* Cyrillic_A */ - { 0x000006e2, 8816 }, /* Cyrillic_BE */ - { 0x000006e3, 9965 }, /* Cyrillic_TSE */ - { 0x000006e4, 8960 }, /* Cyrillic_DE */ - { 0x000006e5, 9444 }, /* Cyrillic_IE */ - { 0x000006e6, 9034 }, /* Cyrillic_EF */ - { 0x000006e7, 9223 }, /* Cyrillic_GHE */ - { 0x000006e8, 9282 }, /* Cyrillic_HA */ - { 0x000006e9, 9385 }, /* Cyrillic_I */ - { 0x000006ea, 9876 }, /* Cyrillic_SHORTI */ - { 0x000006eb, 9516 }, /* Cyrillic_KA */ - { 0x000006ec, 9058 }, /* Cyrillic_EL */ - { 0x000006ed, 9082 }, /* Cyrillic_EM */ - { 0x000006ee, 9106 }, /* Cyrillic_EN */ - { 0x000006ef, 9681 }, /* Cyrillic_O */ - { 0x000006f0, 9734 }, /* Cyrillic_PE */ - { 0x000006f1, 10160 }, /* Cyrillic_YA */ - { 0x000006f2, 9174 }, /* Cyrillic_ER */ - { 0x000006f3, 9198 }, /* Cyrillic_ES */ - { 0x000006f4, 9940 }, /* Cyrillic_TE */ - { 0x000006f5, 9989 }, /* Cyrillic_U */ - { 0x000006f6, 10261 }, /* Cyrillic_ZHE */ - { 0x000006f7, 10136 }, /* Cyrillic_VE */ - { 0x000006f8, 9910 }, /* Cyrillic_SOFTSIGN */ - { 0x000006f9, 10186 }, /* Cyrillic_YERU */ - { 0x000006fa, 10236 }, /* Cyrillic_ZE */ - { 0x000006fb, 9789 }, /* Cyrillic_SHA */ - { 0x000006fc, 9011 }, /* Cyrillic_E */ - { 0x000006fd, 9817 }, /* Cyrillic_SHCHA */ - { 0x000006fe, 8841 }, /* Cyrillic_CHE */ - { 0x000006ff, 9356 }, /* Cyrillic_HARDSIGN */ - { 0x000007a1, 13342 }, /* Greek_ALPHAaccent */ - { 0x000007a2, 13472 }, /* Greek_EPSILONaccent */ - { 0x000007a3, 13532 }, /* Greek_ETAaccent */ - { 0x000007a4, 13647 }, /* Greek_IOTAaccent */ - { 0x000007a5, 13726 }, /* Greek_IOTAdieresis */ - { 0x000007a7, 13962 }, /* Greek_OMICRONaccent */ - { 0x000007a8, 14189 }, /* Greek_UPSILONaccent */ - { 0x000007a9, 14257 }, /* Greek_UPSILONdieresis */ - { 0x000007ab, 13898 }, /* Greek_OMEGAaccent */ - { 0x000007ae, 13297 }, /* Greek_accentdieresis */ - { 0x000007af, 13610 }, /* Greek_horizbar */ - { 0x000007b1, 13360 }, /* Greek_alphaaccent */ - { 0x000007b2, 13492 }, /* Greek_epsilonaccent */ - { 0x000007b3, 13548 }, /* Greek_etaaccent */ - { 0x000007b4, 13664 }, /* Greek_iotaaccent */ - { 0x000007b5, 13745 }, /* Greek_iotadieresis */ - { 0x000007b6, 13681 }, /* Greek_iotaaccentdieresis */ - { 0x000007b7, 13982 }, /* Greek_omicronaccent */ - { 0x000007b8, 14209 }, /* Greek_upsilonaccent */ - { 0x000007b9, 14279 }, /* Greek_upsilondieresis */ - { 0x000007ba, 14229 }, /* Greek_upsilonaccentdieresis */ - { 0x000007bb, 13916 }, /* Greek_omegaaccent */ - { 0x000007c1, 13318 }, /* Greek_ALPHA */ - { 0x000007c2, 13378 }, /* Greek_BETA */ - { 0x000007c3, 13586 }, /* Greek_GAMMA */ - { 0x000007c4, 13420 }, /* Greek_DELTA */ - { 0x000007c5, 13444 }, /* Greek_EPSILON */ - { 0x000007c6, 14319 }, /* Greek_ZETA */ - { 0x000007c7, 13512 }, /* Greek_ETA */ - { 0x000007c8, 14137 }, /* Greek_THETA */ - { 0x000007c9, 13625 }, /* Greek_IOTA */ - { 0x000007ca, 13764 }, /* Greek_KAPPA */ - { 0x000007cb, 13814 }, /* Greek_LAMDA */ - { 0x000007cc, 13838 }, /* Greek_MU */ - { 0x000007cd, 13856 }, /* Greek_NU */ - { 0x000007ce, 14301 }, /* Greek_XI */ - { 0x000007cf, 13934 }, /* Greek_OMICRON */ - { 0x000007d0, 14022 }, /* Greek_PI */ - { 0x000007d1, 14060 }, /* Greek_RHO */ - { 0x000007d2, 14080 }, /* Greek_SIGMA */ - { 0x000007d4, 14117 }, /* Greek_TAU */ - { 0x000007d5, 14161 }, /* Greek_UPSILON */ - { 0x000007d6, 14002 }, /* Greek_PHI */ - { 0x000007d7, 13400 }, /* Greek_CHI */ - { 0x000007d8, 14040 }, /* Greek_PSI */ - { 0x000007d9, 13874 }, /* Greek_OMEGA */ - { 0x000007e1, 13330 }, /* Greek_alpha */ - { 0x000007e2, 13389 }, /* Greek_beta */ - { 0x000007e3, 13598 }, /* Greek_gamma */ - { 0x000007e4, 13432 }, /* Greek_delta */ - { 0x000007e5, 13458 }, /* Greek_epsilon */ - { 0x000007e6, 14330 }, /* Greek_zeta */ - { 0x000007e7, 13522 }, /* Greek_eta */ - { 0x000007e8, 14149 }, /* Greek_theta */ - { 0x000007e9, 13636 }, /* Greek_iota */ - { 0x000007ea, 13776 }, /* Greek_kappa */ - { 0x000007eb, 13826 }, /* Greek_lamda */ - { 0x000007ec, 13847 }, /* Greek_mu */ - { 0x000007ed, 13865 }, /* Greek_nu */ - { 0x000007ee, 14310 }, /* Greek_xi */ - { 0x000007ef, 13948 }, /* Greek_omicron */ - { 0x000007f0, 14031 }, /* Greek_pi */ - { 0x000007f1, 14070 }, /* Greek_rho */ - { 0x000007f2, 14092 }, /* Greek_sigma */ - { 0x000007f3, 13564 }, /* Greek_finalsmallsigma */ - { 0x000007f4, 14127 }, /* Greek_tau */ - { 0x000007f5, 14175 }, /* Greek_upsilon */ - { 0x000007f6, 14012 }, /* Greek_phi */ - { 0x000007f7, 13410 }, /* Greek_chi */ - { 0x000007f8, 14050 }, /* Greek_psi */ - { 0x000007f9, 13886 }, /* Greek_omega */ - { 0x000008a1, 19356 }, /* leftradical */ - { 0x000008a2, 25621 }, /* topleftradical */ - { 0x000008a3, 16667 }, /* horizconnector */ - { 0x000008a4, 25595 }, /* topintegral */ + { 0x000006bf, 9068 }, /* Cyrillic_DZHE */ + { 0x000006c0, 10282 }, /* Cyrillic_yu */ + { 0x000006c1, 8864 }, /* Cyrillic_a */ + { 0x000006c2, 8886 }, /* Cyrillic_be */ + { 0x000006c3, 10034 }, /* Cyrillic_tse */ + { 0x000006c4, 9030 }, /* Cyrillic_de */ + { 0x000006c5, 9514 }, /* Cyrillic_ie */ + { 0x000006c6, 9104 }, /* Cyrillic_ef */ + { 0x000006c7, 9292 }, /* Cyrillic_ghe */ + { 0x000006c8, 9352 }, /* Cyrillic_ha */ + { 0x000006c9, 9456 }, /* Cyrillic_i */ + { 0x000006ca, 9942 }, /* Cyrillic_shorti */ + { 0x000006cb, 9586 }, /* Cyrillic_ka */ + { 0x000006cc, 9128 }, /* Cyrillic_el */ + { 0x000006cd, 9152 }, /* Cyrillic_em */ + { 0x000006ce, 9176 }, /* Cyrillic_en */ + { 0x000006cf, 9752 }, /* Cyrillic_o */ + { 0x000006d0, 9804 }, /* Cyrillic_pe */ + { 0x000006d1, 10230 }, /* Cyrillic_ya */ + { 0x000006d2, 9244 }, /* Cyrillic_er */ + { 0x000006d3, 9268 }, /* Cyrillic_es */ + { 0x000006d4, 10010 }, /* Cyrillic_te */ + { 0x000006d5, 10060 }, /* Cyrillic_u */ + { 0x000006d6, 10330 }, /* Cyrillic_zhe */ + { 0x000006d7, 10206 }, /* Cyrillic_ve */ + { 0x000006d8, 9974 }, /* Cyrillic_softsign */ + { 0x000006d9, 10254 }, /* Cyrillic_yeru */ + { 0x000006da, 10306 }, /* Cyrillic_ze */ + { 0x000006db, 9858 }, /* Cyrillic_sha */ + { 0x000006dc, 9082 }, /* Cyrillic_e */ + { 0x000006dd, 9884 }, /* Cyrillic_shcha */ + { 0x000006de, 8910 }, /* Cyrillic_che */ + { 0x000006df, 9420 }, /* Cyrillic_hardsign */ + { 0x000006e0, 10294 }, /* Cyrillic_YU */ + { 0x000006e1, 8875 }, /* Cyrillic_A */ + { 0x000006e2, 8898 }, /* Cyrillic_BE */ + { 0x000006e3, 10047 }, /* Cyrillic_TSE */ + { 0x000006e4, 9042 }, /* Cyrillic_DE */ + { 0x000006e5, 9526 }, /* Cyrillic_IE */ + { 0x000006e6, 9116 }, /* Cyrillic_EF */ + { 0x000006e7, 9305 }, /* Cyrillic_GHE */ + { 0x000006e8, 9364 }, /* Cyrillic_HA */ + { 0x000006e9, 9467 }, /* Cyrillic_I */ + { 0x000006ea, 9958 }, /* Cyrillic_SHORTI */ + { 0x000006eb, 9598 }, /* Cyrillic_KA */ + { 0x000006ec, 9140 }, /* Cyrillic_EL */ + { 0x000006ed, 9164 }, /* Cyrillic_EM */ + { 0x000006ee, 9188 }, /* Cyrillic_EN */ + { 0x000006ef, 9763 }, /* Cyrillic_O */ + { 0x000006f0, 9816 }, /* Cyrillic_PE */ + { 0x000006f1, 10242 }, /* Cyrillic_YA */ + { 0x000006f2, 9256 }, /* Cyrillic_ER */ + { 0x000006f3, 9280 }, /* Cyrillic_ES */ + { 0x000006f4, 10022 }, /* Cyrillic_TE */ + { 0x000006f5, 10071 }, /* Cyrillic_U */ + { 0x000006f6, 10343 }, /* Cyrillic_ZHE */ + { 0x000006f7, 10218 }, /* Cyrillic_VE */ + { 0x000006f8, 9992 }, /* Cyrillic_SOFTSIGN */ + { 0x000006f9, 10268 }, /* Cyrillic_YERU */ + { 0x000006fa, 10318 }, /* Cyrillic_ZE */ + { 0x000006fb, 9871 }, /* Cyrillic_SHA */ + { 0x000006fc, 9093 }, /* Cyrillic_E */ + { 0x000006fd, 9899 }, /* Cyrillic_SHCHA */ + { 0x000006fe, 8923 }, /* Cyrillic_CHE */ + { 0x000006ff, 9438 }, /* Cyrillic_HARDSIGN */ + { 0x000007a1, 13424 }, /* Greek_ALPHAaccent */ + { 0x000007a2, 13554 }, /* Greek_EPSILONaccent */ + { 0x000007a3, 13614 }, /* Greek_ETAaccent */ + { 0x000007a4, 13729 }, /* Greek_IOTAaccent */ + { 0x000007a5, 13808 }, /* Greek_IOTAdieresis */ + { 0x000007a7, 14044 }, /* Greek_OMICRONaccent */ + { 0x000007a8, 14271 }, /* Greek_UPSILONaccent */ + { 0x000007a9, 14339 }, /* Greek_UPSILONdieresis */ + { 0x000007ab, 13980 }, /* Greek_OMEGAaccent */ + { 0x000007ae, 13379 }, /* Greek_accentdieresis */ + { 0x000007af, 13692 }, /* Greek_horizbar */ + { 0x000007b1, 13442 }, /* Greek_alphaaccent */ + { 0x000007b2, 13574 }, /* Greek_epsilonaccent */ + { 0x000007b3, 13630 }, /* Greek_etaaccent */ + { 0x000007b4, 13746 }, /* Greek_iotaaccent */ + { 0x000007b5, 13827 }, /* Greek_iotadieresis */ + { 0x000007b6, 13763 }, /* Greek_iotaaccentdieresis */ + { 0x000007b7, 14064 }, /* Greek_omicronaccent */ + { 0x000007b8, 14291 }, /* Greek_upsilonaccent */ + { 0x000007b9, 14361 }, /* Greek_upsilondieresis */ + { 0x000007ba, 14311 }, /* Greek_upsilonaccentdieresis */ + { 0x000007bb, 13998 }, /* Greek_omegaaccent */ + { 0x000007c1, 13400 }, /* Greek_ALPHA */ + { 0x000007c2, 13460 }, /* Greek_BETA */ + { 0x000007c3, 13668 }, /* Greek_GAMMA */ + { 0x000007c4, 13502 }, /* Greek_DELTA */ + { 0x000007c5, 13526 }, /* Greek_EPSILON */ + { 0x000007c6, 14401 }, /* Greek_ZETA */ + { 0x000007c7, 13594 }, /* Greek_ETA */ + { 0x000007c8, 14219 }, /* Greek_THETA */ + { 0x000007c9, 13707 }, /* Greek_IOTA */ + { 0x000007ca, 13846 }, /* Greek_KAPPA */ + { 0x000007cb, 13896 }, /* Greek_LAMDA */ + { 0x000007cc, 13920 }, /* Greek_MU */ + { 0x000007cd, 13938 }, /* Greek_NU */ + { 0x000007ce, 14383 }, /* Greek_XI */ + { 0x000007cf, 14016 }, /* Greek_OMICRON */ + { 0x000007d0, 14104 }, /* Greek_PI */ + { 0x000007d1, 14142 }, /* Greek_RHO */ + { 0x000007d2, 14162 }, /* Greek_SIGMA */ + { 0x000007d4, 14199 }, /* Greek_TAU */ + { 0x000007d5, 14243 }, /* Greek_UPSILON */ + { 0x000007d6, 14084 }, /* Greek_PHI */ + { 0x000007d7, 13482 }, /* Greek_CHI */ + { 0x000007d8, 14122 }, /* Greek_PSI */ + { 0x000007d9, 13956 }, /* Greek_OMEGA */ + { 0x000007e1, 13412 }, /* Greek_alpha */ + { 0x000007e2, 13471 }, /* Greek_beta */ + { 0x000007e3, 13680 }, /* Greek_gamma */ + { 0x000007e4, 13514 }, /* Greek_delta */ + { 0x000007e5, 13540 }, /* Greek_epsilon */ + { 0x000007e6, 14412 }, /* Greek_zeta */ + { 0x000007e7, 13604 }, /* Greek_eta */ + { 0x000007e8, 14231 }, /* Greek_theta */ + { 0x000007e9, 13718 }, /* Greek_iota */ + { 0x000007ea, 13858 }, /* Greek_kappa */ + { 0x000007eb, 13908 }, /* Greek_lamda */ + { 0x000007ec, 13929 }, /* Greek_mu */ + { 0x000007ed, 13947 }, /* Greek_nu */ + { 0x000007ee, 14392 }, /* Greek_xi */ + { 0x000007ef, 14030 }, /* Greek_omicron */ + { 0x000007f0, 14113 }, /* Greek_pi */ + { 0x000007f1, 14152 }, /* Greek_rho */ + { 0x000007f2, 14174 }, /* Greek_sigma */ + { 0x000007f3, 13646 }, /* Greek_finalsmallsigma */ + { 0x000007f4, 14209 }, /* Greek_tau */ + { 0x000007f5, 14257 }, /* Greek_upsilon */ + { 0x000007f6, 14094 }, /* Greek_phi */ + { 0x000007f7, 13492 }, /* Greek_chi */ + { 0x000007f8, 14132 }, /* Greek_psi */ + { 0x000007f9, 13968 }, /* Greek_omega */ + { 0x000008a1, 19438 }, /* leftradical */ + { 0x000008a2, 25703 }, /* topleftradical */ + { 0x000008a3, 16749 }, /* horizconnector */ + { 0x000008a4, 25677 }, /* topintegral */ { 0x000008a5, 3422 }, /* botintegral */ - { 0x000008a6, 26505 }, /* vertconnector */ - { 0x000008a7, 25636 }, /* topleftsqbracket */ + { 0x000008a6, 26587 }, /* vertconnector */ + { 0x000008a7, 25718 }, /* topleftsqbracket */ { 0x000008a8, 3448 }, /* botleftsqbracket */ - { 0x000008a9, 25685 }, /* toprightsqbracket */ + { 0x000008a9, 25767 }, /* toprightsqbracket */ { 0x000008aa, 3497 }, /* botrightsqbracket */ - { 0x000008ab, 25607 }, /* topleftparens */ + { 0x000008ab, 25689 }, /* topleftparens */ { 0x000008ac, 3434 }, /* botleftparens */ - { 0x000008ad, 25670 }, /* toprightparens */ + { 0x000008ad, 25752 }, /* toprightparens */ { 0x000008ae, 3482 }, /* botrightparens */ - { 0x000008af, 19306 }, /* leftmiddlecurlybrace */ - { 0x000008b0, 22440 }, /* rightmiddlecurlybrace */ - { 0x000008b1, 25653 }, /* topleftsummation */ + { 0x000008af, 19388 }, /* leftmiddlecurlybrace */ + { 0x000008b0, 22522 }, /* rightmiddlecurlybrace */ + { 0x000008b1, 25735 }, /* topleftsummation */ { 0x000008b2, 3465 }, /* botleftsummation */ - { 0x000008b3, 25726 }, /* topvertsummationconnector */ + { 0x000008b3, 25808 }, /* topvertsummationconnector */ { 0x000008b4, 3538 }, /* botvertsummationconnector */ - { 0x000008b5, 25703 }, /* toprightsummation */ + { 0x000008b5, 25785 }, /* toprightsummation */ { 0x000008b6, 3515 }, /* botrightsummation */ - { 0x000008b7, 22462 }, /* rightmiddlesummation */ - { 0x000008bc, 19417 }, /* lessthanequal */ - { 0x000008bd, 20125 }, /* notequal */ - { 0x000008be, 13280 }, /* greaterthanequal */ - { 0x000008bf, 17313 }, /* integral */ - { 0x000008c0, 25479 }, /* therefore */ - { 0x000008c1, 26487 }, /* variation */ - { 0x000008c2, 17275 }, /* infinity */ - { 0x000008c5, 19947 }, /* nabla */ + { 0x000008b7, 22544 }, /* rightmiddlesummation */ + { 0x000008bc, 19499 }, /* lessthanequal */ + { 0x000008bd, 20207 }, /* notequal */ + { 0x000008be, 13362 }, /* greaterthanequal */ + { 0x000008bf, 17395 }, /* integral */ + { 0x000008c0, 25561 }, /* therefore */ + { 0x000008c1, 26569 }, /* variation */ + { 0x000008c2, 17357 }, /* infinity */ + { 0x000008c5, 20029 }, /* nabla */ { 0x000008c8, 954 }, /* approximate */ - { 0x000008c9, 22999 }, /* similarequal */ - { 0x000008cd, 17196 }, /* ifonlyif */ - { 0x000008ce, 17247 }, /* implies */ - { 0x000008cf, 17155 }, /* identical */ - { 0x000008d6, 22286 }, /* radical */ - { 0x000008da, 17255 }, /* includedin */ - { 0x000008db, 17266 }, /* includes */ - { 0x000008dc, 17322 }, /* intersection */ - { 0x000008dd, 26362 }, /* union */ - { 0x000008de, 19457 }, /* logicaland */ - { 0x000008df, 19468 }, /* logicalor */ - { 0x000008ef, 21463 }, /* partialderivative */ - { 0x000008f6, 12656 }, /* function */ - { 0x000008fb, 19266 }, /* leftarrow */ - { 0x000008fc, 26387 }, /* uparrow */ - { 0x000008fd, 22397 }, /* rightarrow */ - { 0x000008fe, 11332 }, /* downarrow */ + { 0x000008c9, 23081 }, /* similarequal */ + { 0x000008cd, 17278 }, /* ifonlyif */ + { 0x000008ce, 17329 }, /* implies */ + { 0x000008cf, 17237 }, /* identical */ + { 0x000008d6, 22368 }, /* radical */ + { 0x000008da, 17337 }, /* includedin */ + { 0x000008db, 17348 }, /* includes */ + { 0x000008dc, 17404 }, /* intersection */ + { 0x000008dd, 26444 }, /* union */ + { 0x000008de, 19539 }, /* logicaland */ + { 0x000008df, 19550 }, /* logicalor */ + { 0x000008ef, 21545 }, /* partialderivative */ + { 0x000008f6, 12738 }, /* function */ + { 0x000008fb, 19348 }, /* leftarrow */ + { 0x000008fc, 26469 }, /* uparrow */ + { 0x000008fd, 22479 }, /* rightarrow */ + { 0x000008fe, 11414 }, /* downarrow */ { 0x000009df, 3410 }, /* blank */ - { 0x000009e0, 23790 }, /* soliddiamond */ + { 0x000009e0, 23872 }, /* soliddiamond */ { 0x000009e1, 8603 }, /* checkerboard */ - { 0x000009e2, 17043 }, /* ht */ - { 0x000009e3, 12413 }, /* ff */ - { 0x000009e4, 8727 }, /* cr */ - { 0x000009e5, 19431 }, /* lf */ - { 0x000009e8, 20075 }, /* nl */ - { 0x000009e9, 26542 }, /* vt */ - { 0x000009ea, 19502 }, /* lowrightcorner */ - { 0x000009eb, 26416 }, /* uprightcorner */ - { 0x000009ec, 26403 }, /* upleftcorner */ - { 0x000009ed, 19488 }, /* lowleftcorner */ - { 0x000009ee, 8730 }, /* crossinglines */ - { 0x000009ef, 16682 }, /* horizlinescan1 */ - { 0x000009f0, 16697 }, /* horizlinescan3 */ - { 0x000009f1, 16712 }, /* horizlinescan5 */ - { 0x000009f2, 16727 }, /* horizlinescan7 */ - { 0x000009f3, 16742 }, /* horizlinescan9 */ - { 0x000009f4, 19397 }, /* leftt */ - { 0x000009f5, 22545 }, /* rightt */ + { 0x000009e2, 17125 }, /* ht */ + { 0x000009e3, 12495 }, /* ff */ + { 0x000009e4, 8809 }, /* cr */ + { 0x000009e5, 19513 }, /* lf */ + { 0x000009e8, 20157 }, /* nl */ + { 0x000009e9, 26624 }, /* vt */ + { 0x000009ea, 19584 }, /* lowrightcorner */ + { 0x000009eb, 26498 }, /* uprightcorner */ + { 0x000009ec, 26485 }, /* upleftcorner */ + { 0x000009ed, 19570 }, /* lowleftcorner */ + { 0x000009ee, 8812 }, /* crossinglines */ + { 0x000009ef, 16764 }, /* horizlinescan1 */ + { 0x000009f0, 16779 }, /* horizlinescan3 */ + { 0x000009f1, 16794 }, /* horizlinescan5 */ + { 0x000009f2, 16809 }, /* horizlinescan7 */ + { 0x000009f3, 16824 }, /* horizlinescan9 */ + { 0x000009f4, 19479 }, /* leftt */ + { 0x000009f5, 22627 }, /* rightt */ { 0x000009f6, 3533 }, /* bott */ - { 0x000009f7, 25721 }, /* topt */ - { 0x000009f8, 26497 }, /* vertbar */ - { 0x00000aa1, 11928 }, /* emspace */ - { 0x00000aa2, 12027 }, /* enspace */ - { 0x00000aa3, 11821 }, /* em3space */ - { 0x00000aa4, 11830 }, /* em4space */ - { 0x00000aa5, 11221 }, /* digitspace */ - { 0x00000aa6, 22145 }, /* punctspace */ - { 0x00000aa7, 25489 }, /* thinspace */ - { 0x00000aa8, 14382 }, /* hairspace */ - { 0x00000aa9, 11855 }, /* emdash */ - { 0x00000aaa, 11940 }, /* endash */ - { 0x00000aac, 22987 }, /* signifblank */ - { 0x00000aae, 11812 }, /* ellipsis */ - { 0x00000aaf, 11267 }, /* doubbaselinedot */ - { 0x00000ab0, 20767 }, /* onethird */ - { 0x00000ab1, 25837 }, /* twothirds */ - { 0x00000ab2, 20705 }, /* onefifth */ - { 0x00000ab3, 25802 }, /* twofifths */ - { 0x00000ab4, 25530 }, /* threefifths */ - { 0x00000ab5, 12607 }, /* fourfifths */ - { 0x00000ab6, 20733 }, /* onesixth */ - { 0x00000ab7, 12569 }, /* fivesixths */ + { 0x000009f7, 25803 }, /* topt */ + { 0x000009f8, 26579 }, /* vertbar */ + { 0x00000aa1, 12010 }, /* emspace */ + { 0x00000aa2, 12109 }, /* enspace */ + { 0x00000aa3, 11903 }, /* em3space */ + { 0x00000aa4, 11912 }, /* em4space */ + { 0x00000aa5, 11303 }, /* digitspace */ + { 0x00000aa6, 22227 }, /* punctspace */ + { 0x00000aa7, 25571 }, /* thinspace */ + { 0x00000aa8, 14464 }, /* hairspace */ + { 0x00000aa9, 11937 }, /* emdash */ + { 0x00000aaa, 12022 }, /* endash */ + { 0x00000aac, 23069 }, /* signifblank */ + { 0x00000aae, 11894 }, /* ellipsis */ + { 0x00000aaf, 11349 }, /* doubbaselinedot */ + { 0x00000ab0, 20849 }, /* onethird */ + { 0x00000ab1, 25919 }, /* twothirds */ + { 0x00000ab2, 20787 }, /* onefifth */ + { 0x00000ab3, 25884 }, /* twofifths */ + { 0x00000ab4, 25612 }, /* threefifths */ + { 0x00000ab5, 12689 }, /* fourfifths */ + { 0x00000ab6, 20815 }, /* onesixth */ + { 0x00000ab7, 12651 }, /* fivesixths */ { 0x00000ab8, 8506 }, /* careof */ - { 0x00000abb, 12427 }, /* figdash */ - { 0x00000abc, 19249 }, /* leftanglebracket */ - { 0x00000abd, 11140 }, /* decimalpoint */ - { 0x00000abe, 22379 }, /* rightanglebracket */ - { 0x00000abf, 19681 }, /* marker */ - { 0x00000ac3, 20695 }, /* oneeighth */ - { 0x00000ac4, 25517 }, /* threeeighths */ - { 0x00000ac5, 12557 }, /* fiveeighths */ - { 0x00000ac6, 22904 }, /* seveneighths */ - { 0x00000ac9, 25760 }, /* trademark */ - { 0x00000aca, 22973 }, /* signaturemark */ - { 0x00000acb, 25770 }, /* trademarkincircle */ - { 0x00000acc, 19327 }, /* leftopentriangle */ - { 0x00000acd, 22483 }, /* rightopentriangle */ - { 0x00000ace, 11890 }, /* emopencircle */ - { 0x00000acf, 11903 }, /* emopenrectangle */ - { 0x00000ad0, 19377 }, /* leftsinglequotemark */ - { 0x00000ad1, 22524 }, /* rightsinglequotemark */ - { 0x00000ad2, 19286 }, /* leftdoublequotemark */ - { 0x00000ad3, 22419 }, /* rightdoublequotemark */ - { 0x00000ad4, 22067 }, /* prescription */ - { 0x00000ad5, 21517 }, /* permille */ - { 0x00000ad6, 19739 }, /* minutes */ - { 0x00000ad7, 22711 }, /* seconds */ - { 0x00000ad9, 19181 }, /* latincross */ - { 0x00000ada, 16626 }, /* hexagram */ - { 0x00000adb, 12455 }, /* filledrectbullet */ - { 0x00000adc, 12435 }, /* filledlefttribullet */ - { 0x00000add, 12472 }, /* filledrighttribullet */ - { 0x00000ade, 11862 }, /* emfilledcircle */ - { 0x00000adf, 11877 }, /* emfilledrect */ - { 0x00000ae0, 11991 }, /* enopencircbullet */ - { 0x00000ae1, 12008 }, /* enopensquarebullet */ - { 0x00000ae2, 20794 }, /* openrectbullet */ - { 0x00000ae3, 20836 }, /* opentribulletup */ - { 0x00000ae4, 20818 }, /* opentribulletdown */ - { 0x00000ae5, 20809 }, /* openstar */ - { 0x00000ae6, 11947 }, /* enfilledcircbullet */ - { 0x00000ae7, 11966 }, /* enfilledsqbullet */ - { 0x00000ae8, 12513 }, /* filledtribulletup */ - { 0x00000ae9, 12493 }, /* filledtribulletdown */ - { 0x00000aea, 19344 }, /* leftpointer */ - { 0x00000aeb, 22501 }, /* rightpointer */ + { 0x00000abb, 12509 }, /* figdash */ + { 0x00000abc, 19331 }, /* leftanglebracket */ + { 0x00000abd, 11222 }, /* decimalpoint */ + { 0x00000abe, 22461 }, /* rightanglebracket */ + { 0x00000abf, 19763 }, /* marker */ + { 0x00000ac3, 20777 }, /* oneeighth */ + { 0x00000ac4, 25599 }, /* threeeighths */ + { 0x00000ac5, 12639 }, /* fiveeighths */ + { 0x00000ac6, 22986 }, /* seveneighths */ + { 0x00000ac9, 25842 }, /* trademark */ + { 0x00000aca, 23055 }, /* signaturemark */ + { 0x00000acb, 25852 }, /* trademarkincircle */ + { 0x00000acc, 19409 }, /* leftopentriangle */ + { 0x00000acd, 22565 }, /* rightopentriangle */ + { 0x00000ace, 11972 }, /* emopencircle */ + { 0x00000acf, 11985 }, /* emopenrectangle */ + { 0x00000ad0, 19459 }, /* leftsinglequotemark */ + { 0x00000ad1, 22606 }, /* rightsinglequotemark */ + { 0x00000ad2, 19368 }, /* leftdoublequotemark */ + { 0x00000ad3, 22501 }, /* rightdoublequotemark */ + { 0x00000ad4, 22149 }, /* prescription */ + { 0x00000ad5, 21599 }, /* permille */ + { 0x00000ad6, 19821 }, /* minutes */ + { 0x00000ad7, 22793 }, /* seconds */ + { 0x00000ad9, 19263 }, /* latincross */ + { 0x00000ada, 16708 }, /* hexagram */ + { 0x00000adb, 12537 }, /* filledrectbullet */ + { 0x00000adc, 12517 }, /* filledlefttribullet */ + { 0x00000add, 12554 }, /* filledrighttribullet */ + { 0x00000ade, 11944 }, /* emfilledcircle */ + { 0x00000adf, 11959 }, /* emfilledrect */ + { 0x00000ae0, 12073 }, /* enopencircbullet */ + { 0x00000ae1, 12090 }, /* enopensquarebullet */ + { 0x00000ae2, 20876 }, /* openrectbullet */ + { 0x00000ae3, 20918 }, /* opentribulletup */ + { 0x00000ae4, 20900 }, /* opentribulletdown */ + { 0x00000ae5, 20891 }, /* openstar */ + { 0x00000ae6, 12029 }, /* enfilledcircbullet */ + { 0x00000ae7, 12048 }, /* enfilledsqbullet */ + { 0x00000ae8, 12595 }, /* filledtribulletup */ + { 0x00000ae9, 12575 }, /* filledtribulletdown */ + { 0x00000aea, 19426 }, /* leftpointer */ + { 0x00000aeb, 22583 }, /* rightpointer */ { 0x00000aec, 8649 }, /* club */ - { 0x00000aed, 11213 }, /* diamond */ - { 0x00000aee, 16080 }, /* heart */ - { 0x00000af0, 19668 }, /* maltesecross */ - { 0x00000af1, 10358 }, /* dagger */ - { 0x00000af2, 11295 }, /* doubledagger */ + { 0x00000aed, 11295 }, /* diamond */ + { 0x00000aee, 16162 }, /* heart */ + { 0x00000af0, 19750 }, /* maltesecross */ + { 0x00000af1, 10440 }, /* dagger */ + { 0x00000af2, 11377 }, /* doubledagger */ { 0x00000af3, 8616 }, /* checkmark */ { 0x00000af4, 3380 }, /* ballotcross */ - { 0x00000af5, 19860 }, /* musicalsharp */ - { 0x00000af6, 19848 }, /* musicalflat */ - { 0x00000af7, 19657 }, /* malesymbol */ - { 0x00000af8, 12400 }, /* femalesymbol */ - { 0x00000af9, 24354 }, /* telephone */ - { 0x00000afa, 24364 }, /* telephonerecorder */ - { 0x00000afb, 21537 }, /* phonographcopyright */ + { 0x00000af5, 19942 }, /* musicalsharp */ + { 0x00000af6, 19930 }, /* musicalflat */ + { 0x00000af7, 19739 }, /* malesymbol */ + { 0x00000af8, 12482 }, /* femalesymbol */ + { 0x00000af9, 24436 }, /* telephone */ + { 0x00000afa, 24446 }, /* telephonerecorder */ + { 0x00000afb, 21619 }, /* phonographcopyright */ { 0x00000afc, 8513 }, /* caret */ - { 0x00000afd, 23028 }, /* singlelowquotemark */ - { 0x00000afe, 11308 }, /* doublelowquotemark */ - { 0x00000aff, 8775 }, /* cursor */ - { 0x00000ba3, 19276 }, /* leftcaret */ - { 0x00000ba6, 22408 }, /* rightcaret */ - { 0x00000ba8, 11342 }, /* downcaret */ - { 0x00000ba9, 26395 }, /* upcaret */ - { 0x00000bc0, 21324 }, /* overbar */ - { 0x00000bc2, 11371 }, /* downtack */ - { 0x00000bc3, 26430 }, /* upshoe */ - { 0x00000bc4, 11361 }, /* downstile */ - { 0x00000bc6, 26337 }, /* underbar */ - { 0x00000bca, 18142 }, /* jot */ - { 0x00000bcc, 22160 }, /* quad */ - { 0x00000bce, 26445 }, /* uptack */ + { 0x00000afd, 23110 }, /* singlelowquotemark */ + { 0x00000afe, 11390 }, /* doublelowquotemark */ + { 0x00000aff, 8857 }, /* cursor */ + { 0x00000ba3, 19358 }, /* leftcaret */ + { 0x00000ba6, 22490 }, /* rightcaret */ + { 0x00000ba8, 11424 }, /* downcaret */ + { 0x00000ba9, 26477 }, /* upcaret */ + { 0x00000bc0, 21406 }, /* overbar */ + { 0x00000bc2, 11453 }, /* downtack */ + { 0x00000bc3, 26512 }, /* upshoe */ + { 0x00000bc4, 11443 }, /* downstile */ + { 0x00000bc6, 26419 }, /* underbar */ + { 0x00000bca, 18224 }, /* jot */ + { 0x00000bcc, 22242 }, /* quad */ + { 0x00000bce, 26527 }, /* uptack */ { 0x00000bcf, 8626 }, /* circle */ - { 0x00000bd3, 26437 }, /* upstile */ - { 0x00000bd6, 11352 }, /* downshoe */ - { 0x00000bd8, 22514 }, /* rightshoe */ - { 0x00000bda, 19368 }, /* leftshoe */ - { 0x00000bdc, 19403 }, /* lefttack */ - { 0x00000bfc, 22552 }, /* righttack */ - { 0x00000cdf, 16173 }, /* hebrew_doublelowline */ - { 0x00000ce0, 16086 }, /* hebrew_aleph */ - { 0x00000ce1, 16111 }, /* hebrew_bet */ - { 0x00000ce2, 16292 }, /* hebrew_gimel */ - { 0x00000ce3, 16146 }, /* hebrew_dalet */ - { 0x00000ce4, 16319 }, /* hebrew_he */ - { 0x00000ce5, 16531 }, /* hebrew_waw */ - { 0x00000ce6, 16577 }, /* hebrew_zain */ - { 0x00000ce7, 16134 }, /* hebrew_chet */ - { 0x00000ce8, 16508 }, /* hebrew_tet */ - { 0x00000ce9, 16542 }, /* hebrew_yod */ - { 0x00000cea, 16194 }, /* hebrew_finalkaph */ - { 0x00000ceb, 16340 }, /* hebrew_kaph */ - { 0x00000cec, 16363 }, /* hebrew_lamed */ - { 0x00000ced, 16211 }, /* hebrew_finalmem */ - { 0x00000cee, 16376 }, /* hebrew_mem */ - { 0x00000cef, 16227 }, /* hebrew_finalnun */ - { 0x00000cf0, 16387 }, /* hebrew_nun */ - { 0x00000cf1, 16432 }, /* hebrew_samech */ - { 0x00000cf2, 16099 }, /* hebrew_ayin */ - { 0x00000cf3, 16243 }, /* hebrew_finalpe */ - { 0x00000cf4, 16398 }, /* hebrew_pe */ - { 0x00000cf5, 16258 }, /* hebrew_finalzade */ - { 0x00000cf6, 16553 }, /* hebrew_zade */ - { 0x00000cf7, 16408 }, /* hebrew_qoph */ - { 0x00000cf8, 16420 }, /* hebrew_resh */ - { 0x00000cf9, 16460 }, /* hebrew_shin */ - { 0x00000cfa, 16497 }, /* hebrew_taw */ - { 0x00000da1, 24617 }, /* Thai_kokai */ - { 0x00000da2, 24547 }, /* Thai_khokhai */ - { 0x00000da3, 24573 }, /* Thai_khokhuat */ - { 0x00000da4, 24587 }, /* Thai_khokhwai */ - { 0x00000da5, 24560 }, /* Thai_khokhon */ - { 0x00000da6, 24601 }, /* Thai_khorakhang */ - { 0x00000da7, 24930 }, /* Thai_ngongu */ - { 0x00000da8, 24423 }, /* Thai_chochan */ - { 0x00000da9, 24450 }, /* Thai_choching */ - { 0x00000daa, 24436 }, /* Thai_chochang */ - { 0x00000dab, 25291 }, /* Thai_soso */ - { 0x00000dac, 24464 }, /* Thai_chochoe */ - { 0x00000dad, 25467 }, /* Thai_yoying */ - { 0x00000dae, 24477 }, /* Thai_dochada */ - { 0x00000daf, 25420 }, /* Thai_topatak */ - { 0x00000db0, 25379 }, /* Thai_thothan */ - { 0x00000db1, 25329 }, /* Thai_thonangmontho */ - { 0x00000db2, 25348 }, /* Thai_thophuthao */ - { 0x00000db3, 24956 }, /* Thai_nonen */ - { 0x00000db4, 24490 }, /* Thai_dodek */ - { 0x00000db5, 25433 }, /* Thai_totao */ - { 0x00000db6, 25406 }, /* Thai_thothung */ - { 0x00000db7, 25364 }, /* Thai_thothahan */ - { 0x00000db8, 25392 }, /* Thai_thothong */ - { 0x00000db9, 24967 }, /* Thai_nonu */ - { 0x00000dba, 24409 }, /* Thai_bobaimai */ - { 0x00000dbb, 25058 }, /* Thai_popla */ - { 0x00000dbc, 25028 }, /* Thai_phophung */ - { 0x00000dbd, 24501 }, /* Thai_fofa */ - { 0x00000dbe, 25015 }, /* Thai_phophan */ - { 0x00000dbf, 24511 }, /* Thai_fofan */ - { 0x00000dc0, 25042 }, /* Thai_phosamphao */ - { 0x00000dc1, 24920 }, /* Thai_moma */ - { 0x00000dc2, 25456 }, /* Thai_yoyak */ - { 0x00000dc3, 25069 }, /* Thai_rorua */ - { 0x00000dc4, 25080 }, /* Thai_ru */ - { 0x00000dc5, 24780 }, /* Thai_loling */ - { 0x00000dc6, 24792 }, /* Thai_lu */ - { 0x00000dc7, 25444 }, /* Thai_wowaen */ - { 0x00000dc8, 25279 }, /* Thai_sosala */ - { 0x00000dc9, 25267 }, /* Thai_sorusi */ - { 0x00000dca, 25301 }, /* Thai_sosua */ - { 0x00000dcb, 24522 }, /* Thai_hohip */ - { 0x00000dcc, 24767 }, /* Thai_lochula */ - { 0x00000dcd, 24977 }, /* Thai_oang */ - { 0x00000dce, 24533 }, /* Thai_honokhuk */ - { 0x00000dcf, 24987 }, /* Thai_paiyannoi */ - { 0x00000dd0, 25088 }, /* Thai_saraa */ - { 0x00000dd1, 24828 }, /* Thai_maihanakat */ - { 0x00000dd2, 25099 }, /* Thai_saraaa */ - { 0x00000dd3, 25162 }, /* Thai_saraam */ - { 0x00000dd4, 25185 }, /* Thai_sarai */ - { 0x00000dd5, 25196 }, /* Thai_saraii */ - { 0x00000dd6, 25230 }, /* Thai_saraue */ - { 0x00000dd7, 25242 }, /* Thai_sarauee */ - { 0x00000dd8, 25219 }, /* Thai_sarau */ - { 0x00000dd9, 25255 }, /* Thai_sarauu */ - { 0x00000dda, 25002 }, /* Thai_phinthu */ - { 0x00000dde, 24844 }, /* Thai_maihanakat_maitho */ - { 0x00000ddf, 24399 }, /* Thai_baht */ - { 0x00000de0, 25174 }, /* Thai_sarae */ - { 0x00000de1, 25111 }, /* Thai_saraae */ - { 0x00000de2, 25208 }, /* Thai_sarao */ - { 0x00000de3, 25143 }, /* Thai_saraaimaimuan */ - { 0x00000de4, 25123 }, /* Thai_saraaimaimalai */ - { 0x00000de5, 24628 }, /* Thai_lakkhangyao */ - { 0x00000de6, 24906 }, /* Thai_maiyamok */ - { 0x00000de7, 24867 }, /* Thai_maitaikhu */ - { 0x00000de8, 24817 }, /* Thai_maiek */ - { 0x00000de9, 24882 }, /* Thai_maitho */ - { 0x00000dea, 24894 }, /* Thai_maitri */ - { 0x00000deb, 24800 }, /* Thai_maichattawa */ - { 0x00000dec, 25312 }, /* Thai_thanthakhat */ - { 0x00000ded, 24942 }, /* Thai_nikhahit */ - { 0x00000df0, 24755 }, /* Thai_leksun */ - { 0x00000df1, 24693 }, /* Thai_leknung */ - { 0x00000df2, 24742 }, /* Thai_leksong */ - { 0x00000df3, 24719 }, /* Thai_leksam */ - { 0x00000df4, 24731 }, /* Thai_leksi */ - { 0x00000df5, 24658 }, /* Thai_lekha */ - { 0x00000df6, 24669 }, /* Thai_lekhok */ - { 0x00000df7, 24645 }, /* Thai_lekchet */ - { 0x00000df8, 24706 }, /* Thai_lekpaet */ - { 0x00000df9, 24681 }, /* Thai_lekkao */ - { 0x00000ea1, 15181 }, /* Hangul_Kiyeog */ - { 0x00000ea2, 15726 }, /* Hangul_SsangKiyeog */ - { 0x00000ea3, 15195 }, /* Hangul_KiyeogSios */ - { 0x00000ea4, 15276 }, /* Hangul_Nieun */ - { 0x00000ea5, 15307 }, /* Hangul_NieunJieuj */ - { 0x00000ea6, 15289 }, /* Hangul_NieunHieuh */ - { 0x00000ea7, 14488 }, /* Hangul_Dikeud */ - { 0x00000ea8, 15689 }, /* Hangul_SsangDikeud */ - { 0x00000ea9, 15461 }, /* Hangul_Rieul */ - { 0x00000eaa, 15492 }, /* Hangul_RieulKiyeog */ - { 0x00000eab, 15511 }, /* Hangul_RieulMieum */ - { 0x00000eac, 15548 }, /* Hangul_RieulPieub */ - { 0x00000ead, 15566 }, /* Hangul_RieulSios */ - { 0x00000eae, 15583 }, /* Hangul_RieulTieut */ - { 0x00000eaf, 15529 }, /* Hangul_RieulPhieuf */ - { 0x00000eb0, 15474 }, /* Hangul_RieulHieuh */ - { 0x00000eb1, 15238 }, /* Hangul_Mieum */ - { 0x00000eb2, 15373 }, /* Hangul_Pieub */ - { 0x00000eb3, 15745 }, /* Hangul_SsangPieub */ - { 0x00000eb4, 15386 }, /* Hangul_PieubSios */ - { 0x00000eb5, 15662 }, /* Hangul_Sios */ - { 0x00000eb6, 15763 }, /* Hangul_SsangSios */ - { 0x00000eb7, 14577 }, /* Hangul_Ieung */ - { 0x00000eb8, 15154 }, /* Hangul_Jieuj */ - { 0x00000eb9, 15708 }, /* Hangul_SsangJieuj */ - { 0x00000eba, 14458 }, /* Hangul_Cieuc */ - { 0x00000ebb, 15167 }, /* Hangul_Khieuq */ - { 0x00000ebc, 15883 }, /* Hangul_Tieut */ - { 0x00000ebd, 15359 }, /* Hangul_Phieuf */ - { 0x00000ebe, 14555 }, /* Hangul_Hieuh */ - { 0x00000ebf, 14399 }, /* Hangul_A */ - { 0x00000ec0, 14408 }, /* Hangul_AE */ - { 0x00000ec1, 15957 }, /* Hangul_YA */ - { 0x00000ec2, 15967 }, /* Hangul_YAE */ - { 0x00000ec3, 14522 }, /* Hangul_EO */ - { 0x00000ec4, 14502 }, /* Hangul_E */ - { 0x00000ec5, 15988 }, /* Hangul_YEO */ - { 0x00000ec6, 15978 }, /* Hangul_YE */ - { 0x00000ec7, 15325 }, /* Hangul_O */ - { 0x00000ec8, 15905 }, /* Hangul_WA */ - { 0x00000ec9, 15915 }, /* Hangul_WAE */ - { 0x00000eca, 15334 }, /* Hangul_OE */ - { 0x00000ecb, 16028 }, /* Hangul_YO */ - { 0x00000ecc, 15896 }, /* Hangul_U */ - { 0x00000ecd, 15936 }, /* Hangul_WEO */ - { 0x00000ece, 15926 }, /* Hangul_WE */ - { 0x00000ecf, 15947 }, /* Hangul_WI */ - { 0x00000ed0, 16038 }, /* Hangul_YU */ - { 0x00000ed1, 14532 }, /* Hangul_EU */ - { 0x00000ed2, 16018 }, /* Hangul_YI */ - { 0x00000ed3, 14568 }, /* Hangul_I */ - { 0x00000ed4, 14682 }, /* Hangul_J_Kiyeog */ - { 0x00000ed5, 15052 }, /* Hangul_J_SsangKiyeog */ - { 0x00000ed6, 14698 }, /* Hangul_J_KiyeogSios */ - { 0x00000ed7, 14760 }, /* Hangul_J_Nieun */ - { 0x00000ed8, 14795 }, /* Hangul_J_NieunJieuj */ - { 0x00000ed9, 14775 }, /* Hangul_J_NieunHieuh */ - { 0x00000eda, 14605 }, /* Hangul_J_Dikeud */ - { 0x00000edb, 14882 }, /* Hangul_J_Rieul */ - { 0x00000edc, 14917 }, /* Hangul_J_RieulKiyeog */ - { 0x00000edd, 14938 }, /* Hangul_J_RieulMieum */ - { 0x00000ede, 14979 }, /* Hangul_J_RieulPieub */ - { 0x00000edf, 14999 }, /* Hangul_J_RieulSios */ - { 0x00000ee0, 15018 }, /* Hangul_J_RieulTieut */ - { 0x00000ee1, 14958 }, /* Hangul_J_RieulPhieuf */ - { 0x00000ee2, 14897 }, /* Hangul_J_RieulHieuh */ - { 0x00000ee3, 14745 }, /* Hangul_J_Mieum */ - { 0x00000ee4, 14848 }, /* Hangul_J_Pieub */ - { 0x00000ee5, 14863 }, /* Hangul_J_PieubSios */ - { 0x00000ee6, 15038 }, /* Hangul_J_Sios */ - { 0x00000ee7, 15073 }, /* Hangul_J_SsangSios */ - { 0x00000ee8, 14636 }, /* Hangul_J_Ieung */ - { 0x00000ee9, 14651 }, /* Hangul_J_Jieuj */ - { 0x00000eea, 14590 }, /* Hangul_J_Cieuc */ - { 0x00000eeb, 14666 }, /* Hangul_J_Khieuq */ - { 0x00000eec, 15092 }, /* Hangul_J_Tieut */ - { 0x00000eed, 14832 }, /* Hangul_J_Phieuf */ - { 0x00000eee, 14621 }, /* Hangul_J_Hieuh */ - { 0x00000eef, 15601 }, /* Hangul_RieulYeorinHieuh */ - { 0x00000ef0, 15793 }, /* Hangul_SunkyeongeumMieum */ - { 0x00000ef1, 15844 }, /* Hangul_SunkyeongeumPieub */ - { 0x00000ef2, 15344 }, /* Hangul_PanSios */ - { 0x00000ef3, 15213 }, /* Hangul_KkogjiDalrinIeung */ - { 0x00000ef4, 15818 }, /* Hangul_SunkyeongeumPhieuf */ - { 0x00000ef5, 15999 }, /* Hangul_YeorinHieuh */ - { 0x00000ef6, 14418 }, /* Hangul_AraeA */ - { 0x00000ef7, 14431 }, /* Hangul_AraeAE */ - { 0x00000ef8, 14815 }, /* Hangul_J_PanSios */ - { 0x00000ef9, 14718 }, /* Hangul_J_KkogjiDalrinIeung */ - { 0x00000efa, 15107 }, /* Hangul_J_YeorinHieuh */ - { 0x00000eff, 18797 }, /* Korean_Won */ - { 0x000013bc, 20514 }, /* OE */ - { 0x000013bd, 20517 }, /* oe */ - { 0x000013be, 29155 }, /* Ydiaeresis */ - { 0x000020ac, 12090 }, /* EuroSign */ + { 0x00000bd3, 26519 }, /* upstile */ + { 0x00000bd6, 11434 }, /* downshoe */ + { 0x00000bd8, 22596 }, /* rightshoe */ + { 0x00000bda, 19450 }, /* leftshoe */ + { 0x00000bdc, 19485 }, /* lefttack */ + { 0x00000bfc, 22634 }, /* righttack */ + { 0x00000cdf, 16255 }, /* hebrew_doublelowline */ + { 0x00000ce0, 16168 }, /* hebrew_aleph */ + { 0x00000ce1, 16193 }, /* hebrew_bet */ + { 0x00000ce2, 16374 }, /* hebrew_gimel */ + { 0x00000ce3, 16228 }, /* hebrew_dalet */ + { 0x00000ce4, 16401 }, /* hebrew_he */ + { 0x00000ce5, 16613 }, /* hebrew_waw */ + { 0x00000ce6, 16659 }, /* hebrew_zain */ + { 0x00000ce7, 16216 }, /* hebrew_chet */ + { 0x00000ce8, 16590 }, /* hebrew_tet */ + { 0x00000ce9, 16624 }, /* hebrew_yod */ + { 0x00000cea, 16276 }, /* hebrew_finalkaph */ + { 0x00000ceb, 16422 }, /* hebrew_kaph */ + { 0x00000cec, 16445 }, /* hebrew_lamed */ + { 0x00000ced, 16293 }, /* hebrew_finalmem */ + { 0x00000cee, 16458 }, /* hebrew_mem */ + { 0x00000cef, 16309 }, /* hebrew_finalnun */ + { 0x00000cf0, 16469 }, /* hebrew_nun */ + { 0x00000cf1, 16514 }, /* hebrew_samech */ + { 0x00000cf2, 16181 }, /* hebrew_ayin */ + { 0x00000cf3, 16325 }, /* hebrew_finalpe */ + { 0x00000cf4, 16480 }, /* hebrew_pe */ + { 0x00000cf5, 16340 }, /* hebrew_finalzade */ + { 0x00000cf6, 16635 }, /* hebrew_zade */ + { 0x00000cf7, 16490 }, /* hebrew_qoph */ + { 0x00000cf8, 16502 }, /* hebrew_resh */ + { 0x00000cf9, 16542 }, /* hebrew_shin */ + { 0x00000cfa, 16579 }, /* hebrew_taw */ + { 0x00000da1, 24699 }, /* Thai_kokai */ + { 0x00000da2, 24629 }, /* Thai_khokhai */ + { 0x00000da3, 24655 }, /* Thai_khokhuat */ + { 0x00000da4, 24669 }, /* Thai_khokhwai */ + { 0x00000da5, 24642 }, /* Thai_khokhon */ + { 0x00000da6, 24683 }, /* Thai_khorakhang */ + { 0x00000da7, 25012 }, /* Thai_ngongu */ + { 0x00000da8, 24505 }, /* Thai_chochan */ + { 0x00000da9, 24532 }, /* Thai_choching */ + { 0x00000daa, 24518 }, /* Thai_chochang */ + { 0x00000dab, 25373 }, /* Thai_soso */ + { 0x00000dac, 24546 }, /* Thai_chochoe */ + { 0x00000dad, 25549 }, /* Thai_yoying */ + { 0x00000dae, 24559 }, /* Thai_dochada */ + { 0x00000daf, 25502 }, /* Thai_topatak */ + { 0x00000db0, 25461 }, /* Thai_thothan */ + { 0x00000db1, 25411 }, /* Thai_thonangmontho */ + { 0x00000db2, 25430 }, /* Thai_thophuthao */ + { 0x00000db3, 25038 }, /* Thai_nonen */ + { 0x00000db4, 24572 }, /* Thai_dodek */ + { 0x00000db5, 25515 }, /* Thai_totao */ + { 0x00000db6, 25488 }, /* Thai_thothung */ + { 0x00000db7, 25446 }, /* Thai_thothahan */ + { 0x00000db8, 25474 }, /* Thai_thothong */ + { 0x00000db9, 25049 }, /* Thai_nonu */ + { 0x00000dba, 24491 }, /* Thai_bobaimai */ + { 0x00000dbb, 25140 }, /* Thai_popla */ + { 0x00000dbc, 25110 }, /* Thai_phophung */ + { 0x00000dbd, 24583 }, /* Thai_fofa */ + { 0x00000dbe, 25097 }, /* Thai_phophan */ + { 0x00000dbf, 24593 }, /* Thai_fofan */ + { 0x00000dc0, 25124 }, /* Thai_phosamphao */ + { 0x00000dc1, 25002 }, /* Thai_moma */ + { 0x00000dc2, 25538 }, /* Thai_yoyak */ + { 0x00000dc3, 25151 }, /* Thai_rorua */ + { 0x00000dc4, 25162 }, /* Thai_ru */ + { 0x00000dc5, 24862 }, /* Thai_loling */ + { 0x00000dc6, 24874 }, /* Thai_lu */ + { 0x00000dc7, 25526 }, /* Thai_wowaen */ + { 0x00000dc8, 25361 }, /* Thai_sosala */ + { 0x00000dc9, 25349 }, /* Thai_sorusi */ + { 0x00000dca, 25383 }, /* Thai_sosua */ + { 0x00000dcb, 24604 }, /* Thai_hohip */ + { 0x00000dcc, 24849 }, /* Thai_lochula */ + { 0x00000dcd, 25059 }, /* Thai_oang */ + { 0x00000dce, 24615 }, /* Thai_honokhuk */ + { 0x00000dcf, 25069 }, /* Thai_paiyannoi */ + { 0x00000dd0, 25170 }, /* Thai_saraa */ + { 0x00000dd1, 24910 }, /* Thai_maihanakat */ + { 0x00000dd2, 25181 }, /* Thai_saraaa */ + { 0x00000dd3, 25244 }, /* Thai_saraam */ + { 0x00000dd4, 25267 }, /* Thai_sarai */ + { 0x00000dd5, 25278 }, /* Thai_saraii */ + { 0x00000dd6, 25312 }, /* Thai_saraue */ + { 0x00000dd7, 25324 }, /* Thai_sarauee */ + { 0x00000dd8, 25301 }, /* Thai_sarau */ + { 0x00000dd9, 25337 }, /* Thai_sarauu */ + { 0x00000dda, 25084 }, /* Thai_phinthu */ + { 0x00000dde, 24926 }, /* Thai_maihanakat_maitho */ + { 0x00000ddf, 24481 }, /* Thai_baht */ + { 0x00000de0, 25256 }, /* Thai_sarae */ + { 0x00000de1, 25193 }, /* Thai_saraae */ + { 0x00000de2, 25290 }, /* Thai_sarao */ + { 0x00000de3, 25225 }, /* Thai_saraaimaimuan */ + { 0x00000de4, 25205 }, /* Thai_saraaimaimalai */ + { 0x00000de5, 24710 }, /* Thai_lakkhangyao */ + { 0x00000de6, 24988 }, /* Thai_maiyamok */ + { 0x00000de7, 24949 }, /* Thai_maitaikhu */ + { 0x00000de8, 24899 }, /* Thai_maiek */ + { 0x00000de9, 24964 }, /* Thai_maitho */ + { 0x00000dea, 24976 }, /* Thai_maitri */ + { 0x00000deb, 24882 }, /* Thai_maichattawa */ + { 0x00000dec, 25394 }, /* Thai_thanthakhat */ + { 0x00000ded, 25024 }, /* Thai_nikhahit */ + { 0x00000df0, 24837 }, /* Thai_leksun */ + { 0x00000df1, 24775 }, /* Thai_leknung */ + { 0x00000df2, 24824 }, /* Thai_leksong */ + { 0x00000df3, 24801 }, /* Thai_leksam */ + { 0x00000df4, 24813 }, /* Thai_leksi */ + { 0x00000df5, 24740 }, /* Thai_lekha */ + { 0x00000df6, 24751 }, /* Thai_lekhok */ + { 0x00000df7, 24727 }, /* Thai_lekchet */ + { 0x00000df8, 24788 }, /* Thai_lekpaet */ + { 0x00000df9, 24763 }, /* Thai_lekkao */ + { 0x00000ea1, 15263 }, /* Hangul_Kiyeog */ + { 0x00000ea2, 15808 }, /* Hangul_SsangKiyeog */ + { 0x00000ea3, 15277 }, /* Hangul_KiyeogSios */ + { 0x00000ea4, 15358 }, /* Hangul_Nieun */ + { 0x00000ea5, 15389 }, /* Hangul_NieunJieuj */ + { 0x00000ea6, 15371 }, /* Hangul_NieunHieuh */ + { 0x00000ea7, 14570 }, /* Hangul_Dikeud */ + { 0x00000ea8, 15771 }, /* Hangul_SsangDikeud */ + { 0x00000ea9, 15543 }, /* Hangul_Rieul */ + { 0x00000eaa, 15574 }, /* Hangul_RieulKiyeog */ + { 0x00000eab, 15593 }, /* Hangul_RieulMieum */ + { 0x00000eac, 15630 }, /* Hangul_RieulPieub */ + { 0x00000ead, 15648 }, /* Hangul_RieulSios */ + { 0x00000eae, 15665 }, /* Hangul_RieulTieut */ + { 0x00000eaf, 15611 }, /* Hangul_RieulPhieuf */ + { 0x00000eb0, 15556 }, /* Hangul_RieulHieuh */ + { 0x00000eb1, 15320 }, /* Hangul_Mieum */ + { 0x00000eb2, 15455 }, /* Hangul_Pieub */ + { 0x00000eb3, 15827 }, /* Hangul_SsangPieub */ + { 0x00000eb4, 15468 }, /* Hangul_PieubSios */ + { 0x00000eb5, 15744 }, /* Hangul_Sios */ + { 0x00000eb6, 15845 }, /* Hangul_SsangSios */ + { 0x00000eb7, 14659 }, /* Hangul_Ieung */ + { 0x00000eb8, 15236 }, /* Hangul_Jieuj */ + { 0x00000eb9, 15790 }, /* Hangul_SsangJieuj */ + { 0x00000eba, 14540 }, /* Hangul_Cieuc */ + { 0x00000ebb, 15249 }, /* Hangul_Khieuq */ + { 0x00000ebc, 15965 }, /* Hangul_Tieut */ + { 0x00000ebd, 15441 }, /* Hangul_Phieuf */ + { 0x00000ebe, 14637 }, /* Hangul_Hieuh */ + { 0x00000ebf, 14481 }, /* Hangul_A */ + { 0x00000ec0, 14490 }, /* Hangul_AE */ + { 0x00000ec1, 16039 }, /* Hangul_YA */ + { 0x00000ec2, 16049 }, /* Hangul_YAE */ + { 0x00000ec3, 14604 }, /* Hangul_EO */ + { 0x00000ec4, 14584 }, /* Hangul_E */ + { 0x00000ec5, 16070 }, /* Hangul_YEO */ + { 0x00000ec6, 16060 }, /* Hangul_YE */ + { 0x00000ec7, 15407 }, /* Hangul_O */ + { 0x00000ec8, 15987 }, /* Hangul_WA */ + { 0x00000ec9, 15997 }, /* Hangul_WAE */ + { 0x00000eca, 15416 }, /* Hangul_OE */ + { 0x00000ecb, 16110 }, /* Hangul_YO */ + { 0x00000ecc, 15978 }, /* Hangul_U */ + { 0x00000ecd, 16018 }, /* Hangul_WEO */ + { 0x00000ece, 16008 }, /* Hangul_WE */ + { 0x00000ecf, 16029 }, /* Hangul_WI */ + { 0x00000ed0, 16120 }, /* Hangul_YU */ + { 0x00000ed1, 14614 }, /* Hangul_EU */ + { 0x00000ed2, 16100 }, /* Hangul_YI */ + { 0x00000ed3, 14650 }, /* Hangul_I */ + { 0x00000ed4, 14764 }, /* Hangul_J_Kiyeog */ + { 0x00000ed5, 15134 }, /* Hangul_J_SsangKiyeog */ + { 0x00000ed6, 14780 }, /* Hangul_J_KiyeogSios */ + { 0x00000ed7, 14842 }, /* Hangul_J_Nieun */ + { 0x00000ed8, 14877 }, /* Hangul_J_NieunJieuj */ + { 0x00000ed9, 14857 }, /* Hangul_J_NieunHieuh */ + { 0x00000eda, 14687 }, /* Hangul_J_Dikeud */ + { 0x00000edb, 14964 }, /* Hangul_J_Rieul */ + { 0x00000edc, 14999 }, /* Hangul_J_RieulKiyeog */ + { 0x00000edd, 15020 }, /* Hangul_J_RieulMieum */ + { 0x00000ede, 15061 }, /* Hangul_J_RieulPieub */ + { 0x00000edf, 15081 }, /* Hangul_J_RieulSios */ + { 0x00000ee0, 15100 }, /* Hangul_J_RieulTieut */ + { 0x00000ee1, 15040 }, /* Hangul_J_RieulPhieuf */ + { 0x00000ee2, 14979 }, /* Hangul_J_RieulHieuh */ + { 0x00000ee3, 14827 }, /* Hangul_J_Mieum */ + { 0x00000ee4, 14930 }, /* Hangul_J_Pieub */ + { 0x00000ee5, 14945 }, /* Hangul_J_PieubSios */ + { 0x00000ee6, 15120 }, /* Hangul_J_Sios */ + { 0x00000ee7, 15155 }, /* Hangul_J_SsangSios */ + { 0x00000ee8, 14718 }, /* Hangul_J_Ieung */ + { 0x00000ee9, 14733 }, /* Hangul_J_Jieuj */ + { 0x00000eea, 14672 }, /* Hangul_J_Cieuc */ + { 0x00000eeb, 14748 }, /* Hangul_J_Khieuq */ + { 0x00000eec, 15174 }, /* Hangul_J_Tieut */ + { 0x00000eed, 14914 }, /* Hangul_J_Phieuf */ + { 0x00000eee, 14703 }, /* Hangul_J_Hieuh */ + { 0x00000eef, 15683 }, /* Hangul_RieulYeorinHieuh */ + { 0x00000ef0, 15875 }, /* Hangul_SunkyeongeumMieum */ + { 0x00000ef1, 15926 }, /* Hangul_SunkyeongeumPieub */ + { 0x00000ef2, 15426 }, /* Hangul_PanSios */ + { 0x00000ef3, 15295 }, /* Hangul_KkogjiDalrinIeung */ + { 0x00000ef4, 15900 }, /* Hangul_SunkyeongeumPhieuf */ + { 0x00000ef5, 16081 }, /* Hangul_YeorinHieuh */ + { 0x00000ef6, 14500 }, /* Hangul_AraeA */ + { 0x00000ef7, 14513 }, /* Hangul_AraeAE */ + { 0x00000ef8, 14897 }, /* Hangul_J_PanSios */ + { 0x00000ef9, 14800 }, /* Hangul_J_KkogjiDalrinIeung */ + { 0x00000efa, 15189 }, /* Hangul_J_YeorinHieuh */ + { 0x00000eff, 18879 }, /* Korean_Won */ + { 0x000013bc, 20596 }, /* OE */ + { 0x000013bd, 20599 }, /* oe */ + { 0x000013be, 31263 }, /* Ydiaeresis */ + { 0x000020ac, 12172 }, /* EuroSign */ { 0x0000fd01, 125 }, /* 3270_Duplicate */ { 0x0000fd02, 195 }, /* 3270_FieldMark */ { 0x0000fd03, 343 }, /* 3270_Right2 */ @@ -5839,293 +6440,293 @@ static const struct name_keysym keysym_to_name[] = { { 0x0000fd1c, 91 }, /* 3270_CursorSelect */ { 0x0000fd1d, 293 }, /* 3270_PrintScreen */ { 0x0000fd1e, 140 }, /* 3270_Enter */ - { 0x0000fe01, 17781 }, /* ISO_Lock */ - { 0x0000fe02, 17664 }, /* ISO_Level2_Latch */ - { 0x0000fe03, 17714 }, /* ISO_Level3_Shift */ - { 0x0000fe04, 17681 }, /* ISO_Level3_Latch */ - { 0x0000fe05, 17698 }, /* ISO_Level3_Lock */ - { 0x0000fe06, 17569 }, /* ISO_Group_Latch */ - { 0x0000fe07, 17585 }, /* ISO_Group_Lock */ - { 0x0000fe08, 17826 }, /* ISO_Next_Group */ - { 0x0000fe09, 17841 }, /* ISO_Next_Group_Lock */ - { 0x0000fe0a, 17950 }, /* ISO_Prev_Group */ - { 0x0000fe0b, 17965 }, /* ISO_Prev_Group_Lock */ - { 0x0000fe0c, 17532 }, /* ISO_First_Group */ - { 0x0000fe0d, 17548 }, /* ISO_First_Group_Lock */ - { 0x0000fe0e, 17616 }, /* ISO_Last_Group */ - { 0x0000fe0f, 17631 }, /* ISO_Last_Group_Lock */ - { 0x0000fe11, 17764 }, /* ISO_Level5_Shift */ - { 0x0000fe12, 17731 }, /* ISO_Level5_Latch */ - { 0x0000fe13, 17748 }, /* ISO_Level5_Lock */ - { 0x0000fe20, 17651 }, /* ISO_Left_Tab */ - { 0x0000fe21, 17809 }, /* ISO_Move_Line_Up */ - { 0x0000fe22, 17790 }, /* ISO_Move_Line_Down */ - { 0x0000fe23, 17883 }, /* ISO_Partial_Line_Up */ - { 0x0000fe24, 17861 }, /* ISO_Partial_Line_Down */ - { 0x0000fe25, 17903 }, /* ISO_Partial_Space_Left */ - { 0x0000fe26, 17926 }, /* ISO_Partial_Space_Right */ - { 0x0000fe27, 18059 }, /* ISO_Set_Margin_Left */ - { 0x0000fe28, 18079 }, /* ISO_Set_Margin_Right */ - { 0x0000fe29, 18010 }, /* ISO_Release_Margin_Left */ - { 0x0000fe2a, 18034 }, /* ISO_Release_Margin_Right */ - { 0x0000fe2b, 17985 }, /* ISO_Release_Both_Margins */ - { 0x0000fe2c, 17470 }, /* ISO_Fast_Cursor_Left */ - { 0x0000fe2d, 17491 }, /* ISO_Fast_Cursor_Right */ - { 0x0000fe2e, 17513 }, /* ISO_Fast_Cursor_Up */ - { 0x0000fe2f, 17449 }, /* ISO_Fast_Cursor_Down */ - { 0x0000fe30, 17372 }, /* ISO_Continuous_Underline */ - { 0x0000fe31, 17397 }, /* ISO_Discontinuous_Underline */ - { 0x0000fe32, 17425 }, /* ISO_Emphasize */ - { 0x0000fe33, 17354 }, /* ISO_Center_Object */ - { 0x0000fe34, 17439 }, /* ISO_Enter */ - { 0x0000fe50, 10858 }, /* dead_grave */ - { 0x0000fe51, 10531 }, /* dead_acute */ - { 0x0000fe52, 10754 }, /* dead_circumflex */ - { 0x0000fe53, 11097 }, /* dead_tilde */ - { 0x0000fe54, 10980 }, /* dead_macron */ - { 0x0000fe55, 10700 }, /* dead_breve */ - { 0x0000fe56, 10455 }, /* dead_abovedot */ - { 0x0000fe57, 10795 }, /* dead_diaeresis */ - { 0x0000fe58, 10493 }, /* dead_abovering */ - { 0x0000fe59, 10810 }, /* dead_doubleacute */ - { 0x0000fe5a, 10730 }, /* dead_caron */ - { 0x0000fe5b, 10741 }, /* dead_cedilla */ - { 0x0000fe5c, 11006 }, /* dead_ogonek */ - { 0x0000fe5d, 10933 }, /* dead_iota */ - { 0x0000fe5e, 11122 }, /* dead_voiced_sound */ - { 0x0000fe5f, 11046 }, /* dead_semivoiced_sound */ - { 0x0000fe60, 10615 }, /* dead_belowdot */ - { 0x0000fe61, 10880 }, /* dead_hook */ - { 0x0000fe62, 10890 }, /* dead_horn */ - { 0x0000fe63, 11085 }, /* dead_stroke */ - { 0x0000fe64, 10439 }, /* dead_abovecomma */ - { 0x0000fe65, 10469 }, /* dead_abovereversedcomma */ - { 0x0000fe66, 10827 }, /* dead_doublegrave */ - { 0x0000fe67, 10646 }, /* dead_belowring */ - { 0x0000fe68, 10629 }, /* dead_belowmacron */ - { 0x0000fe69, 10558 }, /* dead_belowcircumflex */ - { 0x0000fe6a, 10661 }, /* dead_belowtilde */ - { 0x0000fe6b, 10542 }, /* dead_belowbreve */ - { 0x0000fe6c, 10595 }, /* dead_belowdiaeresis */ - { 0x0000fe6d, 10914 }, /* dead_invertedbreve */ - { 0x0000fe6e, 10579 }, /* dead_belowcomma */ - { 0x0000fe6f, 10770 }, /* dead_currency */ + { 0x0000fe01, 17863 }, /* ISO_Lock */ + { 0x0000fe02, 17746 }, /* ISO_Level2_Latch */ + { 0x0000fe03, 17796 }, /* ISO_Level3_Shift */ + { 0x0000fe04, 17763 }, /* ISO_Level3_Latch */ + { 0x0000fe05, 17780 }, /* ISO_Level3_Lock */ + { 0x0000fe06, 17651 }, /* ISO_Group_Latch */ + { 0x0000fe07, 17667 }, /* ISO_Group_Lock */ + { 0x0000fe08, 17908 }, /* ISO_Next_Group */ + { 0x0000fe09, 17923 }, /* ISO_Next_Group_Lock */ + { 0x0000fe0a, 18032 }, /* ISO_Prev_Group */ + { 0x0000fe0b, 18047 }, /* ISO_Prev_Group_Lock */ + { 0x0000fe0c, 17614 }, /* ISO_First_Group */ + { 0x0000fe0d, 17630 }, /* ISO_First_Group_Lock */ + { 0x0000fe0e, 17698 }, /* ISO_Last_Group */ + { 0x0000fe0f, 17713 }, /* ISO_Last_Group_Lock */ + { 0x0000fe11, 17846 }, /* ISO_Level5_Shift */ + { 0x0000fe12, 17813 }, /* ISO_Level5_Latch */ + { 0x0000fe13, 17830 }, /* ISO_Level5_Lock */ + { 0x0000fe20, 17733 }, /* ISO_Left_Tab */ + { 0x0000fe21, 17891 }, /* ISO_Move_Line_Up */ + { 0x0000fe22, 17872 }, /* ISO_Move_Line_Down */ + { 0x0000fe23, 17965 }, /* ISO_Partial_Line_Up */ + { 0x0000fe24, 17943 }, /* ISO_Partial_Line_Down */ + { 0x0000fe25, 17985 }, /* ISO_Partial_Space_Left */ + { 0x0000fe26, 18008 }, /* ISO_Partial_Space_Right */ + { 0x0000fe27, 18141 }, /* ISO_Set_Margin_Left */ + { 0x0000fe28, 18161 }, /* ISO_Set_Margin_Right */ + { 0x0000fe29, 18092 }, /* ISO_Release_Margin_Left */ + { 0x0000fe2a, 18116 }, /* ISO_Release_Margin_Right */ + { 0x0000fe2b, 18067 }, /* ISO_Release_Both_Margins */ + { 0x0000fe2c, 17552 }, /* ISO_Fast_Cursor_Left */ + { 0x0000fe2d, 17573 }, /* ISO_Fast_Cursor_Right */ + { 0x0000fe2e, 17595 }, /* ISO_Fast_Cursor_Up */ + { 0x0000fe2f, 17531 }, /* ISO_Fast_Cursor_Down */ + { 0x0000fe30, 17454 }, /* ISO_Continuous_Underline */ + { 0x0000fe31, 17479 }, /* ISO_Discontinuous_Underline */ + { 0x0000fe32, 17507 }, /* ISO_Emphasize */ + { 0x0000fe33, 17436 }, /* ISO_Center_Object */ + { 0x0000fe34, 17521 }, /* ISO_Enter */ + { 0x0000fe50, 10940 }, /* dead_grave */ + { 0x0000fe51, 10613 }, /* dead_acute */ + { 0x0000fe52, 10836 }, /* dead_circumflex */ + { 0x0000fe53, 11179 }, /* dead_tilde */ + { 0x0000fe54, 11062 }, /* dead_macron */ + { 0x0000fe55, 10782 }, /* dead_breve */ + { 0x0000fe56, 10537 }, /* dead_abovedot */ + { 0x0000fe57, 10877 }, /* dead_diaeresis */ + { 0x0000fe58, 10575 }, /* dead_abovering */ + { 0x0000fe59, 10892 }, /* dead_doubleacute */ + { 0x0000fe5a, 10812 }, /* dead_caron */ + { 0x0000fe5b, 10823 }, /* dead_cedilla */ + { 0x0000fe5c, 11088 }, /* dead_ogonek */ + { 0x0000fe5d, 11015 }, /* dead_iota */ + { 0x0000fe5e, 11204 }, /* dead_voiced_sound */ + { 0x0000fe5f, 11128 }, /* dead_semivoiced_sound */ + { 0x0000fe60, 10697 }, /* dead_belowdot */ + { 0x0000fe61, 10962 }, /* dead_hook */ + { 0x0000fe62, 10972 }, /* dead_horn */ + { 0x0000fe63, 11167 }, /* dead_stroke */ + { 0x0000fe64, 10521 }, /* dead_abovecomma */ + { 0x0000fe65, 10551 }, /* dead_abovereversedcomma */ + { 0x0000fe66, 10909 }, /* dead_doublegrave */ + { 0x0000fe67, 10728 }, /* dead_belowring */ + { 0x0000fe68, 10711 }, /* dead_belowmacron */ + { 0x0000fe69, 10640 }, /* dead_belowcircumflex */ + { 0x0000fe6a, 10743 }, /* dead_belowtilde */ + { 0x0000fe6b, 10624 }, /* dead_belowbreve */ + { 0x0000fe6c, 10677 }, /* dead_belowdiaeresis */ + { 0x0000fe6d, 10996 }, /* dead_invertedbreve */ + { 0x0000fe6e, 10661 }, /* dead_belowcomma */ + { 0x0000fe6f, 10852 }, /* dead_currency */ { 0x0000fe70, 583 }, /* AccessX_Enable */ { 0x0000fe71, 598 }, /* AccessX_Feedback_Enable */ - { 0x0000fe72, 22342 }, /* RepeatKeys_Enable */ - { 0x0000fe73, 23774 }, /* SlowKeys_Enable */ + { 0x0000fe72, 22424 }, /* RepeatKeys_Enable */ + { 0x0000fe73, 23856 }, /* SlowKeys_Enable */ { 0x0000fe74, 3564 }, /* BounceKeys_Enable */ - { 0x0000fe75, 23836 }, /* StickyKeys_Enable */ - { 0x0000fe76, 19782 }, /* MouseKeys_Enable */ - { 0x0000fe77, 19759 }, /* MouseKeys_Accel_Enable */ - { 0x0000fe78, 21332 }, /* Overlay1_Enable */ - { 0x0000fe79, 21348 }, /* Overlay2_Enable */ + { 0x0000fe75, 23918 }, /* StickyKeys_Enable */ + { 0x0000fe76, 19864 }, /* MouseKeys_Enable */ + { 0x0000fe77, 19841 }, /* MouseKeys_Accel_Enable */ + { 0x0000fe78, 21414 }, /* Overlay1_Enable */ + { 0x0000fe79, 21430 }, /* Overlay2_Enable */ { 0x0000fe7a, 3309 }, /* AudibleBell_Enable */ - { 0x0000fe80, 10425 }, /* dead_a */ - { 0x0000fe81, 10432 }, /* dead_A */ - { 0x0000fe82, 10844 }, /* dead_e */ - { 0x0000fe83, 10851 }, /* dead_E */ - { 0x0000fe84, 10900 }, /* dead_i */ - { 0x0000fe85, 10907 }, /* dead_I */ - { 0x0000fe86, 10992 }, /* dead_o */ - { 0x0000fe87, 10999 }, /* dead_O */ - { 0x0000fe88, 11108 }, /* dead_u */ - { 0x0000fe89, 11115 }, /* dead_U */ - { 0x0000fe8a, 11068 }, /* dead_small_schwa */ - { 0x0000fe8b, 10711 }, /* dead_capital_schwa */ - { 0x0000fe8c, 10869 }, /* dead_greek */ - { 0x0000fe90, 10967 }, /* dead_lowline */ - { 0x0000fe91, 10508 }, /* dead_aboveverticalline */ - { 0x0000fe92, 10677 }, /* dead_belowverticalline */ - { 0x0000fe93, 10943 }, /* dead_longsolidusoverlay */ + { 0x0000fe80, 10507 }, /* dead_a */ + { 0x0000fe81, 10514 }, /* dead_A */ + { 0x0000fe82, 10926 }, /* dead_e */ + { 0x0000fe83, 10933 }, /* dead_E */ + { 0x0000fe84, 10982 }, /* dead_i */ + { 0x0000fe85, 10989 }, /* dead_I */ + { 0x0000fe86, 11074 }, /* dead_o */ + { 0x0000fe87, 11081 }, /* dead_O */ + { 0x0000fe88, 11190 }, /* dead_u */ + { 0x0000fe89, 11197 }, /* dead_U */ + { 0x0000fe8a, 11150 }, /* dead_small_schwa */ + { 0x0000fe8b, 10793 }, /* dead_capital_schwa */ + { 0x0000fe8c, 10951 }, /* dead_greek */ + { 0x0000fe90, 11049 }, /* dead_lowline */ + { 0x0000fe91, 10590 }, /* dead_aboveverticalline */ + { 0x0000fe92, 10759 }, /* dead_belowverticalline */ + { 0x0000fe93, 11025 }, /* dead_longsolidusoverlay */ { 0x0000fea0, 8594 }, /* ch */ { 0x0000fea1, 8597 }, /* Ch */ { 0x0000fea2, 8600 }, /* CH */ { 0x0000fea3, 8443 }, /* c_h */ { 0x0000fea4, 8447 }, /* C_h */ { 0x0000fea5, 8451 }, /* C_H */ - { 0x0000fed0, 12536 }, /* First_Virtual_Screen */ - { 0x0000fed1, 22080 }, /* Prev_Virtual_Screen */ - { 0x0000fed2, 20028 }, /* Next_Virtual_Screen */ - { 0x0000fed4, 19161 }, /* Last_Virtual_Screen */ - { 0x0000fed5, 24382 }, /* Terminate_Server */ - { 0x0000fee0, 21998 }, /* Pointer_Left */ - { 0x0000fee1, 22011 }, /* Pointer_Right */ - { 0x0000fee2, 22025 }, /* Pointer_Up */ - { 0x0000fee3, 21843 }, /* Pointer_Down */ - { 0x0000fee4, 22036 }, /* Pointer_UpLeft */ - { 0x0000fee5, 22051 }, /* Pointer_UpRight */ - { 0x0000fee6, 21856 }, /* Pointer_DownLeft */ - { 0x0000fee7, 21873 }, /* Pointer_DownRight */ - { 0x0000fee8, 21671 }, /* Pointer_Button_Dflt */ - { 0x0000fee9, 21591 }, /* Pointer_Button1 */ - { 0x0000feea, 21607 }, /* Pointer_Button2 */ - { 0x0000feeb, 21623 }, /* Pointer_Button3 */ - { 0x0000feec, 21639 }, /* Pointer_Button4 */ - { 0x0000feed, 21655 }, /* Pointer_Button5 */ - { 0x0000feee, 21781 }, /* Pointer_DblClick_Dflt */ - { 0x0000feef, 21691 }, /* Pointer_DblClick1 */ - { 0x0000fef0, 21709 }, /* Pointer_DblClick2 */ - { 0x0000fef1, 21727 }, /* Pointer_DblClick3 */ - { 0x0000fef2, 21745 }, /* Pointer_DblClick4 */ - { 0x0000fef3, 21763 }, /* Pointer_DblClick5 */ - { 0x0000fef4, 21961 }, /* Pointer_Drag_Dflt */ - { 0x0000fef5, 21891 }, /* Pointer_Drag1 */ - { 0x0000fef6, 21905 }, /* Pointer_Drag2 */ - { 0x0000fef7, 21919 }, /* Pointer_Drag3 */ - { 0x0000fef8, 21933 }, /* Pointer_Drag4 */ - { 0x0000fef9, 21979 }, /* Pointer_EnableKeys */ - { 0x0000fefa, 21572 }, /* Pointer_Accelerate */ - { 0x0000fefb, 21803 }, /* Pointer_DfltBtnNext */ - { 0x0000fefc, 21823 }, /* Pointer_DfltBtnPrev */ - { 0x0000fefd, 21947 }, /* Pointer_Drag5 */ + { 0x0000fed0, 12618 }, /* First_Virtual_Screen */ + { 0x0000fed1, 22162 }, /* Prev_Virtual_Screen */ + { 0x0000fed2, 20110 }, /* Next_Virtual_Screen */ + { 0x0000fed4, 19243 }, /* Last_Virtual_Screen */ + { 0x0000fed5, 24464 }, /* Terminate_Server */ + { 0x0000fee0, 22080 }, /* Pointer_Left */ + { 0x0000fee1, 22093 }, /* Pointer_Right */ + { 0x0000fee2, 22107 }, /* Pointer_Up */ + { 0x0000fee3, 21925 }, /* Pointer_Down */ + { 0x0000fee4, 22118 }, /* Pointer_UpLeft */ + { 0x0000fee5, 22133 }, /* Pointer_UpRight */ + { 0x0000fee6, 21938 }, /* Pointer_DownLeft */ + { 0x0000fee7, 21955 }, /* Pointer_DownRight */ + { 0x0000fee8, 21753 }, /* Pointer_Button_Dflt */ + { 0x0000fee9, 21673 }, /* Pointer_Button1 */ + { 0x0000feea, 21689 }, /* Pointer_Button2 */ + { 0x0000feeb, 21705 }, /* Pointer_Button3 */ + { 0x0000feec, 21721 }, /* Pointer_Button4 */ + { 0x0000feed, 21737 }, /* Pointer_Button5 */ + { 0x0000feee, 21863 }, /* Pointer_DblClick_Dflt */ + { 0x0000feef, 21773 }, /* Pointer_DblClick1 */ + { 0x0000fef0, 21791 }, /* Pointer_DblClick2 */ + { 0x0000fef1, 21809 }, /* Pointer_DblClick3 */ + { 0x0000fef2, 21827 }, /* Pointer_DblClick4 */ + { 0x0000fef3, 21845 }, /* Pointer_DblClick5 */ + { 0x0000fef4, 22043 }, /* Pointer_Drag_Dflt */ + { 0x0000fef5, 21973 }, /* Pointer_Drag1 */ + { 0x0000fef6, 21987 }, /* Pointer_Drag2 */ + { 0x0000fef7, 22001 }, /* Pointer_Drag3 */ + { 0x0000fef8, 22015 }, /* Pointer_Drag4 */ + { 0x0000fef9, 22061 }, /* Pointer_EnableKeys */ + { 0x0000fefa, 21654 }, /* Pointer_Accelerate */ + { 0x0000fefb, 21885 }, /* Pointer_DfltBtnNext */ + { 0x0000fefc, 21905 }, /* Pointer_DfltBtnPrev */ + { 0x0000fefd, 22029 }, /* Pointer_Drag5 */ { 0x0000ff08, 3362 }, /* BackSpace */ - { 0x0000ff09, 24298 }, /* Tab */ - { 0x0000ff0a, 19434 }, /* Linefeed */ + { 0x0000ff09, 24380 }, /* Tab */ + { 0x0000ff0a, 19516 }, /* Linefeed */ { 0x0000ff0b, 8633 }, /* Clear */ - { 0x0000ff0d, 22366 }, /* Return */ - { 0x0000ff13, 21481 }, /* Pause */ - { 0x0000ff14, 22699 }, /* Scroll_Lock */ - { 0x0000ff15, 24279 }, /* Sys_Req */ - { 0x0000ff1b, 12057 }, /* Escape */ - { 0x0000ff20, 19811 }, /* Multi_key */ - { 0x0000ff21, 18745 }, /* Kanji */ - { 0x0000ff22, 19802 }, /* Muhenkan */ - { 0x0000ff23, 16614 }, /* Henkan_Mode */ - { 0x0000ff24, 22562 }, /* Romaji */ - { 0x0000ff25, 16635 }, /* Hiragana */ - { 0x0000ff26, 18770 }, /* Katakana */ - { 0x0000ff27, 16644 }, /* Hiragana_Katakana */ - { 0x0000ff28, 29271 }, /* Zenkaku */ - { 0x0000ff29, 16048 }, /* Hankaku */ - { 0x0000ff2a, 29279 }, /* Zenkaku_Hankaku */ - { 0x0000ff2b, 25752 }, /* Touroku */ - { 0x0000ff2c, 19698 }, /* Massyo */ - { 0x0000ff2d, 18351 }, /* Kana_Lock */ - { 0x0000ff2e, 18562 }, /* Kana_Shift */ - { 0x0000ff2f, 11779 }, /* Eisu_Shift */ - { 0x0000ff30, 11790 }, /* Eisu_toggle */ - { 0x0000ff31, 14392 }, /* Hangul */ - { 0x0000ff32, 15780 }, /* Hangul_Start */ - { 0x0000ff33, 14511 }, /* Hangul_End */ - { 0x0000ff34, 14542 }, /* Hangul_Hanja */ - { 0x0000ff35, 15128 }, /* Hangul_Jamo */ - { 0x0000ff36, 15625 }, /* Hangul_Romaja */ + { 0x0000ff0d, 22448 }, /* Return */ + { 0x0000ff13, 21563 }, /* Pause */ + { 0x0000ff14, 22781 }, /* Scroll_Lock */ + { 0x0000ff15, 24361 }, /* Sys_Req */ + { 0x0000ff1b, 12139 }, /* Escape */ + { 0x0000ff20, 19893 }, /* Multi_key */ + { 0x0000ff21, 18827 }, /* Kanji */ + { 0x0000ff22, 19884 }, /* Muhenkan */ + { 0x0000ff23, 16696 }, /* Henkan_Mode */ + { 0x0000ff24, 22644 }, /* Romaji */ + { 0x0000ff25, 16717 }, /* Hiragana */ + { 0x0000ff26, 18852 }, /* Katakana */ + { 0x0000ff27, 16726 }, /* Hiragana_Katakana */ + { 0x0000ff28, 31379 }, /* Zenkaku */ + { 0x0000ff29, 16130 }, /* Hankaku */ + { 0x0000ff2a, 31387 }, /* Zenkaku_Hankaku */ + { 0x0000ff2b, 25834 }, /* Touroku */ + { 0x0000ff2c, 19780 }, /* Massyo */ + { 0x0000ff2d, 18433 }, /* Kana_Lock */ + { 0x0000ff2e, 18644 }, /* Kana_Shift */ + { 0x0000ff2f, 11861 }, /* Eisu_Shift */ + { 0x0000ff30, 11872 }, /* Eisu_toggle */ + { 0x0000ff31, 14474 }, /* Hangul */ + { 0x0000ff32, 15862 }, /* Hangul_Start */ + { 0x0000ff33, 14593 }, /* Hangul_End */ + { 0x0000ff34, 14624 }, /* Hangul_Hanja */ + { 0x0000ff35, 15210 }, /* Hangul_Jamo */ + { 0x0000ff36, 15707 }, /* Hangul_Romaja */ { 0x0000ff37, 8654 }, /* Codeinput */ - { 0x0000ff38, 15140 }, /* Hangul_Jeonja */ - { 0x0000ff39, 14445 }, /* Hangul_Banja */ - { 0x0000ff3a, 15420 }, /* Hangul_PreHanja */ - { 0x0000ff3b, 15403 }, /* Hangul_PostHanja */ - { 0x0000ff3c, 23012 }, /* SingleCandidate */ - { 0x0000ff3d, 19821 }, /* MultipleCandidate */ - { 0x0000ff3e, 22100 }, /* PreviousCandidate */ - { 0x0000ff3f, 15674 }, /* Hangul_Special */ - { 0x0000ff50, 16662 }, /* Home */ - { 0x0000ff51, 19244 }, /* Left */ - { 0x0000ff52, 26384 }, /* Up */ - { 0x0000ff53, 22373 }, /* Right */ - { 0x0000ff54, 11327 }, /* Down */ - { 0x0000ff55, 22124 }, /* Prior */ - { 0x0000ff56, 20023 }, /* Next */ - { 0x0000ff57, 11936 }, /* End */ + { 0x0000ff38, 15222 }, /* Hangul_Jeonja */ + { 0x0000ff39, 14527 }, /* Hangul_Banja */ + { 0x0000ff3a, 15502 }, /* Hangul_PreHanja */ + { 0x0000ff3b, 15485 }, /* Hangul_PostHanja */ + { 0x0000ff3c, 23094 }, /* SingleCandidate */ + { 0x0000ff3d, 19903 }, /* MultipleCandidate */ + { 0x0000ff3e, 22182 }, /* PreviousCandidate */ + { 0x0000ff3f, 15756 }, /* Hangul_Special */ + { 0x0000ff50, 16744 }, /* Home */ + { 0x0000ff51, 19326 }, /* Left */ + { 0x0000ff52, 26466 }, /* Up */ + { 0x0000ff53, 22455 }, /* Right */ + { 0x0000ff54, 11409 }, /* Down */ + { 0x0000ff55, 22206 }, /* Prior */ + { 0x0000ff56, 20105 }, /* Next */ + { 0x0000ff57, 12018 }, /* End */ { 0x0000ff58, 3404 }, /* Begin */ - { 0x0000ff60, 22727 }, /* Select */ - { 0x0000ff61, 22118 }, /* Print */ - { 0x0000ff62, 12117 }, /* Execute */ - { 0x0000ff63, 17284 }, /* Insert */ - { 0x0000ff65, 26357 }, /* Undo */ - { 0x0000ff66, 22326 }, /* Redo */ - { 0x0000ff67, 19705 }, /* Menu */ - { 0x0000ff68, 12531 }, /* Find */ + { 0x0000ff60, 22809 }, /* Select */ + { 0x0000ff61, 22200 }, /* Print */ + { 0x0000ff62, 12199 }, /* Execute */ + { 0x0000ff63, 17366 }, /* Insert */ + { 0x0000ff65, 26439 }, /* Undo */ + { 0x0000ff66, 22408 }, /* Redo */ + { 0x0000ff67, 19787 }, /* Menu */ + { 0x0000ff68, 12613 }, /* Find */ { 0x0000ff69, 8489 }, /* Cancel */ - { 0x0000ff6a, 16602 }, /* Help */ + { 0x0000ff6a, 16684 }, /* Help */ { 0x0000ff6b, 8377 }, /* Break */ - { 0x0000ff7e, 19747 }, /* Mode_switch */ - { 0x0000ff7f, 20169 }, /* Num_Lock */ - { 0x0000ff80, 19074 }, /* KP_Space */ - { 0x0000ff89, 19095 }, /* KP_Tab */ - { 0x0000ff8d, 18931 }, /* KP_Enter */ - { 0x0000ff91, 18949 }, /* KP_F1 */ - { 0x0000ff92, 18955 }, /* KP_F2 */ - { 0x0000ff93, 18961 }, /* KP_F3 */ - { 0x0000ff94, 18967 }, /* KP_F4 */ - { 0x0000ff95, 18973 }, /* KP_Home */ - { 0x0000ff96, 18991 }, /* KP_Left */ - { 0x0000ff97, 19102 }, /* KP_Up */ - { 0x0000ff98, 19052 }, /* KP_Right */ - { 0x0000ff99, 18916 }, /* KP_Down */ - { 0x0000ff9a, 19043 }, /* KP_Prior */ - { 0x0000ff9b, 19011 }, /* KP_Next */ - { 0x0000ff9c, 18924 }, /* KP_End */ - { 0x0000ff9d, 18876 }, /* KP_Begin */ - { 0x0000ff9e, 18981 }, /* KP_Insert */ - { 0x0000ff9f, 18896 }, /* KP_Delete */ - { 0x0000ffaa, 18999 }, /* KP_Multiply */ - { 0x0000ffab, 18858 }, /* KP_Add */ - { 0x0000ffac, 19061 }, /* KP_Separator */ - { 0x0000ffad, 19083 }, /* KP_Subtract */ - { 0x0000ffae, 18885 }, /* KP_Decimal */ - { 0x0000ffaf, 18906 }, /* KP_Divide */ - { 0x0000ffb0, 18808 }, /* KP_0 */ - { 0x0000ffb1, 18813 }, /* KP_1 */ - { 0x0000ffb2, 18818 }, /* KP_2 */ - { 0x0000ffb3, 18823 }, /* KP_3 */ - { 0x0000ffb4, 18828 }, /* KP_4 */ - { 0x0000ffb5, 18833 }, /* KP_5 */ - { 0x0000ffb6, 18838 }, /* KP_6 */ - { 0x0000ffb7, 18843 }, /* KP_7 */ - { 0x0000ffb8, 18848 }, /* KP_8 */ - { 0x0000ffb9, 18853 }, /* KP_9 */ - { 0x0000ffbd, 18940 }, /* KP_Equal */ - { 0x0000ffbe, 12159 }, /* F1 */ - { 0x0000ffbf, 12202 }, /* F2 */ - { 0x0000ffc0, 12245 }, /* F3 */ - { 0x0000ffc1, 12272 }, /* F4 */ - { 0x0000ffc2, 12275 }, /* F5 */ - { 0x0000ffc3, 12278 }, /* F6 */ - { 0x0000ffc4, 12281 }, /* F7 */ - { 0x0000ffc5, 12284 }, /* F8 */ - { 0x0000ffc6, 12287 }, /* F9 */ - { 0x0000ffc7, 12162 }, /* F10 */ - { 0x0000ffc8, 12166 }, /* F11 */ - { 0x0000ffc9, 12170 }, /* F12 */ - { 0x0000ffca, 12174 }, /* F13 */ - { 0x0000ffcb, 12178 }, /* F14 */ - { 0x0000ffcc, 12182 }, /* F15 */ - { 0x0000ffcd, 12186 }, /* F16 */ - { 0x0000ffce, 12190 }, /* F17 */ - { 0x0000ffcf, 12194 }, /* F18 */ - { 0x0000ffd0, 12198 }, /* F19 */ - { 0x0000ffd1, 12205 }, /* F20 */ - { 0x0000ffd2, 12209 }, /* F21 */ - { 0x0000ffd3, 12213 }, /* F22 */ - { 0x0000ffd4, 12217 }, /* F23 */ - { 0x0000ffd5, 12221 }, /* F24 */ - { 0x0000ffd6, 12225 }, /* F25 */ - { 0x0000ffd7, 12229 }, /* F26 */ - { 0x0000ffd8, 12233 }, /* F27 */ - { 0x0000ffd9, 12237 }, /* F28 */ - { 0x0000ffda, 12241 }, /* F29 */ - { 0x0000ffdb, 12248 }, /* F30 */ - { 0x0000ffdc, 12252 }, /* F31 */ - { 0x0000ffdd, 12256 }, /* F32 */ - { 0x0000ffde, 12260 }, /* F33 */ - { 0x0000ffdf, 12264 }, /* F34 */ - { 0x0000ffe0, 12268 }, /* F35 */ - { 0x0000ffe1, 22946 }, /* Shift_L */ - { 0x0000ffe2, 22965 }, /* Shift_R */ - { 0x0000ffe3, 8697 }, /* Control_L */ - { 0x0000ffe4, 8707 }, /* Control_R */ + { 0x0000ff7e, 19829 }, /* Mode_switch */ + { 0x0000ff7f, 20251 }, /* Num_Lock */ + { 0x0000ff80, 19156 }, /* KP_Space */ + { 0x0000ff89, 19177 }, /* KP_Tab */ + { 0x0000ff8d, 19013 }, /* KP_Enter */ + { 0x0000ff91, 19031 }, /* KP_F1 */ + { 0x0000ff92, 19037 }, /* KP_F2 */ + { 0x0000ff93, 19043 }, /* KP_F3 */ + { 0x0000ff94, 19049 }, /* KP_F4 */ + { 0x0000ff95, 19055 }, /* KP_Home */ + { 0x0000ff96, 19073 }, /* KP_Left */ + { 0x0000ff97, 19184 }, /* KP_Up */ + { 0x0000ff98, 19134 }, /* KP_Right */ + { 0x0000ff99, 18998 }, /* KP_Down */ + { 0x0000ff9a, 19125 }, /* KP_Prior */ + { 0x0000ff9b, 19093 }, /* KP_Next */ + { 0x0000ff9c, 19006 }, /* KP_End */ + { 0x0000ff9d, 18958 }, /* KP_Begin */ + { 0x0000ff9e, 19063 }, /* KP_Insert */ + { 0x0000ff9f, 18978 }, /* KP_Delete */ + { 0x0000ffaa, 19081 }, /* KP_Multiply */ + { 0x0000ffab, 18940 }, /* KP_Add */ + { 0x0000ffac, 19143 }, /* KP_Separator */ + { 0x0000ffad, 19165 }, /* KP_Subtract */ + { 0x0000ffae, 18967 }, /* KP_Decimal */ + { 0x0000ffaf, 18988 }, /* KP_Divide */ + { 0x0000ffb0, 18890 }, /* KP_0 */ + { 0x0000ffb1, 18895 }, /* KP_1 */ + { 0x0000ffb2, 18900 }, /* KP_2 */ + { 0x0000ffb3, 18905 }, /* KP_3 */ + { 0x0000ffb4, 18910 }, /* KP_4 */ + { 0x0000ffb5, 18915 }, /* KP_5 */ + { 0x0000ffb6, 18920 }, /* KP_6 */ + { 0x0000ffb7, 18925 }, /* KP_7 */ + { 0x0000ffb8, 18930 }, /* KP_8 */ + { 0x0000ffb9, 18935 }, /* KP_9 */ + { 0x0000ffbd, 19022 }, /* KP_Equal */ + { 0x0000ffbe, 12241 }, /* F1 */ + { 0x0000ffbf, 12284 }, /* F2 */ + { 0x0000ffc0, 12327 }, /* F3 */ + { 0x0000ffc1, 12354 }, /* F4 */ + { 0x0000ffc2, 12357 }, /* F5 */ + { 0x0000ffc3, 12360 }, /* F6 */ + { 0x0000ffc4, 12363 }, /* F7 */ + { 0x0000ffc5, 12366 }, /* F8 */ + { 0x0000ffc6, 12369 }, /* F9 */ + { 0x0000ffc7, 12244 }, /* F10 */ + { 0x0000ffc8, 12248 }, /* F11 */ + { 0x0000ffc9, 12252 }, /* F12 */ + { 0x0000ffca, 12256 }, /* F13 */ + { 0x0000ffcb, 12260 }, /* F14 */ + { 0x0000ffcc, 12264 }, /* F15 */ + { 0x0000ffcd, 12268 }, /* F16 */ + { 0x0000ffce, 12272 }, /* F17 */ + { 0x0000ffcf, 12276 }, /* F18 */ + { 0x0000ffd0, 12280 }, /* F19 */ + { 0x0000ffd1, 12287 }, /* F20 */ + { 0x0000ffd2, 12291 }, /* F21 */ + { 0x0000ffd3, 12295 }, /* F22 */ + { 0x0000ffd4, 12299 }, /* F23 */ + { 0x0000ffd5, 12303 }, /* F24 */ + { 0x0000ffd6, 12307 }, /* F25 */ + { 0x0000ffd7, 12311 }, /* F26 */ + { 0x0000ffd8, 12315 }, /* F27 */ + { 0x0000ffd9, 12319 }, /* F28 */ + { 0x0000ffda, 12323 }, /* F29 */ + { 0x0000ffdb, 12330 }, /* F30 */ + { 0x0000ffdc, 12334 }, /* F31 */ + { 0x0000ffdd, 12338 }, /* F32 */ + { 0x0000ffde, 12342 }, /* F33 */ + { 0x0000ffdf, 12346 }, /* F34 */ + { 0x0000ffe0, 12350 }, /* F35 */ + { 0x0000ffe1, 23028 }, /* Shift_L */ + { 0x0000ffe2, 23047 }, /* Shift_R */ + { 0x0000ffe3, 8779 }, /* Control_L */ + { 0x0000ffe4, 8789 }, /* Control_R */ { 0x0000ffe5, 8496 }, /* Caps_Lock */ - { 0x0000ffe6, 22954 }, /* Shift_Lock */ - { 0x0000ffe7, 19710 }, /* Meta_L */ - { 0x0000ffe8, 19717 }, /* Meta_R */ + { 0x0000ffe6, 23036 }, /* Shift_Lock */ + { 0x0000ffe7, 19792 }, /* Meta_L */ + { 0x0000ffe8, 19799 }, /* Meta_R */ { 0x0000ffe9, 880 }, /* Alt_L */ { 0x0000ffea, 886 }, /* Alt_R */ - { 0x0000ffeb, 24263 }, /* Super_L */ - { 0x0000ffec, 24271 }, /* Super_R */ - { 0x0000ffed, 17046 }, /* Hyper_L */ - { 0x0000ffee, 17054 }, /* Hyper_R */ + { 0x0000ffeb, 24345 }, /* Super_L */ + { 0x0000ffec, 24353 }, /* Super_R */ + { 0x0000ffed, 17128 }, /* Hyper_L */ + { 0x0000ffee, 17136 }, /* Hyper_R */ { 0x0000fff1, 3642 }, /* braille_dot_1 */ { 0x0000fff2, 3671 }, /* braille_dot_2 */ { 0x0000fff3, 3685 }, /* braille_dot_3 */ @@ -6136,60 +6737,65 @@ static const struct name_keysym keysym_to_name[] = { { 0x0000fff8, 3755 }, /* braille_dot_8 */ { 0x0000fff9, 3769 }, /* braille_dot_9 */ { 0x0000fffa, 3656 }, /* braille_dot_10 */ - { 0x0000ffff, 11160 }, /* Delete */ - { 0x00ffffff, 26531 }, /* VoidSymbol */ - { 0x0100012c, 17117 }, /* Ibreve */ - { 0x0100012d, 17124 }, /* ibreve */ - { 0x01000174, 26563 }, /* Wcircumflex */ - { 0x01000175, 26575 }, /* wcircumflex */ - { 0x01000176, 29120 }, /* Ycircumflex */ - { 0x01000177, 29132 }, /* ycircumflex */ - { 0x0100018f, 22649 }, /* SCHWA */ - { 0x0100019f, 20218 }, /* Obarred */ - { 0x010001a0, 20553 }, /* Ohorn */ - { 0x010001a1, 20559 }, /* ohorn */ - { 0x010001af, 25997 }, /* Uhorn */ - { 0x010001b0, 26003 }, /* uhorn */ - { 0x010001b5, 29322 }, /* Zstroke */ - { 0x010001b6, 29330 }, /* zstroke */ - { 0x010001b7, 12147 }, /* EZH */ - { 0x010001d1, 20254 }, /* Ocaron */ - { 0x010001d2, 20261 }, /* ocaron */ - { 0x010001e6, 12703 }, /* Gcaron */ - { 0x010001e7, 12710 }, /* gcaron */ - { 0x01000259, 22655 }, /* schwa */ - { 0x01000275, 20226 }, /* obarred */ - { 0x01000292, 12151 }, /* ezh */ - { 0x01000492, 9236 }, /* Cyrillic_GHE_bar */ - { 0x01000493, 9253 }, /* Cyrillic_ghe_bar */ - { 0x01000496, 10274 }, /* Cyrillic_ZHE_descender */ - { 0x01000497, 10297 }, /* Cyrillic_zhe_descender */ - { 0x0100049a, 9528 }, /* Cyrillic_KA_descender */ - { 0x0100049b, 9550 }, /* Cyrillic_ka_descender */ - { 0x0100049c, 9572 }, /* Cyrillic_KA_vertstroke */ - { 0x0100049d, 9595 }, /* Cyrillic_ka_vertstroke */ - { 0x010004a2, 9118 }, /* Cyrillic_EN_descender */ - { 0x010004a3, 9140 }, /* Cyrillic_en_descender */ - { 0x010004ae, 10036 }, /* Cyrillic_U_straight */ - { 0x010004af, 10056 }, /* Cyrillic_u_straight */ - { 0x010004b0, 10076 }, /* Cyrillic_U_straight_bar */ - { 0x010004b1, 10100 }, /* Cyrillic_u_straight_bar */ - { 0x010004b2, 9294 }, /* Cyrillic_HA_descender */ - { 0x010004b3, 9316 }, /* Cyrillic_ha_descender */ - { 0x010004b6, 8854 }, /* Cyrillic_CHE_descender */ - { 0x010004b7, 8877 }, /* Cyrillic_che_descender */ - { 0x010004b8, 8900 }, /* Cyrillic_CHE_vertstroke */ - { 0x010004b9, 8924 }, /* Cyrillic_che_vertstroke */ - { 0x010004ba, 9832 }, /* Cyrillic_SHHA */ - { 0x010004bb, 9846 }, /* Cyrillic_shha */ - { 0x010004d8, 9746 }, /* Cyrillic_SCHWA */ - { 0x010004d9, 9761 }, /* Cyrillic_schwa */ - { 0x010004e2, 9396 }, /* Cyrillic_I_macron */ - { 0x010004e3, 9414 }, /* Cyrillic_i_macron */ - { 0x010004e8, 9692 }, /* Cyrillic_O_bar */ - { 0x010004e9, 9707 }, /* Cyrillic_o_bar */ - { 0x010004ee, 10000 }, /* Cyrillic_U_macron */ - { 0x010004ef, 10018 }, /* Cyrillic_u_macron */ + { 0x0000ffff, 11242 }, /* Delete */ + { 0x00ffffff, 26613 }, /* VoidSymbol */ + { 0x0100012c, 17199 }, /* Ibreve */ + { 0x0100012d, 17206 }, /* ibreve */ + { 0x01000174, 26645 }, /* Wcircumflex */ + { 0x01000175, 26657 }, /* wcircumflex */ + { 0x01000176, 31228 }, /* Ycircumflex */ + { 0x01000177, 31240 }, /* ycircumflex */ + { 0x0100018f, 22731 }, /* SCHWA */ + { 0x0100019f, 20300 }, /* Obarred */ + { 0x010001a0, 20635 }, /* Ohorn */ + { 0x010001a1, 20641 }, /* ohorn */ + { 0x010001af, 26079 }, /* Uhorn */ + { 0x010001b0, 26085 }, /* uhorn */ + { 0x010001b5, 31430 }, /* Zstroke */ + { 0x010001b6, 31438 }, /* zstroke */ + { 0x010001b7, 12229 }, /* EZH */ + { 0x010001d1, 20336 }, /* Ocaron */ + { 0x010001d2, 20343 }, /* ocaron */ + { 0x010001e6, 12785 }, /* Gcaron */ + { 0x010001e7, 12792 }, /* gcaron */ + { 0x01000259, 22737 }, /* schwa */ + { 0x01000275, 20308 }, /* obarred */ + { 0x01000292, 12233 }, /* ezh */ + { 0x01000300, 8715 }, /* combining_grave */ + { 0x01000301, 8680 }, /* combining_acute */ + { 0x01000303, 8746 }, /* combining_tilde */ + { 0x01000309, 8731 }, /* combining_hook */ + { 0x01000323, 8696 }, /* combining_belowdot */ + { 0x01000492, 9318 }, /* Cyrillic_GHE_bar */ + { 0x01000493, 9335 }, /* Cyrillic_ghe_bar */ + { 0x01000496, 10356 }, /* Cyrillic_ZHE_descender */ + { 0x01000497, 10379 }, /* Cyrillic_zhe_descender */ + { 0x0100049a, 9610 }, /* Cyrillic_KA_descender */ + { 0x0100049b, 9632 }, /* Cyrillic_ka_descender */ + { 0x0100049c, 9654 }, /* Cyrillic_KA_vertstroke */ + { 0x0100049d, 9677 }, /* Cyrillic_ka_vertstroke */ + { 0x010004a2, 9200 }, /* Cyrillic_EN_descender */ + { 0x010004a3, 9222 }, /* Cyrillic_en_descender */ + { 0x010004ae, 10118 }, /* Cyrillic_U_straight */ + { 0x010004af, 10138 }, /* Cyrillic_u_straight */ + { 0x010004b0, 10158 }, /* Cyrillic_U_straight_bar */ + { 0x010004b1, 10182 }, /* Cyrillic_u_straight_bar */ + { 0x010004b2, 9376 }, /* Cyrillic_HA_descender */ + { 0x010004b3, 9398 }, /* Cyrillic_ha_descender */ + { 0x010004b6, 8936 }, /* Cyrillic_CHE_descender */ + { 0x010004b7, 8959 }, /* Cyrillic_che_descender */ + { 0x010004b8, 8982 }, /* Cyrillic_CHE_vertstroke */ + { 0x010004b9, 9006 }, /* Cyrillic_che_vertstroke */ + { 0x010004ba, 9914 }, /* Cyrillic_SHHA */ + { 0x010004bb, 9928 }, /* Cyrillic_shha */ + { 0x010004d8, 9828 }, /* Cyrillic_SCHWA */ + { 0x010004d9, 9843 }, /* Cyrillic_schwa */ + { 0x010004e2, 9478 }, /* Cyrillic_I_macron */ + { 0x010004e3, 9496 }, /* Cyrillic_i_macron */ + { 0x010004e8, 9774 }, /* Cyrillic_O_bar */ + { 0x010004e9, 9789 }, /* Cyrillic_o_bar */ + { 0x010004ee, 10082 }, /* Cyrillic_U_macron */ + { 0x010004ef, 10100 }, /* Cyrillic_u_macron */ { 0x01000531, 2124 }, /* Armenian_AYB */ { 0x01000532, 2150 }, /* Armenian_BEN */ { 0x01000533, 2374 }, /* Armenian_GIM */ @@ -6301,162 +6907,162 @@ static const struct name_keysym keysym_to_name[] = { { 0x010006ba, 1642 }, /* Arabic_noon_ghunna */ { 0x010006be, 1442 }, /* Arabic_heh_doachashmee */ { 0x010006c1, 1465 }, /* Arabic_heh_goal */ - { 0x010006cc, 12390 }, /* Farsi_yeh */ + { 0x010006cc, 12472 }, /* Farsi_yeh */ { 0x010006d2, 1996 }, /* Arabic_yeh_baree */ { 0x010006d4, 1242 }, /* Arabic_fullstop */ - { 0x010006f0, 12310 }, /* Farsi_0 */ - { 0x010006f1, 12318 }, /* Farsi_1 */ - { 0x010006f2, 12326 }, /* Farsi_2 */ - { 0x010006f3, 12334 }, /* Farsi_3 */ - { 0x010006f4, 12342 }, /* Farsi_4 */ - { 0x010006f5, 12350 }, /* Farsi_5 */ - { 0x010006f6, 12358 }, /* Farsi_6 */ - { 0x010006f7, 12366 }, /* Farsi_7 */ - { 0x010006f8, 12374 }, /* Farsi_8 */ - { 0x010006f9, 12382 }, /* Farsi_9 */ - { 0x01000d82, 23484 }, /* Sinh_ng */ - { 0x01000d83, 23278 }, /* Sinh_h2 */ - { 0x01000d85, 23047 }, /* Sinh_a */ - { 0x01000d86, 23054 }, /* Sinh_aa */ - { 0x01000d87, 23071 }, /* Sinh_ae */ - { 0x01000d88, 23088 }, /* Sinh_aee */ - { 0x01000d89, 23294 }, /* Sinh_i */ - { 0x01000d8a, 23309 }, /* Sinh_ii */ - { 0x01000d8b, 23695 }, /* Sinh_u */ - { 0x01000d8c, 23710 }, /* Sinh_uu */ - { 0x01000d8d, 23594 }, /* Sinh_ri */ - { 0x01000d8e, 23602 }, /* Sinh_rii */ - { 0x01000d8f, 23403 }, /* Sinh_lu */ - { 0x01000d90, 23420 }, /* Sinh_luu */ - { 0x01000d91, 23221 }, /* Sinh_e */ - { 0x01000d92, 23236 }, /* Sinh_ee */ - { 0x01000d93, 23107 }, /* Sinh_ai */ - { 0x01000d94, 23537 }, /* Sinh_o */ - { 0x01000d95, 23552 }, /* Sinh_oo */ - { 0x01000d96, 23132 }, /* Sinh_au */ - { 0x01000d9a, 23353 }, /* Sinh_ka */ - { 0x01000d9b, 23361 }, /* Sinh_kha */ - { 0x01000d9c, 23261 }, /* Sinh_ga */ - { 0x01000d9d, 23269 }, /* Sinh_gha */ - { 0x01000d9e, 23492 }, /* Sinh_ng2 */ - { 0x01000d9f, 23501 }, /* Sinh_nga */ - { 0x01000da0, 23166 }, /* Sinh_ca */ - { 0x01000da1, 23174 }, /* Sinh_cha */ - { 0x01000da2, 23326 }, /* Sinh_ja */ - { 0x01000da3, 23334 }, /* Sinh_jha */ - { 0x01000da4, 23528 }, /* Sinh_nya */ - { 0x01000da5, 23343 }, /* Sinh_jnya */ - { 0x01000da6, 23510 }, /* Sinh_nja */ - { 0x01000da7, 23676 }, /* Sinh_tta */ - { 0x01000da8, 23685 }, /* Sinh_ttha */ - { 0x01000da9, 23183 }, /* Sinh_dda */ - { 0x01000daa, 23192 }, /* Sinh_ddha */ - { 0x01000dab, 23519 }, /* Sinh_nna */ - { 0x01000dac, 23464 }, /* Sinh_ndda */ - { 0x01000dad, 23657 }, /* Sinh_tha */ - { 0x01000dae, 23666 }, /* Sinh_thha */ - { 0x01000daf, 23202 }, /* Sinh_dha */ - { 0x01000db0, 23211 }, /* Sinh_dhha */ - { 0x01000db1, 23456 }, /* Sinh_na */ - { 0x01000db3, 23474 }, /* Sinh_ndha */ - { 0x01000db4, 23569 }, /* Sinh_pa */ - { 0x01000db5, 23577 }, /* Sinh_pha */ - { 0x01000db6, 23149 }, /* Sinh_ba */ - { 0x01000db7, 23157 }, /* Sinh_bha */ - { 0x01000db8, 23439 }, /* Sinh_ma */ - { 0x01000db9, 23447 }, /* Sinh_mba */ - { 0x01000dba, 23735 }, /* Sinh_ya */ - { 0x01000dbb, 23586 }, /* Sinh_ra */ - { 0x01000dbd, 23386 }, /* Sinh_la */ - { 0x01000dc0, 23727 }, /* Sinh_va */ - { 0x01000dc1, 23638 }, /* Sinh_sha */ - { 0x01000dc2, 23647 }, /* Sinh_ssha */ - { 0x01000dc3, 23630 }, /* Sinh_sa */ - { 0x01000dc4, 23286 }, /* Sinh_ha */ - { 0x01000dc5, 23394 }, /* Sinh_lla */ - { 0x01000dc6, 23253 }, /* Sinh_fa */ - { 0x01000dca, 23124 }, /* Sinh_al */ - { 0x01000dcf, 23062 }, /* Sinh_aa2 */ - { 0x01000dd0, 23079 }, /* Sinh_ae2 */ - { 0x01000dd1, 23097 }, /* Sinh_aee2 */ - { 0x01000dd2, 23301 }, /* Sinh_i2 */ - { 0x01000dd3, 23317 }, /* Sinh_ii2 */ - { 0x01000dd4, 23702 }, /* Sinh_u2 */ - { 0x01000dd6, 23718 }, /* Sinh_uu2 */ - { 0x01000dd8, 23611 }, /* Sinh_ru2 */ - { 0x01000dd9, 23228 }, /* Sinh_e2 */ - { 0x01000dda, 23244 }, /* Sinh_ee2 */ - { 0x01000ddb, 23115 }, /* Sinh_ai2 */ - { 0x01000ddc, 23544 }, /* Sinh_o2 */ - { 0x01000ddd, 23560 }, /* Sinh_oo2 */ - { 0x01000dde, 23140 }, /* Sinh_au2 */ - { 0x01000ddf, 23411 }, /* Sinh_lu2 */ - { 0x01000df2, 23620 }, /* Sinh_ruu2 */ - { 0x01000df3, 23429 }, /* Sinh_luu2 */ - { 0x01000df4, 23370 }, /* Sinh_kunddaliya */ - { 0x010010d0, 12759 }, /* Georgian_an */ - { 0x010010d1, 12771 }, /* Georgian_ban */ - { 0x010010d2, 12875 }, /* Georgian_gan */ - { 0x010010d3, 12838 }, /* Georgian_don */ - { 0x010010d4, 12851 }, /* Georgian_en */ - { 0x010010d5, 13201 }, /* Georgian_vin */ - { 0x010010d6, 13239 }, /* Georgian_zen */ - { 0x010010d7, 13163 }, /* Georgian_tan */ - { 0x010010d8, 12966 }, /* Georgian_in */ - { 0x010010d9, 13005 }, /* Georgian_kan */ - { 0x010010da, 13032 }, /* Georgian_las */ - { 0x010010db, 13045 }, /* Georgian_man */ - { 0x010010dc, 13058 }, /* Georgian_nar */ - { 0x010010dd, 13071 }, /* Georgian_on */ - { 0x010010de, 13083 }, /* Georgian_par */ - { 0x010010df, 13252 }, /* Georgian_zhar */ - { 0x010010e0, 13123 }, /* Georgian_rae */ - { 0x010010e1, 13136 }, /* Georgian_san */ - { 0x010010e2, 13176 }, /* Georgian_tar */ - { 0x010010e3, 13189 }, /* Georgian_un */ - { 0x010010e4, 13096 }, /* Georgian_phar */ - { 0x010010e5, 13018 }, /* Georgian_khar */ - { 0x010010e6, 12888 }, /* Georgian_ghan */ - { 0x010010e7, 13110 }, /* Georgian_qar */ - { 0x010010e8, 13149 }, /* Georgian_shin */ - { 0x010010e9, 12811 }, /* Georgian_chin */ - { 0x010010ea, 12784 }, /* Georgian_can */ - { 0x010010eb, 12992 }, /* Georgian_jil */ - { 0x010010ec, 12825 }, /* Georgian_cil */ - { 0x010010ed, 12797 }, /* Georgian_char */ - { 0x010010ee, 13226 }, /* Georgian_xan */ - { 0x010010ef, 12978 }, /* Georgian_jhan */ - { 0x010010f0, 12902 }, /* Georgian_hae */ - { 0x010010f1, 12928 }, /* Georgian_he */ - { 0x010010f2, 12940 }, /* Georgian_hie */ - { 0x010010f3, 13214 }, /* Georgian_we */ - { 0x010010f4, 12915 }, /* Georgian_har */ - { 0x010010f5, 12953 }, /* Georgian_hoe */ - { 0x010010f6, 12863 }, /* Georgian_fi */ + { 0x010006f0, 12392 }, /* Farsi_0 */ + { 0x010006f1, 12400 }, /* Farsi_1 */ + { 0x010006f2, 12408 }, /* Farsi_2 */ + { 0x010006f3, 12416 }, /* Farsi_3 */ + { 0x010006f4, 12424 }, /* Farsi_4 */ + { 0x010006f5, 12432 }, /* Farsi_5 */ + { 0x010006f6, 12440 }, /* Farsi_6 */ + { 0x010006f7, 12448 }, /* Farsi_7 */ + { 0x010006f8, 12456 }, /* Farsi_8 */ + { 0x010006f9, 12464 }, /* Farsi_9 */ + { 0x01000d82, 23566 }, /* Sinh_ng */ + { 0x01000d83, 23360 }, /* Sinh_h2 */ + { 0x01000d85, 23129 }, /* Sinh_a */ + { 0x01000d86, 23136 }, /* Sinh_aa */ + { 0x01000d87, 23153 }, /* Sinh_ae */ + { 0x01000d88, 23170 }, /* Sinh_aee */ + { 0x01000d89, 23376 }, /* Sinh_i */ + { 0x01000d8a, 23391 }, /* Sinh_ii */ + { 0x01000d8b, 23777 }, /* Sinh_u */ + { 0x01000d8c, 23792 }, /* Sinh_uu */ + { 0x01000d8d, 23676 }, /* Sinh_ri */ + { 0x01000d8e, 23684 }, /* Sinh_rii */ + { 0x01000d8f, 23485 }, /* Sinh_lu */ + { 0x01000d90, 23502 }, /* Sinh_luu */ + { 0x01000d91, 23303 }, /* Sinh_e */ + { 0x01000d92, 23318 }, /* Sinh_ee */ + { 0x01000d93, 23189 }, /* Sinh_ai */ + { 0x01000d94, 23619 }, /* Sinh_o */ + { 0x01000d95, 23634 }, /* Sinh_oo */ + { 0x01000d96, 23214 }, /* Sinh_au */ + { 0x01000d9a, 23435 }, /* Sinh_ka */ + { 0x01000d9b, 23443 }, /* Sinh_kha */ + { 0x01000d9c, 23343 }, /* Sinh_ga */ + { 0x01000d9d, 23351 }, /* Sinh_gha */ + { 0x01000d9e, 23574 }, /* Sinh_ng2 */ + { 0x01000d9f, 23583 }, /* Sinh_nga */ + { 0x01000da0, 23248 }, /* Sinh_ca */ + { 0x01000da1, 23256 }, /* Sinh_cha */ + { 0x01000da2, 23408 }, /* Sinh_ja */ + { 0x01000da3, 23416 }, /* Sinh_jha */ + { 0x01000da4, 23610 }, /* Sinh_nya */ + { 0x01000da5, 23425 }, /* Sinh_jnya */ + { 0x01000da6, 23592 }, /* Sinh_nja */ + { 0x01000da7, 23758 }, /* Sinh_tta */ + { 0x01000da8, 23767 }, /* Sinh_ttha */ + { 0x01000da9, 23265 }, /* Sinh_dda */ + { 0x01000daa, 23274 }, /* Sinh_ddha */ + { 0x01000dab, 23601 }, /* Sinh_nna */ + { 0x01000dac, 23546 }, /* Sinh_ndda */ + { 0x01000dad, 23739 }, /* Sinh_tha */ + { 0x01000dae, 23748 }, /* Sinh_thha */ + { 0x01000daf, 23284 }, /* Sinh_dha */ + { 0x01000db0, 23293 }, /* Sinh_dhha */ + { 0x01000db1, 23538 }, /* Sinh_na */ + { 0x01000db3, 23556 }, /* Sinh_ndha */ + { 0x01000db4, 23651 }, /* Sinh_pa */ + { 0x01000db5, 23659 }, /* Sinh_pha */ + { 0x01000db6, 23231 }, /* Sinh_ba */ + { 0x01000db7, 23239 }, /* Sinh_bha */ + { 0x01000db8, 23521 }, /* Sinh_ma */ + { 0x01000db9, 23529 }, /* Sinh_mba */ + { 0x01000dba, 23817 }, /* Sinh_ya */ + { 0x01000dbb, 23668 }, /* Sinh_ra */ + { 0x01000dbd, 23468 }, /* Sinh_la */ + { 0x01000dc0, 23809 }, /* Sinh_va */ + { 0x01000dc1, 23720 }, /* Sinh_sha */ + { 0x01000dc2, 23729 }, /* Sinh_ssha */ + { 0x01000dc3, 23712 }, /* Sinh_sa */ + { 0x01000dc4, 23368 }, /* Sinh_ha */ + { 0x01000dc5, 23476 }, /* Sinh_lla */ + { 0x01000dc6, 23335 }, /* Sinh_fa */ + { 0x01000dca, 23206 }, /* Sinh_al */ + { 0x01000dcf, 23144 }, /* Sinh_aa2 */ + { 0x01000dd0, 23161 }, /* Sinh_ae2 */ + { 0x01000dd1, 23179 }, /* Sinh_aee2 */ + { 0x01000dd2, 23383 }, /* Sinh_i2 */ + { 0x01000dd3, 23399 }, /* Sinh_ii2 */ + { 0x01000dd4, 23784 }, /* Sinh_u2 */ + { 0x01000dd6, 23800 }, /* Sinh_uu2 */ + { 0x01000dd8, 23693 }, /* Sinh_ru2 */ + { 0x01000dd9, 23310 }, /* Sinh_e2 */ + { 0x01000dda, 23326 }, /* Sinh_ee2 */ + { 0x01000ddb, 23197 }, /* Sinh_ai2 */ + { 0x01000ddc, 23626 }, /* Sinh_o2 */ + { 0x01000ddd, 23642 }, /* Sinh_oo2 */ + { 0x01000dde, 23222 }, /* Sinh_au2 */ + { 0x01000ddf, 23493 }, /* Sinh_lu2 */ + { 0x01000df2, 23702 }, /* Sinh_ruu2 */ + { 0x01000df3, 23511 }, /* Sinh_luu2 */ + { 0x01000df4, 23452 }, /* Sinh_kunddaliya */ + { 0x010010d0, 12841 }, /* Georgian_an */ + { 0x010010d1, 12853 }, /* Georgian_ban */ + { 0x010010d2, 12957 }, /* Georgian_gan */ + { 0x010010d3, 12920 }, /* Georgian_don */ + { 0x010010d4, 12933 }, /* Georgian_en */ + { 0x010010d5, 13283 }, /* Georgian_vin */ + { 0x010010d6, 13321 }, /* Georgian_zen */ + { 0x010010d7, 13245 }, /* Georgian_tan */ + { 0x010010d8, 13048 }, /* Georgian_in */ + { 0x010010d9, 13087 }, /* Georgian_kan */ + { 0x010010da, 13114 }, /* Georgian_las */ + { 0x010010db, 13127 }, /* Georgian_man */ + { 0x010010dc, 13140 }, /* Georgian_nar */ + { 0x010010dd, 13153 }, /* Georgian_on */ + { 0x010010de, 13165 }, /* Georgian_par */ + { 0x010010df, 13334 }, /* Georgian_zhar */ + { 0x010010e0, 13205 }, /* Georgian_rae */ + { 0x010010e1, 13218 }, /* Georgian_san */ + { 0x010010e2, 13258 }, /* Georgian_tar */ + { 0x010010e3, 13271 }, /* Georgian_un */ + { 0x010010e4, 13178 }, /* Georgian_phar */ + { 0x010010e5, 13100 }, /* Georgian_khar */ + { 0x010010e6, 12970 }, /* Georgian_ghan */ + { 0x010010e7, 13192 }, /* Georgian_qar */ + { 0x010010e8, 13231 }, /* Georgian_shin */ + { 0x010010e9, 12893 }, /* Georgian_chin */ + { 0x010010ea, 12866 }, /* Georgian_can */ + { 0x010010eb, 13074 }, /* Georgian_jil */ + { 0x010010ec, 12907 }, /* Georgian_cil */ + { 0x010010ed, 12879 }, /* Georgian_char */ + { 0x010010ee, 13308 }, /* Georgian_xan */ + { 0x010010ef, 13060 }, /* Georgian_jhan */ + { 0x010010f0, 12984 }, /* Georgian_hae */ + { 0x010010f1, 13010 }, /* Georgian_he */ + { 0x010010f2, 13022 }, /* Georgian_hie */ + { 0x010010f3, 13296 }, /* Georgian_we */ + { 0x010010f4, 12997 }, /* Georgian_har */ + { 0x010010f5, 13035 }, /* Georgian_hoe */ + { 0x010010f6, 12945 }, /* Georgian_fi */ { 0x01001e02, 3332 }, /* Babovedot */ { 0x01001e03, 3342 }, /* babovedot */ - { 0x01001e0a, 10324 }, /* Dabovedot */ - { 0x01001e0b, 10334 }, /* dabovedot */ - { 0x01001e1e, 12290 }, /* Fabovedot */ - { 0x01001e1f, 12300 }, /* fabovedot */ - { 0x01001e36, 19192 }, /* Lbelowdot */ - { 0x01001e37, 19202 }, /* lbelowdot */ - { 0x01001e40, 19537 }, /* Mabovedot */ - { 0x01001e41, 19547 }, /* mabovedot */ - { 0x01001e56, 21377 }, /* Pabovedot */ - { 0x01001e57, 21387 }, /* pabovedot */ - { 0x01001e60, 22583 }, /* Sabovedot */ - { 0x01001e61, 22593 }, /* sabovedot */ - { 0x01001e6a, 24302 }, /* Tabovedot */ - { 0x01001e6b, 24312 }, /* tabovedot */ - { 0x01001e80, 26609 }, /* Wgrave */ - { 0x01001e81, 26616 }, /* wgrave */ - { 0x01001e82, 26549 }, /* Wacute */ - { 0x01001e83, 26556 }, /* wacute */ - { 0x01001e84, 26587 }, /* Wdiaeresis */ - { 0x01001e85, 26598 }, /* wdiaeresis */ - { 0x01001e8a, 26635 }, /* Xabovedot */ - { 0x01001e8b, 26645 }, /* xabovedot */ + { 0x01001e0a, 10406 }, /* Dabovedot */ + { 0x01001e0b, 10416 }, /* dabovedot */ + { 0x01001e1e, 12372 }, /* Fabovedot */ + { 0x01001e1f, 12382 }, /* fabovedot */ + { 0x01001e36, 19274 }, /* Lbelowdot */ + { 0x01001e37, 19284 }, /* lbelowdot */ + { 0x01001e40, 19619 }, /* Mabovedot */ + { 0x01001e41, 19629 }, /* mabovedot */ + { 0x01001e56, 21459 }, /* Pabovedot */ + { 0x01001e57, 21469 }, /* pabovedot */ + { 0x01001e60, 22665 }, /* Sabovedot */ + { 0x01001e61, 22675 }, /* sabovedot */ + { 0x01001e6a, 24384 }, /* Tabovedot */ + { 0x01001e6b, 24394 }, /* tabovedot */ + { 0x01001e80, 26691 }, /* Wgrave */ + { 0x01001e81, 26698 }, /* wgrave */ + { 0x01001e82, 26631 }, /* Wacute */ + { 0x01001e83, 26638 }, /* wacute */ + { 0x01001e84, 26669 }, /* Wdiaeresis */ + { 0x01001e85, 26680 }, /* wdiaeresis */ + { 0x01001e8a, 26717 }, /* Xabovedot */ + { 0x01001e8b, 26727 }, /* xabovedot */ { 0x01001ea0, 416 }, /* Abelowdot */ { 0x01001ea1, 426 }, /* abelowdot */ { 0x01001ea2, 868 }, /* Ahook */ @@ -6481,116 +7087,116 @@ static const struct name_keysym keysym_to_name[] = { { 0x01001eb5, 571 }, /* abrevetilde */ { 0x01001eb6, 483 }, /* Abrevebelowdot */ { 0x01001eb7, 498 }, /* abrevebelowdot */ - { 0x01001eb8, 11462 }, /* Ebelowdot */ - { 0x01001eb9, 11472 }, /* ebelowdot */ - { 0x01001eba, 11738 }, /* Ehook */ - { 0x01001ebb, 11744 }, /* ehook */ - { 0x01001ebc, 12076 }, /* Etilde */ - { 0x01001ebd, 12083 }, /* etilde */ - { 0x01001ebe, 11520 }, /* Ecircumflexacute */ - { 0x01001ebf, 11537 }, /* ecircumflexacute */ - { 0x01001ec0, 11594 }, /* Ecircumflexgrave */ - { 0x01001ec1, 11611 }, /* ecircumflexgrave */ - { 0x01001ec2, 11628 }, /* Ecircumflexhook */ - { 0x01001ec3, 11644 }, /* ecircumflexhook */ - { 0x01001ec4, 11660 }, /* Ecircumflextilde */ - { 0x01001ec5, 11677 }, /* ecircumflextilde */ - { 0x01001ec6, 11554 }, /* Ecircumflexbelowdot */ - { 0x01001ec7, 11574 }, /* ecircumflexbelowdot */ - { 0x01001ec8, 17219 }, /* Ihook */ - { 0x01001ec9, 17225 }, /* ihook */ - { 0x01001eca, 17097 }, /* Ibelowdot */ - { 0x01001ecb, 17107 }, /* ibelowdot */ - { 0x01001ecc, 20234 }, /* Obelowdot */ - { 0x01001ecd, 20244 }, /* obelowdot */ - { 0x01001ece, 20541 }, /* Ohook */ - { 0x01001ecf, 20547 }, /* ohook */ - { 0x01001ed0, 20292 }, /* Ocircumflexacute */ - { 0x01001ed1, 20309 }, /* ocircumflexacute */ - { 0x01001ed2, 20366 }, /* Ocircumflexgrave */ - { 0x01001ed3, 20383 }, /* ocircumflexgrave */ - { 0x01001ed4, 20400 }, /* Ocircumflexhook */ - { 0x01001ed5, 20416 }, /* ocircumflexhook */ - { 0x01001ed6, 20432 }, /* Ocircumflextilde */ - { 0x01001ed7, 20449 }, /* ocircumflextilde */ - { 0x01001ed8, 20326 }, /* Ocircumflexbelowdot */ - { 0x01001ed9, 20346 }, /* ocircumflexbelowdot */ - { 0x01001eda, 20565 }, /* Ohornacute */ - { 0x01001edb, 20576 }, /* ohornacute */ - { 0x01001edc, 20615 }, /* Ohorngrave */ - { 0x01001edd, 20626 }, /* ohorngrave */ - { 0x01001ede, 20637 }, /* Ohornhook */ - { 0x01001edf, 20647 }, /* ohornhook */ - { 0x01001ee0, 20657 }, /* Ohorntilde */ - { 0x01001ee1, 20668 }, /* ohorntilde */ - { 0x01001ee2, 20587 }, /* Ohornbelowdot */ - { 0x01001ee3, 20601 }, /* ohornbelowdot */ - { 0x01001ee4, 25865 }, /* Ubelowdot */ - { 0x01001ee5, 25875 }, /* ubelowdot */ - { 0x01001ee6, 25985 }, /* Uhook */ - { 0x01001ee7, 25991 }, /* uhook */ - { 0x01001ee8, 26009 }, /* Uhornacute */ - { 0x01001ee9, 26020 }, /* uhornacute */ - { 0x01001eea, 26059 }, /* Uhorngrave */ - { 0x01001eeb, 26070 }, /* uhorngrave */ - { 0x01001eec, 26081 }, /* Uhornhook */ - { 0x01001eed, 26091 }, /* uhornhook */ - { 0x01001eee, 26101 }, /* Uhorntilde */ - { 0x01001eef, 26112 }, /* uhorntilde */ - { 0x01001ef0, 26031 }, /* Uhornbelowdot */ - { 0x01001ef1, 26045 }, /* uhornbelowdot */ - { 0x01001ef2, 29170 }, /* Ygrave */ - { 0x01001ef3, 29177 }, /* ygrave */ - { 0x01001ef4, 29100 }, /* Ybelowdot */ - { 0x01001ef5, 29110 }, /* ybelowdot */ - { 0x01001ef6, 29184 }, /* Yhook */ - { 0x01001ef7, 29190 }, /* yhook */ - { 0x01001ef8, 29196 }, /* Ytilde */ - { 0x01001ef9, 29203 }, /* ytilde */ - { 0x01002070, 29309 }, /* zerosuperior */ - { 0x01002074, 12632 }, /* foursuperior */ - { 0x01002075, 12594 }, /* fivesuperior */ - { 0x01002076, 23756 }, /* sixsuperior */ - { 0x01002077, 22932 }, /* sevensuperior */ - { 0x01002078, 11765 }, /* eightsuperior */ - { 0x01002079, 20062 }, /* ninesuperior */ - { 0x01002080, 29295 }, /* zerosubscript */ - { 0x01002081, 20742 }, /* onesubscript */ - { 0x01002082, 25812 }, /* twosubscript */ - { 0x01002083, 25556 }, /* threesubscript */ - { 0x01002084, 12618 }, /* foursubscript */ - { 0x01002085, 12580 }, /* fivesubscript */ - { 0x01002086, 23743 }, /* sixsubscript */ - { 0x01002087, 22917 }, /* sevensubscript */ - { 0x01002088, 11750 }, /* eightsubscript */ - { 0x01002089, 20048 }, /* ninesubscript */ - { 0x010020a0, 11694 }, /* EcuSign */ + { 0x01001eb8, 11544 }, /* Ebelowdot */ + { 0x01001eb9, 11554 }, /* ebelowdot */ + { 0x01001eba, 11820 }, /* Ehook */ + { 0x01001ebb, 11826 }, /* ehook */ + { 0x01001ebc, 12158 }, /* Etilde */ + { 0x01001ebd, 12165 }, /* etilde */ + { 0x01001ebe, 11602 }, /* Ecircumflexacute */ + { 0x01001ebf, 11619 }, /* ecircumflexacute */ + { 0x01001ec0, 11676 }, /* Ecircumflexgrave */ + { 0x01001ec1, 11693 }, /* ecircumflexgrave */ + { 0x01001ec2, 11710 }, /* Ecircumflexhook */ + { 0x01001ec3, 11726 }, /* ecircumflexhook */ + { 0x01001ec4, 11742 }, /* Ecircumflextilde */ + { 0x01001ec5, 11759 }, /* ecircumflextilde */ + { 0x01001ec6, 11636 }, /* Ecircumflexbelowdot */ + { 0x01001ec7, 11656 }, /* ecircumflexbelowdot */ + { 0x01001ec8, 17301 }, /* Ihook */ + { 0x01001ec9, 17307 }, /* ihook */ + { 0x01001eca, 17179 }, /* Ibelowdot */ + { 0x01001ecb, 17189 }, /* ibelowdot */ + { 0x01001ecc, 20316 }, /* Obelowdot */ + { 0x01001ecd, 20326 }, /* obelowdot */ + { 0x01001ece, 20623 }, /* Ohook */ + { 0x01001ecf, 20629 }, /* ohook */ + { 0x01001ed0, 20374 }, /* Ocircumflexacute */ + { 0x01001ed1, 20391 }, /* ocircumflexacute */ + { 0x01001ed2, 20448 }, /* Ocircumflexgrave */ + { 0x01001ed3, 20465 }, /* ocircumflexgrave */ + { 0x01001ed4, 20482 }, /* Ocircumflexhook */ + { 0x01001ed5, 20498 }, /* ocircumflexhook */ + { 0x01001ed6, 20514 }, /* Ocircumflextilde */ + { 0x01001ed7, 20531 }, /* ocircumflextilde */ + { 0x01001ed8, 20408 }, /* Ocircumflexbelowdot */ + { 0x01001ed9, 20428 }, /* ocircumflexbelowdot */ + { 0x01001eda, 20647 }, /* Ohornacute */ + { 0x01001edb, 20658 }, /* ohornacute */ + { 0x01001edc, 20697 }, /* Ohorngrave */ + { 0x01001edd, 20708 }, /* ohorngrave */ + { 0x01001ede, 20719 }, /* Ohornhook */ + { 0x01001edf, 20729 }, /* ohornhook */ + { 0x01001ee0, 20739 }, /* Ohorntilde */ + { 0x01001ee1, 20750 }, /* ohorntilde */ + { 0x01001ee2, 20669 }, /* Ohornbelowdot */ + { 0x01001ee3, 20683 }, /* ohornbelowdot */ + { 0x01001ee4, 25947 }, /* Ubelowdot */ + { 0x01001ee5, 25957 }, /* ubelowdot */ + { 0x01001ee6, 26067 }, /* Uhook */ + { 0x01001ee7, 26073 }, /* uhook */ + { 0x01001ee8, 26091 }, /* Uhornacute */ + { 0x01001ee9, 26102 }, /* uhornacute */ + { 0x01001eea, 26141 }, /* Uhorngrave */ + { 0x01001eeb, 26152 }, /* uhorngrave */ + { 0x01001eec, 26163 }, /* Uhornhook */ + { 0x01001eed, 26173 }, /* uhornhook */ + { 0x01001eee, 26183 }, /* Uhorntilde */ + { 0x01001eef, 26194 }, /* uhorntilde */ + { 0x01001ef0, 26113 }, /* Uhornbelowdot */ + { 0x01001ef1, 26127 }, /* uhornbelowdot */ + { 0x01001ef2, 31278 }, /* Ygrave */ + { 0x01001ef3, 31285 }, /* ygrave */ + { 0x01001ef4, 31208 }, /* Ybelowdot */ + { 0x01001ef5, 31218 }, /* ybelowdot */ + { 0x01001ef6, 31292 }, /* Yhook */ + { 0x01001ef7, 31298 }, /* yhook */ + { 0x01001ef8, 31304 }, /* Ytilde */ + { 0x01001ef9, 31311 }, /* ytilde */ + { 0x01002070, 31417 }, /* zerosuperior */ + { 0x01002074, 12714 }, /* foursuperior */ + { 0x01002075, 12676 }, /* fivesuperior */ + { 0x01002076, 23838 }, /* sixsuperior */ + { 0x01002077, 23014 }, /* sevensuperior */ + { 0x01002078, 11847 }, /* eightsuperior */ + { 0x01002079, 20144 }, /* ninesuperior */ + { 0x01002080, 31403 }, /* zerosubscript */ + { 0x01002081, 20824 }, /* onesubscript */ + { 0x01002082, 25894 }, /* twosubscript */ + { 0x01002083, 25638 }, /* threesubscript */ + { 0x01002084, 12700 }, /* foursubscript */ + { 0x01002085, 12662 }, /* fivesubscript */ + { 0x01002086, 23825 }, /* sixsubscript */ + { 0x01002087, 22999 }, /* sevensubscript */ + { 0x01002088, 11832 }, /* eightsubscript */ + { 0x01002089, 20130 }, /* ninesubscript */ + { 0x010020a0, 11776 }, /* EcuSign */ { 0x010020a1, 8670 }, /* ColonSign */ - { 0x010020a2, 8744 }, /* CruzeiroSign */ - { 0x010020a3, 12416 }, /* FFrancSign */ - { 0x010020a4, 19448 }, /* LiraSign */ - { 0x010020a5, 19724 }, /* MillSign */ - { 0x010020a6, 19967 }, /* NairaSign */ - { 0x010020a7, 21526 }, /* PesetaSign */ - { 0x010020a8, 22569 }, /* RupeeSign */ - { 0x010020a9, 26623 }, /* WonSign */ - { 0x010020aa, 20009 }, /* NewSheqelSign */ - { 0x010020ab, 11258 }, /* DongSign */ - { 0x01002202, 21446 }, /* partdifferential */ - { 0x01002205, 11919 }, /* emptyset */ - { 0x01002208, 11802 }, /* elementof */ - { 0x01002209, 20112 }, /* notelementof */ - { 0x0100220b, 8686 }, /* containsas */ - { 0x0100221a, 23809 }, /* squareroot */ - { 0x0100221b, 8757 }, /* cuberoot */ - { 0x0100221c, 12645 }, /* fourthroot */ - { 0x0100222c, 11232 }, /* dintegral */ - { 0x0100222d, 25585 }, /* tintegral */ + { 0x010020a2, 8826 }, /* CruzeiroSign */ + { 0x010020a3, 12498 }, /* FFrancSign */ + { 0x010020a4, 19530 }, /* LiraSign */ + { 0x010020a5, 19806 }, /* MillSign */ + { 0x010020a6, 20049 }, /* NairaSign */ + { 0x010020a7, 21608 }, /* PesetaSign */ + { 0x010020a8, 22651 }, /* RupeeSign */ + { 0x010020a9, 26705 }, /* WonSign */ + { 0x010020aa, 20091 }, /* NewSheqelSign */ + { 0x010020ab, 11340 }, /* DongSign */ + { 0x01002202, 21528 }, /* partdifferential */ + { 0x01002205, 12001 }, /* emptyset */ + { 0x01002208, 11884 }, /* elementof */ + { 0x01002209, 20194 }, /* notelementof */ + { 0x0100220b, 8768 }, /* containsas */ + { 0x0100221a, 23891 }, /* squareroot */ + { 0x0100221b, 8839 }, /* cuberoot */ + { 0x0100221c, 12727 }, /* fourthroot */ + { 0x0100222c, 11314 }, /* dintegral */ + { 0x0100222d, 25667 }, /* tintegral */ { 0x01002235, 3396 }, /* because */ - { 0x01002247, 20100 }, /* notapproxeq */ + { 0x01002247, 20182 }, /* notapproxeq */ { 0x01002248, 945 }, /* approxeq */ - { 0x01002262, 20134 }, /* notidentical */ - { 0x01002263, 23854 }, /* stricteq */ + { 0x01002262, 20216 }, /* notidentical */ + { 0x01002263, 23936 }, /* stricteq */ { 0x01002800, 3628 }, /* braille_blank */ { 0x01002801, 3783 }, /* braille_dots_1 */ { 0x01002802, 6151 }, /* braille_dots_2 */ @@ -6847,283 +7453,420 @@ static const struct name_keysym keysym_to_name[] = { { 0x010028fd, 5104 }, /* braille_dots_1345678 */ { 0x010028fe, 6256 }, /* braille_dots_2345678 */ { 0x010028ff, 3909 }, /* braille_dots_12345678 */ - { 0x100000a8, 16910 }, /* hpmute_acute */ - { 0x100000a9, 16977 }, /* hpmute_grave */ - { 0x100000aa, 16923 }, /* hpmute_asciicircum */ - { 0x100000ab, 16960 }, /* hpmute_diaeresis */ - { 0x100000ac, 16942 }, /* hpmute_asciitilde */ - { 0x100000af, 16867 }, /* hplira */ - { 0x100000be, 16813 }, /* hpguilder */ - { 0x100000ee, 17014 }, /* hpYdiaeresis */ - { 0x100000f6, 16874 }, /* hplongminus */ - { 0x100000fc, 16767 }, /* hpblock */ - { 0x1000fe22, 10414 }, /* Ddiaeresis */ - { 0x1000fe27, 10344 }, /* Dacute_accent */ - { 0x1000fe2c, 10379 }, /* Dcedilla_accent */ - { 0x1000fe5e, 10395 }, /* Dcircumflex_accent */ - { 0x1000fe60, 11189 }, /* Dgrave_accent */ - { 0x1000fe7e, 11417 }, /* Dtilde */ - { 0x1000feb0, 11388 }, /* Dring_accent */ - { 0x1000ff00, 11380 }, /* DRemove */ - { 0x1000ff48, 16886 }, /* hpModelock1 */ - { 0x1000ff49, 16898 }, /* hpModelock2 */ - { 0x1000ff6c, 16990 }, /* hpReset */ - { 0x1000ff6d, 16998 }, /* hpSystem */ - { 0x1000ff6e, 17007 }, /* hpUser */ - { 0x1000ff6f, 16775 }, /* hpClearLine */ - { 0x1000ff70, 16836 }, /* hpInsertLine */ - { 0x1000ff71, 16800 }, /* hpDeleteLine */ - { 0x1000ff72, 16823 }, /* hpInsertChar */ - { 0x1000ff73, 16787 }, /* hpDeleteChar */ - { 0x1000ff74, 16757 }, /* hpBackTab */ - { 0x1000ff75, 16854 }, /* hpKP_BackTab */ - { 0x1000ff76, 12125 }, /* Ext16bit_L */ - { 0x1000ff77, 12136 }, /* Ext16bit_R */ - { 0x1004ff02, 20956 }, /* osfCopy */ - { 0x1004ff03, 20964 }, /* osfCut */ - { 0x1004ff04, 21163 }, /* osfPaste */ - { 0x1004ff07, 20900 }, /* osfBackTab */ - { 0x1004ff08, 20887 }, /* osfBackSpace */ - { 0x1004ff0b, 20947 }, /* osfClear */ - { 0x1004ff1b, 21026 }, /* osfEscape */ - { 0x1004ff31, 20876 }, /* osfAddMode */ - { 0x1004ff32, 21197 }, /* osfPrimaryPaste */ - { 0x1004ff33, 21213 }, /* osfQuickPaste */ - { 0x1004ff40, 21128 }, /* osfPageLeft */ - { 0x1004ff41, 21153 }, /* osfPageUp */ - { 0x1004ff42, 21116 }, /* osfPageDown */ - { 0x1004ff43, 21140 }, /* osfPageRight */ - { 0x1004ff44, 20864 }, /* osfActivate */ - { 0x1004ff45, 21080 }, /* osfMenuBar */ - { 0x1004ff51, 21064 }, /* osfLeft */ - { 0x1004ff52, 21290 }, /* osfUp */ - { 0x1004ff53, 21250 }, /* osfRight */ - { 0x1004ff54, 20996 }, /* osfDown */ - { 0x1004ff57, 21015 }, /* osfEndLine */ - { 0x1004ff58, 20924 }, /* osfBeginLine */ - { 0x1004ff59, 21004 }, /* osfEndData */ - { 0x1004ff5a, 20911 }, /* osfBeginData */ - { 0x1004ff5b, 21185 }, /* osfPrevMenu */ - { 0x1004ff5c, 21104 }, /* osfNextMenu */ - { 0x1004ff5d, 21172 }, /* osfPrevField */ - { 0x1004ff5e, 21091 }, /* osfNextField */ - { 0x1004ff60, 21259 }, /* osfSelect */ - { 0x1004ff63, 21054 }, /* osfInsert */ - { 0x1004ff65, 21282 }, /* osfUndo */ - { 0x1004ff67, 21072 }, /* osfMenu */ - { 0x1004ff69, 20937 }, /* osfCancel */ - { 0x1004ff6a, 21046 }, /* osfHelp */ - { 0x1004ff71, 21269 }, /* osfSelectAll */ - { 0x1004ff72, 20981 }, /* osfDeselectAll */ - { 0x1004ff73, 21227 }, /* osfReselect */ - { 0x1004ff74, 21036 }, /* osfExtend */ - { 0x1004ff78, 21239 }, /* osfRestore */ - { 0x1004ffff, 20971 }, /* osfDelete */ - { 0x1005ff00, 24032 }, /* SunFA_Grave */ - { 0x1005ff01, 24003 }, /* SunFA_Circum */ - { 0x1005ff02, 24044 }, /* SunFA_Tilde */ - { 0x1005ff03, 23977 }, /* SunFA_Acute */ - { 0x1005ff04, 24016 }, /* SunFA_Diaeresis */ - { 0x1005ff05, 23989 }, /* SunFA_Cedilla */ - { 0x1005ff10, 23963 }, /* SunF36 */ - { 0x1005ff11, 23970 }, /* SunF37 */ - { 0x1005ff60, 24180 }, /* SunSys_Req */ - { 0x1005ff70, 24163 }, /* SunProps */ - { 0x1005ff71, 24064 }, /* SunFront */ - { 0x1005ff72, 23948 }, /* SunCopy */ - { 0x1005ff73, 24073 }, /* SunOpen */ - { 0x1005ff74, 24103 }, /* SunPaste */ - { 0x1005ff75, 23956 }, /* SunCut */ - { 0x1005ff76, 24112 }, /* SunPowerSwitch */ - { 0x1005ff77, 23884 }, /* SunAudioLowerVolume */ - { 0x1005ff78, 23904 }, /* SunAudioMute */ - { 0x1005ff79, 23917 }, /* SunAudioRaiseVolume */ - { 0x1005ff7a, 24199 }, /* SunVideoDegauss */ - { 0x1005ff7b, 24215 }, /* SunVideoLowerBrightness */ - { 0x1005ff7c, 24239 }, /* SunVideoRaiseBrightness */ - { 0x1005ff7d, 24127 }, /* SunPowerSwitchShift */ - { 0x1008fe01, 28552 }, /* XF86Switch_VT_1 */ - { 0x1008fe02, 28619 }, /* XF86Switch_VT_2 */ - { 0x1008fe03, 28635 }, /* XF86Switch_VT_3 */ - { 0x1008fe04, 28651 }, /* XF86Switch_VT_4 */ - { 0x1008fe05, 28667 }, /* XF86Switch_VT_5 */ - { 0x1008fe06, 28683 }, /* XF86Switch_VT_6 */ - { 0x1008fe07, 28699 }, /* XF86Switch_VT_7 */ - { 0x1008fe08, 28715 }, /* XF86Switch_VT_8 */ - { 0x1008fe09, 28731 }, /* XF86Switch_VT_9 */ - { 0x1008fe0a, 28568 }, /* XF86Switch_VT_10 */ - { 0x1008fe0b, 28585 }, /* XF86Switch_VT_11 */ - { 0x1008fe0c, 28602 }, /* XF86Switch_VT_12 */ - { 0x1008fe20, 28878 }, /* XF86Ungrab */ - { 0x1008fe21, 27151 }, /* XF86ClearGrab */ - { 0x1008fe22, 28029 }, /* XF86Next_VMode */ - { 0x1008fe23, 28151 }, /* XF86Prev_VMode */ - { 0x1008fe24, 27786 }, /* XF86LogWindowTree */ - { 0x1008fe25, 27759 }, /* XF86LogGrabInfo */ - { 0x1008ff01, 27897 }, /* XF86ModeLock */ - { 0x1008ff02, 27955 }, /* XF86MonBrightnessUp */ - { 0x1008ff03, 27933 }, /* XF86MonBrightnessDown */ - { 0x1008ff04, 27522 }, /* XF86KbdLightOnOff */ - { 0x1008ff05, 27502 }, /* XF86KbdBrightnessUp */ - { 0x1008ff06, 27480 }, /* XF86KbdBrightnessDown */ - { 0x1008ff07, 27910 }, /* XF86MonBrightnessCycle */ - { 0x1008ff10, 28484 }, /* XF86Standby */ - { 0x1008ff11, 26749 }, /* XF86AudioLowerVolume */ - { 0x1008ff12, 26802 }, /* XF86AudioMute */ - { 0x1008ff13, 26889 }, /* XF86AudioRaiseVolume */ - { 0x1008ff14, 26845 }, /* XF86AudioPlay */ - { 0x1008ff15, 26978 }, /* XF86AudioStop */ - { 0x1008ff16, 26875 }, /* XF86AudioPrev */ - { 0x1008ff17, 26816 }, /* XF86AudioNext */ - { 0x1008ff18, 27443 }, /* XF86HomePage */ - { 0x1008ff19, 27804 }, /* XF86Mail */ - { 0x1008ff1a, 28496 }, /* XF86Start */ - { 0x1008ff1b, 28408 }, /* XF86Search */ - { 0x1008ff1c, 26930 }, /* XF86AudioRecord */ - { 0x1008ff1d, 27106 }, /* XF86Calculator */ - { 0x1008ff1e, 27852 }, /* XF86Memo */ - { 0x1008ff1f, 28782 }, /* XF86ToDoList */ - { 0x1008ff20, 27121 }, /* XF86Calendar */ - { 0x1008ff21, 28124 }, /* XF86PowerDown */ - { 0x1008ff22, 27189 }, /* XF86ContrastAdjust */ - { 0x1008ff23, 28255 }, /* XF86RockerUp */ - { 0x1008ff24, 28224 }, /* XF86RockerDown */ - { 0x1008ff25, 28239 }, /* XF86RockerEnter */ - { 0x1008ff26, 27001 }, /* XF86Back */ - { 0x1008ff27, 27333 }, /* XF86Forward */ - { 0x1008ff28, 28506 }, /* XF86Stop */ - { 0x1008ff29, 28180 }, /* XF86Refresh */ - { 0x1008ff2a, 28138 }, /* XF86PowerOff */ - { 0x1008ff2b, 28966 }, /* XF86WakeUp */ - { 0x1008ff2c, 27274 }, /* XF86Eject */ - { 0x1008ff2d, 28348 }, /* XF86ScreenSaver */ - { 0x1008ff2e, 29031 }, /* XF86WWW */ - { 0x1008ff2f, 28448 }, /* XF86Sleep */ - { 0x1008ff30, 27307 }, /* XF86Favorites */ - { 0x1008ff31, 26830 }, /* XF86AudioPause */ - { 0x1008ff32, 26770 }, /* XF86AudioMedia */ - { 0x1008ff33, 27985 }, /* XF86MyComputer */ - { 0x1008ff34, 28932 }, /* XF86VendorHome */ - { 0x1008ff35, 27745 }, /* XF86LightBulb */ - { 0x1008ff36, 28439 }, /* XF86Shop */ - { 0x1008ff37, 27431 }, /* XF86History */ - { 0x1008ff38, 28068 }, /* XF86OpenURL */ - { 0x1008ff39, 26655 }, /* XF86AddFavorite */ - { 0x1008ff3a, 27456 }, /* XF86HotLinks */ - { 0x1008ff3b, 27070 }, /* XF86BrightnessAdjust */ - { 0x1008ff3c, 27321 }, /* XF86Finance */ - { 0x1008ff3d, 27175 }, /* XF86Community */ - { 0x1008ff3e, 26962 }, /* XF86AudioRewind */ - { 0x1008ff3f, 27010 }, /* XF86BackForward */ - { 0x1008ff40, 27553 }, /* XF86Launch0 */ - { 0x1008ff41, 27565 }, /* XF86Launch1 */ - { 0x1008ff42, 27577 }, /* XF86Launch2 */ - { 0x1008ff43, 27589 }, /* XF86Launch3 */ - { 0x1008ff44, 27601 }, /* XF86Launch4 */ - { 0x1008ff45, 27613 }, /* XF86Launch5 */ - { 0x1008ff46, 27625 }, /* XF86Launch6 */ - { 0x1008ff47, 27637 }, /* XF86Launch7 */ - { 0x1008ff48, 27649 }, /* XF86Launch8 */ - { 0x1008ff49, 27661 }, /* XF86Launch9 */ - { 0x1008ff4a, 27673 }, /* XF86LaunchA */ - { 0x1008ff4b, 27685 }, /* XF86LaunchB */ - { 0x1008ff4c, 27697 }, /* XF86LaunchC */ - { 0x1008ff4d, 27709 }, /* XF86LaunchD */ - { 0x1008ff4e, 27721 }, /* XF86LaunchE */ - { 0x1008ff4f, 27733 }, /* XF86LaunchF */ - { 0x1008ff50, 26671 }, /* XF86ApplicationLeft */ - { 0x1008ff51, 26691 }, /* XF86ApplicationRight */ - { 0x1008ff52, 27061 }, /* XF86Book */ - { 0x1008ff53, 27134 }, /* XF86CD */ - { 0x1008ff54, 27091 }, /* XF86Calculater */ - { 0x1008ff55, 27141 }, /* XF86Clear */ - { 0x1008ff56, 27165 }, /* XF86Close */ - { 0x1008ff57, 27208 }, /* XF86Copy */ - { 0x1008ff58, 27217 }, /* XF86Cut */ - { 0x1008ff59, 27240 }, /* XF86Display */ - { 0x1008ff5a, 27266 }, /* XF86DOS */ - { 0x1008ff5b, 27252 }, /* XF86Documents */ - { 0x1008ff5c, 27284 }, /* XF86Excel */ - { 0x1008ff5d, 27294 }, /* XF86Explorer */ - { 0x1008ff5e, 27391 }, /* XF86Game */ - { 0x1008ff5f, 27400 }, /* XF86Go */ - { 0x1008ff60, 27469 }, /* XF86iTouch */ - { 0x1008ff61, 27775 }, /* XF86LogOff */ - { 0x1008ff62, 27829 }, /* XF86Market */ - { 0x1008ff63, 27840 }, /* XF86Meeting */ - { 0x1008ff65, 27861 }, /* XF86MenuKB */ - { 0x1008ff66, 27872 }, /* XF86MenuPB */ - { 0x1008ff67, 28000 }, /* XF86MySites */ - { 0x1008ff68, 28012 }, /* XF86New */ - { 0x1008ff69, 28020 }, /* XF86News */ - { 0x1008ff6a, 28044 }, /* XF86OfficeHome */ - { 0x1008ff6b, 28059 }, /* XF86Open */ - { 0x1008ff6c, 28080 }, /* XF86Option */ - { 0x1008ff6d, 28091 }, /* XF86Paste */ - { 0x1008ff6e, 28101 }, /* XF86Phone */ - { 0x1008ff70, 28166 }, /* XF86Q */ - { 0x1008ff72, 28203 }, /* XF86Reply */ - { 0x1008ff73, 28192 }, /* XF86Reload */ - { 0x1008ff74, 28268 }, /* XF86RotateWindows */ - { 0x1008ff75, 28324 }, /* XF86RotationPB */ - { 0x1008ff76, 28286 }, /* XF86RotationKB */ - { 0x1008ff77, 28339 }, /* XF86Save */ - { 0x1008ff78, 28395 }, /* XF86ScrollUp */ - { 0x1008ff79, 28380 }, /* XF86ScrollDown */ - { 0x1008ff7a, 28364 }, /* XF86ScrollClick */ - { 0x1008ff7b, 28430 }, /* XF86Send */ - { 0x1008ff7c, 28458 }, /* XF86Spell */ - { 0x1008ff7d, 28468 }, /* XF86SplitScreen */ - { 0x1008ff7e, 28528 }, /* XF86Support */ - { 0x1008ff7f, 28747 }, /* XF86TaskPane */ - { 0x1008ff80, 28760 }, /* XF86Terminal */ - { 0x1008ff81, 28795 }, /* XF86Tools */ - { 0x1008ff82, 28867 }, /* XF86Travel */ - { 0x1008ff84, 28913 }, /* XF86UserPB */ - { 0x1008ff85, 28889 }, /* XF86User1KB */ - { 0x1008ff86, 28901 }, /* XF86User2KB */ - { 0x1008ff87, 28947 }, /* XF86Video */ - { 0x1008ff88, 28988 }, /* XF86WheelButton */ - { 0x1008ff89, 29013 }, /* XF86Word */ - { 0x1008ff8a, 29039 }, /* XF86Xfer */ - { 0x1008ff8b, 29059 }, /* XF86ZoomIn */ - { 0x1008ff8c, 29070 }, /* XF86ZoomOut */ - { 0x1008ff8d, 26992 }, /* XF86Away */ - { 0x1008ff8e, 27883 }, /* XF86Messenger */ - { 0x1008ff8f, 28977 }, /* XF86WebCam */ - { 0x1008ff90, 27813 }, /* XF86MailForward */ - { 0x1008ff91, 28111 }, /* XF86Pictures */ - { 0x1008ff92, 27975 }, /* XF86Music */ - { 0x1008ff93, 27026 }, /* XF86Battery */ - { 0x1008ff94, 27047 }, /* XF86Bluetooth */ - { 0x1008ff95, 29004 }, /* XF86WLAN */ - { 0x1008ff96, 28924 }, /* XF86UWB */ - { 0x1008ff97, 26732 }, /* XF86AudioForward */ - { 0x1008ff98, 26946 }, /* XF86AudioRepeat */ - { 0x1008ff99, 26910 }, /* XF86AudioRandomPlay */ - { 0x1008ff9a, 28515 }, /* XF86Subtitle */ - { 0x1008ff9b, 26712 }, /* XF86AudioCycleTrack */ - { 0x1008ff9c, 27225 }, /* XF86CycleAngle */ - { 0x1008ff9d, 27345 }, /* XF86FrameBack */ - { 0x1008ff9e, 27359 }, /* XF86FrameForward */ - { 0x1008ff9f, 28773 }, /* XF86Time */ - { 0x1008ffa0, 28419 }, /* XF86Select */ - { 0x1008ffa1, 28957 }, /* XF86View */ - { 0x1008ffa2, 28805 }, /* XF86TopMenu */ - { 0x1008ffa3, 28172 }, /* XF86Red */ - { 0x1008ffa4, 27407 }, /* XF86Green */ - { 0x1008ffa5, 29048 }, /* XF86Yellow */ - { 0x1008ffa6, 27038 }, /* XF86Blue */ - { 0x1008ffa7, 28540 }, /* XF86Suspend */ - { 0x1008ffa8, 27417 }, /* XF86Hibernate */ - { 0x1008ffa9, 28848 }, /* XF86TouchpadToggle */ - { 0x1008ffb0, 28833 }, /* XF86TouchpadOn */ - { 0x1008ffb1, 28817 }, /* XF86TouchpadOff */ - { 0x1008ffb2, 26785 }, /* XF86AudioMicMute */ - { 0x1008ffb3, 27540 }, /* XF86Keyboard */ - { 0x1008ffb4, 29022 }, /* XF86WWAN */ - { 0x1008ffb5, 28213 }, /* XF86RFKill */ - { 0x1008ffb6, 26859 }, /* XF86AudioPreset */ - { 0x1008ffb7, 28301 }, /* XF86RotationLockToggle */ - { 0x1008ffb8, 27376 }, /* XF86FullScreen */ + { 0x100000a8, 16992 }, /* hpmute_acute */ + { 0x100000a9, 17059 }, /* hpmute_grave */ + { 0x100000aa, 17005 }, /* hpmute_asciicircum */ + { 0x100000ab, 17042 }, /* hpmute_diaeresis */ + { 0x100000ac, 17024 }, /* hpmute_asciitilde */ + { 0x100000af, 16949 }, /* hplira */ + { 0x100000be, 16895 }, /* hpguilder */ + { 0x100000ee, 17096 }, /* hpYdiaeresis */ + { 0x100000f6, 16956 }, /* hplongminus */ + { 0x100000fc, 16849 }, /* hpblock */ + { 0x1000fe22, 10496 }, /* Ddiaeresis */ + { 0x1000fe27, 10426 }, /* Dacute_accent */ + { 0x1000fe2c, 10461 }, /* Dcedilla_accent */ + { 0x1000fe5e, 10477 }, /* Dcircumflex_accent */ + { 0x1000fe60, 11271 }, /* Dgrave_accent */ + { 0x1000fe7e, 11499 }, /* Dtilde */ + { 0x1000feb0, 11470 }, /* Dring_accent */ + { 0x1000ff00, 11462 }, /* DRemove */ + { 0x1000ff48, 16968 }, /* hpModelock1 */ + { 0x1000ff49, 16980 }, /* hpModelock2 */ + { 0x1000ff6c, 17072 }, /* hpReset */ + { 0x1000ff6d, 17080 }, /* hpSystem */ + { 0x1000ff6e, 17089 }, /* hpUser */ + { 0x1000ff6f, 16857 }, /* hpClearLine */ + { 0x1000ff70, 16918 }, /* hpInsertLine */ + { 0x1000ff71, 16882 }, /* hpDeleteLine */ + { 0x1000ff72, 16905 }, /* hpInsertChar */ + { 0x1000ff73, 16869 }, /* hpDeleteChar */ + { 0x1000ff74, 16839 }, /* hpBackTab */ + { 0x1000ff75, 16936 }, /* hpKP_BackTab */ + { 0x1000ff76, 12207 }, /* Ext16bit_L */ + { 0x1000ff77, 12218 }, /* Ext16bit_R */ + { 0x1004ff02, 21038 }, /* osfCopy */ + { 0x1004ff03, 21046 }, /* osfCut */ + { 0x1004ff04, 21245 }, /* osfPaste */ + { 0x1004ff07, 20982 }, /* osfBackTab */ + { 0x1004ff08, 20969 }, /* osfBackSpace */ + { 0x1004ff0b, 21029 }, /* osfClear */ + { 0x1004ff1b, 21108 }, /* osfEscape */ + { 0x1004ff31, 20958 }, /* osfAddMode */ + { 0x1004ff32, 21279 }, /* osfPrimaryPaste */ + { 0x1004ff33, 21295 }, /* osfQuickPaste */ + { 0x1004ff40, 21210 }, /* osfPageLeft */ + { 0x1004ff41, 21235 }, /* osfPageUp */ + { 0x1004ff42, 21198 }, /* osfPageDown */ + { 0x1004ff43, 21222 }, /* osfPageRight */ + { 0x1004ff44, 20946 }, /* osfActivate */ + { 0x1004ff45, 21162 }, /* osfMenuBar */ + { 0x1004ff51, 21146 }, /* osfLeft */ + { 0x1004ff52, 21372 }, /* osfUp */ + { 0x1004ff53, 21332 }, /* osfRight */ + { 0x1004ff54, 21078 }, /* osfDown */ + { 0x1004ff57, 21097 }, /* osfEndLine */ + { 0x1004ff58, 21006 }, /* osfBeginLine */ + { 0x1004ff59, 21086 }, /* osfEndData */ + { 0x1004ff5a, 20993 }, /* osfBeginData */ + { 0x1004ff5b, 21267 }, /* osfPrevMenu */ + { 0x1004ff5c, 21186 }, /* osfNextMenu */ + { 0x1004ff5d, 21254 }, /* osfPrevField */ + { 0x1004ff5e, 21173 }, /* osfNextField */ + { 0x1004ff60, 21341 }, /* osfSelect */ + { 0x1004ff63, 21136 }, /* osfInsert */ + { 0x1004ff65, 21364 }, /* osfUndo */ + { 0x1004ff67, 21154 }, /* osfMenu */ + { 0x1004ff69, 21019 }, /* osfCancel */ + { 0x1004ff6a, 21128 }, /* osfHelp */ + { 0x1004ff71, 21351 }, /* osfSelectAll */ + { 0x1004ff72, 21063 }, /* osfDeselectAll */ + { 0x1004ff73, 21309 }, /* osfReselect */ + { 0x1004ff74, 21118 }, /* osfExtend */ + { 0x1004ff78, 21321 }, /* osfRestore */ + { 0x1004ffff, 21053 }, /* osfDelete */ + { 0x1005ff00, 24114 }, /* SunFA_Grave */ + { 0x1005ff01, 24085 }, /* SunFA_Circum */ + { 0x1005ff02, 24126 }, /* SunFA_Tilde */ + { 0x1005ff03, 24059 }, /* SunFA_Acute */ + { 0x1005ff04, 24098 }, /* SunFA_Diaeresis */ + { 0x1005ff05, 24071 }, /* SunFA_Cedilla */ + { 0x1005ff10, 24045 }, /* SunF36 */ + { 0x1005ff11, 24052 }, /* SunF37 */ + { 0x1005ff60, 24262 }, /* SunSys_Req */ + { 0x1005ff70, 24245 }, /* SunProps */ + { 0x1005ff71, 24146 }, /* SunFront */ + { 0x1005ff72, 24030 }, /* SunCopy */ + { 0x1005ff73, 24155 }, /* SunOpen */ + { 0x1005ff74, 24185 }, /* SunPaste */ + { 0x1005ff75, 24038 }, /* SunCut */ + { 0x1005ff76, 24194 }, /* SunPowerSwitch */ + { 0x1005ff77, 23966 }, /* SunAudioLowerVolume */ + { 0x1005ff78, 23986 }, /* SunAudioMute */ + { 0x1005ff79, 23999 }, /* SunAudioRaiseVolume */ + { 0x1005ff7a, 24281 }, /* SunVideoDegauss */ + { 0x1005ff7b, 24297 }, /* SunVideoLowerBrightness */ + { 0x1005ff7c, 24321 }, /* SunVideoRaiseBrightness */ + { 0x1005ff7d, 24209 }, /* SunPowerSwitchShift */ + { 0x100810f4, 27381 }, /* XF86BrightnessAuto */ + { 0x100810f5, 27809 }, /* XF86DisplayOff */ + { 0x10081166, 28175 }, /* XF86Info */ + { 0x10081177, 26885 }, /* XF86AspectRatio */ + { 0x10081185, 27864 }, /* XF86DVD */ + { 0x10081188, 26968 }, /* XF86Audio */ + { 0x10081192, 27629 }, /* XF86ChannelUp */ + { 0x10081193, 27613 }, /* XF86ChannelDown */ + { 0x1008119b, 27350 }, /* XF86Break */ + { 0x100811a0, 30983 }, /* XF86VideoPhone */ + { 0x100811a4, 31176 }, /* XF86ZoomReset */ + { 0x100811a6, 27872 }, /* XF86Editor */ + { 0x100811a8, 28067 }, /* XF86GraphicsEditor */ + { 0x100811a9, 29984 }, /* XF86Presentation */ + { 0x100811aa, 27784 }, /* XF86Database */ + { 0x100811ac, 31032 }, /* XF86Voicemail */ + { 0x100811ad, 26800 }, /* XF86Addressbook */ + { 0x100811af, 27824 }, /* XF86DisplayToggle */ + { 0x100811b0, 30437 }, /* XF86SpellCheck */ + { 0x100811b6, 27691 }, /* XF86ContextMenu */ + { 0x100811b7, 29304 }, /* XF86MediaRepeat */ + { 0x100811b8, 26756 }, /* XF8610ChannelsUp */ + { 0x100811b9, 26737 }, /* XF8610ChannelsDown */ + { 0x100811ba, 28164 }, /* XF86Images */ + { 0x100811bc, 29558 }, /* XF86NotificationCenter */ + { 0x100811bd, 29928 }, /* XF86PickupPhone */ + { 0x100811be, 28096 }, /* XF86HangupPhone */ + { 0x100811d0, 27958 }, /* XF86Fn */ + { 0x100811d1, 27965 }, /* XF86Fn_Esc */ + { 0x100811e5, 27976 }, /* XF86FnRightShift */ + { 0x10081200, 29581 }, /* XF86Numeric0 */ + { 0x10081201, 29594 }, /* XF86Numeric1 */ + { 0x10081202, 29635 }, /* XF86Numeric2 */ + { 0x10081203, 29648 }, /* XF86Numeric3 */ + { 0x10081204, 29661 }, /* XF86Numeric4 */ + { 0x10081205, 29674 }, /* XF86Numeric5 */ + { 0x10081206, 29687 }, /* XF86Numeric6 */ + { 0x10081207, 29700 }, /* XF86Numeric7 */ + { 0x10081208, 29713 }, /* XF86Numeric8 */ + { 0x10081209, 29726 }, /* XF86Numeric9 */ + { 0x1008120a, 29808 }, /* XF86NumericStar */ + { 0x1008120b, 29791 }, /* XF86NumericPound */ + { 0x1008120c, 29739 }, /* XF86NumericA */ + { 0x1008120d, 29752 }, /* XF86NumericB */ + { 0x1008120e, 29765 }, /* XF86NumericC */ + { 0x1008120f, 29778 }, /* XF86NumericD */ + { 0x10081210, 27511 }, /* XF86CameraFocus */ + { 0x10081211, 31102 }, /* XF86WPSButton */ + { 0x10081215, 27571 }, /* XF86CameraZoomIn */ + { 0x10081216, 27588 }, /* XF86CameraZoomOut */ + { 0x10081217, 27558 }, /* XF86CameraUp */ + { 0x10081218, 27496 }, /* XF86CameraDown */ + { 0x10081219, 27527 }, /* XF86CameraLeft */ + { 0x1008121a, 27542 }, /* XF86CameraRight */ + { 0x1008121b, 26932 }, /* XF86AttendantOn */ + { 0x1008121c, 26915 }, /* XF86AttendantOff */ + { 0x1008121d, 26948 }, /* XF86AttendantToggle */ + { 0x1008121e, 28742 }, /* XF86LightsToggle */ + { 0x10081230, 26816 }, /* XF86ALSToggle */ + { 0x10081240, 27436 }, /* XF86Buttonconfig */ + { 0x10081241, 30746 }, /* XF86Taskmanager */ + { 0x10081242, 28195 }, /* XF86Journal */ + { 0x10081243, 27726 }, /* XF86ControlPanel */ + { 0x10081244, 26871 }, /* XF86AppSelect */ + { 0x10081245, 30277 }, /* XF86Screensaver */ + { 0x10081246, 31015 }, /* XF86VoiceCommand */ + { 0x10081247, 26901 }, /* XF86Assistant */ + { 0x10081250, 27418 }, /* XF86BrightnessMin */ + { 0x10081251, 27400 }, /* XF86BrightnessMax */ + { 0x10081260, 28350 }, /* XF86KbdInputAssistPrev */ + { 0x10081261, 28299 }, /* XF86KbdInputAssistNext */ + { 0x10081262, 28373 }, /* XF86KbdInputAssistPrevgroup */ + { 0x10081263, 28322 }, /* XF86KbdInputAssistNextgroup */ + { 0x10081264, 28249 }, /* XF86KbdInputAssistAccept */ + { 0x10081265, 28274 }, /* XF86KbdInputAssistCancel */ + { 0x10081266, 30112 }, /* XF86RightUp */ + { 0x10081267, 30098 }, /* XF86RightDown */ + { 0x10081268, 28717 }, /* XF86LeftUp */ + { 0x10081269, 28704 }, /* XF86LeftDown */ + { 0x1008126a, 30168 }, /* XF86RootMenu */ + { 0x1008126b, 29320 }, /* XF86MediaTopMenu */ + { 0x1008126c, 29607 }, /* XF86Numeric11 */ + { 0x1008126d, 29621 }, /* XF86Numeric12 */ + { 0x1008126e, 26998 }, /* XF86AudioDesc */ + { 0x1008126f, 26773 }, /* XF863DMode */ + { 0x10081270, 29541 }, /* XF86NextFavorite */ + { 0x10081271, 30499 }, /* XF86StopRecord */ + { 0x10081272, 29902 }, /* XF86PauseRecord */ + { 0x10081273, 31007 }, /* XF86VOD */ + { 0x10081274, 30904 }, /* XF86Unmute */ + { 0x10081275, 27916 }, /* XF86FastReverse */ + { 0x10081276, 30411 }, /* XF86SlowReverse */ + { 0x10081277, 27775 }, /* XF86Data */ + { 0x10081278, 29839 }, /* XF86OnScreenKeyboard */ + { 0x10081279, 30016 }, /* XF86PrivacyScreenToggle */ + { 0x1008127a, 30359 }, /* XF86SelectiveScreenshot */ + { 0x10081290, 28804 }, /* XF86Macro1 */ + { 0x10081291, 28935 }, /* XF86Macro2 */ + { 0x10081292, 29066 }, /* XF86Macro3 */ + { 0x10081293, 29089 }, /* XF86Macro4 */ + { 0x10081294, 29100 }, /* XF86Macro5 */ + { 0x10081295, 29111 }, /* XF86Macro6 */ + { 0x10081296, 29122 }, /* XF86Macro7 */ + { 0x10081297, 29133 }, /* XF86Macro8 */ + { 0x10081298, 29144 }, /* XF86Macro9 */ + { 0x10081299, 28815 }, /* XF86Macro10 */ + { 0x1008129a, 28827 }, /* XF86Macro11 */ + { 0x1008129b, 28839 }, /* XF86Macro12 */ + { 0x1008129c, 28851 }, /* XF86Macro13 */ + { 0x1008129d, 28863 }, /* XF86Macro14 */ + { 0x1008129e, 28875 }, /* XF86Macro15 */ + { 0x1008129f, 28887 }, /* XF86Macro16 */ + { 0x100812a0, 28899 }, /* XF86Macro17 */ + { 0x100812a1, 28911 }, /* XF86Macro18 */ + { 0x100812a2, 28923 }, /* XF86Macro19 */ + { 0x100812a3, 28946 }, /* XF86Macro20 */ + { 0x100812a4, 28958 }, /* XF86Macro21 */ + { 0x100812a5, 28970 }, /* XF86Macro22 */ + { 0x100812a6, 28982 }, /* XF86Macro23 */ + { 0x100812a7, 28994 }, /* XF86Macro24 */ + { 0x100812a8, 29006 }, /* XF86Macro25 */ + { 0x100812a9, 29018 }, /* XF86Macro26 */ + { 0x100812aa, 29030 }, /* XF86Macro27 */ + { 0x100812ab, 29042 }, /* XF86Macro28 */ + { 0x100812ac, 29054 }, /* XF86Macro29 */ + { 0x100812ad, 29077 }, /* XF86Macro30 */ + { 0x100812b0, 29227 }, /* XF86MacroRecordStart */ + { 0x100812b1, 29248 }, /* XF86MacroRecordStop */ + { 0x100812b2, 29206 }, /* XF86MacroPresetCycle */ + { 0x100812b3, 29155 }, /* XF86MacroPreset1 */ + { 0x100812b4, 29172 }, /* XF86MacroPreset2 */ + { 0x100812b5, 29189 }, /* XF86MacroPreset3 */ + { 0x100812b8, 28401 }, /* XF86KbdLcdMenu1 */ + { 0x100812b9, 28417 }, /* XF86KbdLcdMenu2 */ + { 0x100812ba, 28433 }, /* XF86KbdLcdMenu3 */ + { 0x100812bb, 28449 }, /* XF86KbdLcdMenu4 */ + { 0x100812bc, 28465 }, /* XF86KbdLcdMenu5 */ + { 0x1008fe01, 30551 }, /* XF86Switch_VT_1 */ + { 0x1008fe02, 30618 }, /* XF86Switch_VT_2 */ + { 0x1008fe03, 30634 }, /* XF86Switch_VT_3 */ + { 0x1008fe04, 30650 }, /* XF86Switch_VT_4 */ + { 0x1008fe05, 30666 }, /* XF86Switch_VT_5 */ + { 0x1008fe06, 30682 }, /* XF86Switch_VT_6 */ + { 0x1008fe07, 30698 }, /* XF86Switch_VT_7 */ + { 0x1008fe08, 30714 }, /* XF86Switch_VT_8 */ + { 0x1008fe09, 30730 }, /* XF86Switch_VT_9 */ + { 0x1008fe0a, 30567 }, /* XF86Switch_VT_10 */ + { 0x1008fe0b, 30584 }, /* XF86Switch_VT_11 */ + { 0x1008fe0c, 30601 }, /* XF86Switch_VT_12 */ + { 0x1008fe20, 30893 }, /* XF86Ungrab */ + { 0x1008fe21, 27653 }, /* XF86ClearGrab */ + { 0x1008fe22, 29526 }, /* XF86Next_VMode */ + { 0x1008fe23, 30001 }, /* XF86Prev_VMode */ + { 0x1008fe24, 28786 }, /* XF86LogWindowTree */ + { 0x1008fe25, 28759 }, /* XF86LogGrabInfo */ + { 0x1008ff01, 29394 }, /* XF86ModeLock */ + { 0x1008ff02, 29452 }, /* XF86MonBrightnessUp */ + { 0x1008ff03, 29430 }, /* XF86MonBrightnessDown */ + { 0x1008ff04, 28481 }, /* XF86KbdLightOnOff */ + { 0x1008ff05, 28229 }, /* XF86KbdBrightnessUp */ + { 0x1008ff06, 28207 }, /* XF86KbdBrightnessDown */ + { 0x1008ff07, 29407 }, /* XF86MonBrightnessCycle */ + { 0x1008ff10, 30468 }, /* XF86Standby */ + { 0x1008ff11, 27029 }, /* XF86AudioLowerVolume */ + { 0x1008ff12, 27082 }, /* XF86AudioMute */ + { 0x1008ff13, 27169 }, /* XF86AudioRaiseVolume */ + { 0x1008ff14, 27125 }, /* XF86AudioPlay */ + { 0x1008ff15, 27258 }, /* XF86AudioStop */ + { 0x1008ff16, 27155 }, /* XF86AudioPrev */ + { 0x1008ff17, 27096 }, /* XF86AudioNext */ + { 0x1008ff18, 28138 }, /* XF86HomePage */ + { 0x1008ff19, 29268 }, /* XF86Mail */ + { 0x1008ff1a, 30480 }, /* XF86Start */ + { 0x1008ff1b, 30337 }, /* XF86Search */ + { 0x1008ff1c, 27210 }, /* XF86AudioRecord */ + { 0x1008ff1d, 27468 }, /* XF86Calculator */ + { 0x1008ff1e, 29349 }, /* XF86Memo */ + { 0x1008ff1f, 30797 }, /* XF86ToDoList */ + { 0x1008ff20, 27483 }, /* XF86Calendar */ + { 0x1008ff21, 29957 }, /* XF86PowerDown */ + { 0x1008ff22, 27707 }, /* XF86ContrastAdjust */ + { 0x1008ff23, 30155 }, /* XF86RockerUp */ + { 0x1008ff24, 30124 }, /* XF86RockerDown */ + { 0x1008ff25, 30139 }, /* XF86RockerEnter */ + { 0x1008ff26, 27281 }, /* XF86Back */ + { 0x1008ff27, 27993 }, /* XF86Forward */ + { 0x1008ff28, 30490 }, /* XF86Stop */ + { 0x1008ff29, 30054 }, /* XF86Refresh */ + { 0x1008ff2a, 29971 }, /* XF86PowerOff */ + { 0x1008ff2b, 31046 }, /* XF86WakeUp */ + { 0x1008ff2c, 27883 }, /* XF86Eject */ + { 0x1008ff2d, 30261 }, /* XF86ScreenSaver */ + { 0x1008ff2e, 31125 }, /* XF86WWW */ + { 0x1008ff2f, 30401 }, /* XF86Sleep */ + { 0x1008ff30, 27932 }, /* XF86Favorites */ + { 0x1008ff31, 27110 }, /* XF86AudioPause */ + { 0x1008ff32, 27050 }, /* XF86AudioMedia */ + { 0x1008ff33, 29482 }, /* XF86MyComputer */ + { 0x1008ff34, 30958 }, /* XF86VendorHome */ + { 0x1008ff35, 28728 }, /* XF86LightBulb */ + { 0x1008ff36, 30392 }, /* XF86Shop */ + { 0x1008ff37, 28126 }, /* XF86History */ + { 0x1008ff38, 29869 }, /* XF86OpenURL */ + { 0x1008ff39, 26784 }, /* XF86AddFavorite */ + { 0x1008ff3a, 28151 }, /* XF86HotLinks */ + { 0x1008ff3b, 27360 }, /* XF86BrightnessAdjust */ + { 0x1008ff3c, 27946 }, /* XF86Finance */ + { 0x1008ff3d, 27677 }, /* XF86Community */ + { 0x1008ff3e, 27242 }, /* XF86AudioRewind */ + { 0x1008ff3f, 27290 }, /* XF86BackForward */ + { 0x1008ff40, 28512 }, /* XF86Launch0 */ + { 0x1008ff41, 28524 }, /* XF86Launch1 */ + { 0x1008ff42, 28536 }, /* XF86Launch2 */ + { 0x1008ff43, 28548 }, /* XF86Launch3 */ + { 0x1008ff44, 28560 }, /* XF86Launch4 */ + { 0x1008ff45, 28572 }, /* XF86Launch5 */ + { 0x1008ff46, 28584 }, /* XF86Launch6 */ + { 0x1008ff47, 28596 }, /* XF86Launch7 */ + { 0x1008ff48, 28608 }, /* XF86Launch8 */ + { 0x1008ff49, 28620 }, /* XF86Launch9 */ + { 0x1008ff4a, 28632 }, /* XF86LaunchA */ + { 0x1008ff4b, 28644 }, /* XF86LaunchB */ + { 0x1008ff4c, 28656 }, /* XF86LaunchC */ + { 0x1008ff4d, 28668 }, /* XF86LaunchD */ + { 0x1008ff4e, 28680 }, /* XF86LaunchE */ + { 0x1008ff4f, 28692 }, /* XF86LaunchF */ + { 0x1008ff50, 26830 }, /* XF86ApplicationLeft */ + { 0x1008ff51, 26850 }, /* XF86ApplicationRight */ + { 0x1008ff52, 27341 }, /* XF86Book */ + { 0x1008ff53, 27606 }, /* XF86CD */ + { 0x1008ff54, 27453 }, /* XF86Calculater */ + { 0x1008ff55, 27643 }, /* XF86Clear */ + { 0x1008ff56, 27667 }, /* XF86Close */ + { 0x1008ff57, 27743 }, /* XF86Copy */ + { 0x1008ff58, 27752 }, /* XF86Cut */ + { 0x1008ff59, 27797 }, /* XF86Display */ + { 0x1008ff5a, 27856 }, /* XF86DOS */ + { 0x1008ff5b, 27842 }, /* XF86Documents */ + { 0x1008ff5c, 27893 }, /* XF86Excel */ + { 0x1008ff5d, 27903 }, /* XF86Explorer */ + { 0x1008ff5e, 28051 }, /* XF86Game */ + { 0x1008ff5f, 28060 }, /* XF86Go */ + { 0x1008ff60, 28184 }, /* XF86iTouch */ + { 0x1008ff61, 28775 }, /* XF86LogOff */ + { 0x1008ff62, 29293 }, /* XF86Market */ + { 0x1008ff63, 29337 }, /* XF86Meeting */ + { 0x1008ff65, 29358 }, /* XF86MenuKB */ + { 0x1008ff66, 29369 }, /* XF86MenuPB */ + { 0x1008ff67, 29497 }, /* XF86MySites */ + { 0x1008ff68, 29509 }, /* XF86New */ + { 0x1008ff69, 29517 }, /* XF86News */ + { 0x1008ff6a, 29824 }, /* XF86OfficeHome */ + { 0x1008ff6b, 29860 }, /* XF86Open */ + { 0x1008ff6c, 29881 }, /* XF86Option */ + { 0x1008ff6d, 29892 }, /* XF86Paste */ + { 0x1008ff6e, 29918 }, /* XF86Phone */ + { 0x1008ff70, 30040 }, /* XF86Q */ + { 0x1008ff72, 30077 }, /* XF86Reply */ + { 0x1008ff73, 30066 }, /* XF86Reload */ + { 0x1008ff74, 30181 }, /* XF86RotateWindows */ + { 0x1008ff75, 30237 }, /* XF86RotationPB */ + { 0x1008ff76, 30199 }, /* XF86RotationKB */ + { 0x1008ff77, 30252 }, /* XF86Save */ + { 0x1008ff78, 30324 }, /* XF86ScrollUp */ + { 0x1008ff79, 30309 }, /* XF86ScrollDown */ + { 0x1008ff7a, 30293 }, /* XF86ScrollClick */ + { 0x1008ff7b, 30383 }, /* XF86Send */ + { 0x1008ff7c, 30427 }, /* XF86Spell */ + { 0x1008ff7d, 30452 }, /* XF86SplitScreen */ + { 0x1008ff7e, 30527 }, /* XF86Support */ + { 0x1008ff7f, 30762 }, /* XF86TaskPane */ + { 0x1008ff80, 30775 }, /* XF86Terminal */ + { 0x1008ff81, 30810 }, /* XF86Tools */ + { 0x1008ff82, 30882 }, /* XF86Travel */ + { 0x1008ff84, 30939 }, /* XF86UserPB */ + { 0x1008ff85, 30915 }, /* XF86User1KB */ + { 0x1008ff86, 30927 }, /* XF86User2KB */ + { 0x1008ff87, 30973 }, /* XF86Video */ + { 0x1008ff88, 31068 }, /* XF86WheelButton */ + { 0x1008ff89, 31093 }, /* XF86Word */ + { 0x1008ff8a, 31133 }, /* XF86Xfer */ + { 0x1008ff8b, 31153 }, /* XF86ZoomIn */ + { 0x1008ff8c, 31164 }, /* XF86ZoomOut */ + { 0x1008ff8d, 27272 }, /* XF86Away */ + { 0x1008ff8e, 29380 }, /* XF86Messenger */ + { 0x1008ff8f, 31057 }, /* XF86WebCam */ + { 0x1008ff90, 29277 }, /* XF86MailForward */ + { 0x1008ff91, 29944 }, /* XF86Pictures */ + { 0x1008ff92, 29472 }, /* XF86Music */ + { 0x1008ff93, 27306 }, /* XF86Battery */ + { 0x1008ff94, 27327 }, /* XF86Bluetooth */ + { 0x1008ff95, 31084 }, /* XF86WLAN */ + { 0x1008ff96, 30950 }, /* XF86UWB */ + { 0x1008ff97, 27012 }, /* XF86AudioForward */ + { 0x1008ff98, 27226 }, /* XF86AudioRepeat */ + { 0x1008ff99, 27190 }, /* XF86AudioRandomPlay */ + { 0x1008ff9a, 30514 }, /* XF86Subtitle */ + { 0x1008ff9b, 26978 }, /* XF86AudioCycleTrack */ + { 0x1008ff9c, 27760 }, /* XF86CycleAngle */ + { 0x1008ff9d, 28005 }, /* XF86FrameBack */ + { 0x1008ff9e, 28019 }, /* XF86FrameForward */ + { 0x1008ff9f, 30788 }, /* XF86Time */ + { 0x1008ffa0, 30348 }, /* XF86Select */ + { 0x1008ffa1, 30998 }, /* XF86View */ + { 0x1008ffa2, 30820 }, /* XF86TopMenu */ + { 0x1008ffa3, 30046 }, /* XF86Red */ + { 0x1008ffa4, 28086 }, /* XF86Green */ + { 0x1008ffa5, 31142 }, /* XF86Yellow */ + { 0x1008ffa6, 27318 }, /* XF86Blue */ + { 0x1008ffa7, 30539 }, /* XF86Suspend */ + { 0x1008ffa8, 28112 }, /* XF86Hibernate */ + { 0x1008ffa9, 30863 }, /* XF86TouchpadToggle */ + { 0x1008ffb0, 30848 }, /* XF86TouchpadOn */ + { 0x1008ffb1, 30832 }, /* XF86TouchpadOff */ + { 0x1008ffb2, 27065 }, /* XF86AudioMicMute */ + { 0x1008ffb3, 28499 }, /* XF86Keyboard */ + { 0x1008ffb4, 31116 }, /* XF86WWAN */ + { 0x1008ffb5, 30087 }, /* XF86RFKill */ + { 0x1008ffb6, 27139 }, /* XF86AudioPreset */ + { 0x1008ffb7, 30214 }, /* XF86RotationLockToggle */ + { 0x1008ffb8, 28036 }, /* XF86FullScreen */ }; diff --git a/src/registry.c b/src/registry.c index dcaaa1b..dbaac2a 100644 --- a/src/registry.c +++ b/src/registry.c @@ -742,6 +742,10 @@ parse_config_item(struct rxkb_context *ctx, if (!*name || !strlen(*name)) { log_err(ctx, "xml:%d: missing required element 'name'\n", ci->line); + free(*name); + free(*description); + free(*brief); + free(*vendor); return false; } @@ -804,6 +808,11 @@ parse_language_list(xmlNode *language_list, struct rxkb_layout *layout) char *str = extract_text(node); struct rxkb_object *parent; + if (!str || strlen(str) != 3) { + free(str); + continue; + } + parent = &layout->base; code = rxkb_iso639_code_create(parent); code->code = str; @@ -823,6 +832,11 @@ parse_country_list(xmlNode *country_list, struct rxkb_layout *layout) char *str = extract_text(node); struct rxkb_object *parent; + if (!str || strlen(str) != 2) { + free(str); + continue; + } + parent = &layout->base; code = rxkb_iso3166_code_create(parent); code->code = str; @@ -856,7 +870,8 @@ parse_variant(struct rxkb_context *ctx, struct rxkb_layout *l, v->name = strdup(l->name); v->variant = name; v->description = description; - v->brief = brief; + // if variant omits brief, inherit from parent layout. + v->brief = brief == NULL ? strdup_safe(l->brief) : brief; v->popularity = popularity; list_append(&ctx->layouts, &v->base.link); @@ -866,11 +881,35 @@ parse_variant(struct rxkb_context *ctx, struct rxkb_layout *l, if (!is_node(ci, "configItem")) continue; + bool found_language_list = false; + bool found_country_list = false; for (node = ci->children; node; node = node->next) { - if (is_node(node, "languageList")) + if (is_node(node, "languageList")) { parse_language_list(node, v); - if (is_node(node, "countryList")) + found_language_list = true; + } + if (is_node(node, "countryList")) { parse_country_list(node, v); + found_country_list = true; + } + } + if (!found_language_list) { + // inherit from parent layout + struct rxkb_iso639_code* x; + list_for_each(x, &l->iso639s, base.link) { + struct rxkb_iso639_code* code = rxkb_iso639_code_create(&v->base); + code->code = strdup(x->code); + list_append(&v->iso639s, &code->base.link); + } + } + if (!found_country_list) { + // inherit from parent layout + struct rxkb_iso3166_code* x; + list_for_each(x, &l->iso3166s, base.link) { + struct rxkb_iso3166_code* code = rxkb_iso3166_code_create(&v->base); + code->code = strdup(x->code); + list_append(&v->iso3166s, &code->base.link); + } } } } else { @@ -1193,7 +1232,6 @@ parse(struct rxkb_context *ctx, const char *path, success = true; error: xmlFreeDoc(doc); - xmlCleanupParser(); return success; } diff --git a/src/utils.h b/src/utils.h index cd3e9b1..7557dab 100644 --- a/src/utils.h +++ b/src/utils.h @@ -66,6 +66,7 @@ istrncmp(const char *a, const char *b, size_t n); static inline bool streq(const char *s1, const char *s2) { + assert(s1 && s2); return strcmp(s1, s2) == 0; } diff --git a/src/x11/keymap.c b/src/x11/keymap.c index f5b368f..473a89d 100644 --- a/src/x11/keymap.c +++ b/src/x11/keymap.c @@ -88,6 +88,33 @@ } \ } while (0) +static const xcb_xkb_map_part_t get_map_required_components = + (XCB_XKB_MAP_PART_KEY_TYPES | + XCB_XKB_MAP_PART_KEY_SYMS | + XCB_XKB_MAP_PART_MODIFIER_MAP | + XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS | + XCB_XKB_MAP_PART_KEY_ACTIONS | + XCB_XKB_MAP_PART_VIRTUAL_MODS | + XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP); + +static const xcb_xkb_name_detail_t get_names_wanted = + (XCB_XKB_NAME_DETAIL_KEYCODES | + XCB_XKB_NAME_DETAIL_SYMBOLS | + XCB_XKB_NAME_DETAIL_TYPES | + XCB_XKB_NAME_DETAIL_COMPAT | + XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | + XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | + XCB_XKB_NAME_DETAIL_INDICATOR_NAMES | + XCB_XKB_NAME_DETAIL_KEY_NAMES | + XCB_XKB_NAME_DETAIL_KEY_ALIASES | + XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES | + XCB_XKB_NAME_DETAIL_GROUP_NAMES); +static const xcb_xkb_name_detail_t get_names_required = + (XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | + XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | + XCB_XKB_NAME_DETAIL_KEY_NAMES | + XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES); + static xkb_mod_mask_t translate_mods(uint8_t rmods, uint16_t vmods_low, uint16_t vmods_high) @@ -645,26 +672,15 @@ fail: } static bool -get_map(struct xkb_keymap *keymap, xcb_connection_t *conn, uint16_t device_id) +get_map(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_cookie_t cookie) { - static const xcb_xkb_map_part_t required_components = - (XCB_XKB_MAP_PART_KEY_TYPES | - XCB_XKB_MAP_PART_KEY_SYMS | - XCB_XKB_MAP_PART_MODIFIER_MAP | - XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS | - XCB_XKB_MAP_PART_KEY_ACTIONS | - XCB_XKB_MAP_PART_VIRTUAL_MODS | - XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP); - - xcb_xkb_get_map_cookie_t cookie = - xcb_xkb_get_map(conn, device_id, required_components, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); xcb_xkb_get_map_reply_t *reply = xcb_xkb_get_map_reply(conn, cookie, NULL); xcb_xkb_get_map_map_t map; FAIL_IF_BAD_REPLY(reply, "XkbGetMap"); - if ((reply->present & required_components) != required_components) + if ((reply->present & get_map_required_components) != get_map_required_components) goto fail; xcb_xkb_get_map_map_unpack(xcb_xkb_get_map_map(reply), @@ -749,10 +765,8 @@ get_indicators(struct xkb_keymap *keymap, xcb_connection_t *conn, static bool get_indicator_map(struct xkb_keymap *keymap, xcb_connection_t *conn, - uint16_t device_id) + xcb_xkb_get_indicator_map_cookie_t cookie) { - xcb_xkb_get_indicator_map_cookie_t cookie = - xcb_xkb_get_indicator_map(conn, device_id, ALL_INDICATORS_MASK); xcb_xkb_get_indicator_map_reply_t *reply = xcb_xkb_get_indicator_map_reply(conn, cookie, NULL); @@ -831,10 +845,8 @@ fail: static bool get_compat_map(struct xkb_keymap *keymap, xcb_connection_t *conn, - uint16_t device_id) + xcb_xkb_get_compat_map_cookie_t cookie) { - xcb_xkb_get_compat_map_cookie_t cookie = - xcb_xkb_get_compat_map(conn, device_id, 0, true, 0, 0); xcb_xkb_get_compat_map_reply_t *reply = xcb_xkb_get_compat_map_reply(conn, cookie, NULL); @@ -852,7 +864,7 @@ fail: } static bool -get_type_names(struct xkb_keymap *keymap, xcb_connection_t *conn, +get_type_names(struct xkb_keymap *keymap, struct x11_atom_interner *interner, xcb_xkb_get_names_reply_t *reply, xcb_xkb_get_names_value_list_t *list) { @@ -880,13 +892,11 @@ get_type_names(struct xkb_keymap *keymap, xcb_connection_t *conn, ALLOC_OR_FAIL(type->level_names, type->num_levels); - if (!adopt_atom(keymap->ctx, conn, wire_type_name, &type->name)) - goto fail; - - if (!adopt_atoms(keymap->ctx, conn, - kt_level_names_iter, type->level_names, - wire_num_levels)) - goto fail; + x11_atom_interner_adopt_atom(interner, wire_type_name, &type->name); + for (size_t j = 0; j < wire_num_levels; j++) { + x11_atom_interner_adopt_atom(interner, kt_level_names_iter[j], + &type->level_names[j]); + } type->num_level_names = type->num_levels; kt_level_names_iter += wire_num_levels; @@ -901,7 +911,8 @@ fail: } static bool -get_indicator_names(struct xkb_keymap *keymap, xcb_connection_t *conn, +get_indicator_names(struct xkb_keymap *keymap, + struct x11_atom_interner *interner, xcb_xkb_get_names_reply_t *reply, xcb_xkb_get_names_value_list_t *list) { @@ -914,8 +925,7 @@ get_indicator_names(struct xkb_keymap *keymap, xcb_connection_t *conn, xcb_atom_t wire = *iter; struct xkb_led *led = &keymap->leds[i]; - if (!adopt_atom(keymap->ctx, conn, wire, &led->name)) - return false; + x11_atom_interner_adopt_atom(interner, wire, &led->name); iter++; } @@ -928,7 +938,7 @@ fail: } static bool -get_vmod_names(struct xkb_keymap *keymap, xcb_connection_t *conn, +get_vmod_names(struct xkb_keymap *keymap, struct x11_atom_interner *interner, xcb_xkb_get_names_reply_t *reply, xcb_xkb_get_names_value_list_t *list) { @@ -947,8 +957,7 @@ get_vmod_names(struct xkb_keymap *keymap, xcb_connection_t *conn, xcb_atom_t wire = *iter; struct xkb_mod *mod = &keymap->mods.mods[NUM_REAL_MODS + i]; - if (!adopt_atom(keymap->ctx, conn, wire, &mod->name)) - return false; + x11_atom_interner_adopt_atom(interner, wire, &mod->name); iter++; } @@ -958,7 +967,7 @@ get_vmod_names(struct xkb_keymap *keymap, xcb_connection_t *conn, } static bool -get_group_names(struct xkb_keymap *keymap, xcb_connection_t *conn, +get_group_names(struct xkb_keymap *keymap, struct x11_atom_interner *interner, xcb_xkb_get_names_reply_t *reply, xcb_xkb_get_names_value_list_t *list) { @@ -968,9 +977,10 @@ get_group_names(struct xkb_keymap *keymap, xcb_connection_t *conn, keymap->num_group_names = msb_pos(reply->groupNames); ALLOC_OR_FAIL(keymap->group_names, keymap->num_group_names); - if (!adopt_atoms(keymap->ctx, conn, - iter, keymap->group_names, length)) - goto fail; + for (int i = 0; i < length; i++) { + x11_atom_interner_adopt_atom(interner, iter[i], + &keymap->group_names[i]); + } return true; @@ -1051,36 +1061,17 @@ fail: } static bool -get_names(struct xkb_keymap *keymap, xcb_connection_t *conn, - uint16_t device_id) +get_names(struct xkb_keymap *keymap, struct x11_atom_interner *interner, + xcb_xkb_get_names_cookie_t cookie) { - static const xcb_xkb_name_detail_t wanted = - (XCB_XKB_NAME_DETAIL_KEYCODES | - XCB_XKB_NAME_DETAIL_SYMBOLS | - XCB_XKB_NAME_DETAIL_TYPES | - XCB_XKB_NAME_DETAIL_COMPAT | - XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | - XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | - XCB_XKB_NAME_DETAIL_INDICATOR_NAMES | - XCB_XKB_NAME_DETAIL_KEY_NAMES | - XCB_XKB_NAME_DETAIL_KEY_ALIASES | - XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES | - XCB_XKB_NAME_DETAIL_GROUP_NAMES); - static const xcb_xkb_name_detail_t required = - (XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | - XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | - XCB_XKB_NAME_DETAIL_KEY_NAMES | - XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES); - - xcb_xkb_get_names_cookie_t cookie = - xcb_xkb_get_names(conn, device_id, wanted); + xcb_connection_t *conn = interner->conn; xcb_xkb_get_names_reply_t *reply = xcb_xkb_get_names_reply(conn, cookie, NULL); xcb_xkb_get_names_value_list_t list; FAIL_IF_BAD_REPLY(reply, "XkbGetNames"); - FAIL_UNLESS((reply->which & required) == required); + FAIL_UNLESS((reply->which & get_names_required) == get_names_required); xcb_xkb_get_names_value_list_unpack(xcb_xkb_get_names_value_list(reply), reply->nTypes, @@ -1093,23 +1084,22 @@ get_names(struct xkb_keymap *keymap, xcb_connection_t *conn, reply->which, &list); - if (!get_atom_name(conn, list.keycodesName, &keymap->keycodes_section_name) || - !get_atom_name(conn, list.symbolsName, &keymap->symbols_section_name) || - !get_atom_name(conn, list.typesName, &keymap->types_section_name) || - !get_atom_name(conn, list.compatName, &keymap->compat_section_name) || - !get_type_names(keymap, conn, reply, &list) || - !get_indicator_names(keymap, conn, reply, &list) || - !get_vmod_names(keymap, conn, reply, &list) || - !get_group_names(keymap, conn, reply, &list) || + x11_atom_interner_get_escaped_atom_name(interner, list.keycodesName, + &keymap->keycodes_section_name); + x11_atom_interner_get_escaped_atom_name(interner, list.symbolsName, + &keymap->symbols_section_name); + x11_atom_interner_get_escaped_atom_name(interner, list.typesName, + &keymap->types_section_name); + x11_atom_interner_get_escaped_atom_name(interner, list.compatName, + &keymap->compat_section_name); + if (!get_type_names(keymap, interner, reply, &list) || + !get_indicator_names(keymap, interner, reply, &list) || + !get_vmod_names(keymap, interner, reply, &list) || + !get_group_names(keymap, interner, reply, &list) || !get_key_names(keymap, conn, reply, &list) || !get_aliases(keymap, conn, reply, &list)) goto fail; - XkbEscapeMapName(keymap->keycodes_section_name); - XkbEscapeMapName(keymap->symbols_section_name); - XkbEscapeMapName(keymap->types_section_name); - XkbEscapeMapName(keymap->compat_section_name); - free(reply); return true; @@ -1120,10 +1110,8 @@ fail: static bool get_controls(struct xkb_keymap *keymap, xcb_connection_t *conn, - uint16_t device_id) + xcb_xkb_get_controls_cookie_t cookie) { - xcb_xkb_get_controls_cookie_t cookie = - xcb_xkb_get_controls(conn, device_id); xcb_xkb_get_controls_reply_t *reply = xcb_xkb_get_controls_reply(conn, cookie, NULL); @@ -1169,14 +1157,52 @@ xkb_x11_keymap_new_from_device(struct xkb_context *ctx, if (!keymap) return NULL; - if (!get_map(keymap, conn, device_id) || - !get_indicator_map(keymap, conn, device_id) || - !get_compat_map(keymap, conn, device_id) || - !get_names(keymap, conn, device_id) || - !get_controls(keymap, conn, device_id)) { - xkb_keymap_unref(keymap); - return NULL; - } + struct x11_atom_interner interner; + x11_atom_interner_init(&interner, ctx, conn); + + /* + * Send all requests together so only one roundtrip is needed + * to get the replies. + */ + xcb_xkb_get_map_cookie_t map_cookie = + xcb_xkb_get_map(conn, device_id, get_map_required_components, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + xcb_xkb_get_indicator_map_cookie_t indicator_map_cookie = + xcb_xkb_get_indicator_map(conn, device_id, ALL_INDICATORS_MASK); + xcb_xkb_get_compat_map_cookie_t compat_map_cookie = + xcb_xkb_get_compat_map(conn, device_id, 0, true, 0, 0); + xcb_xkb_get_names_cookie_t names_cookie = + xcb_xkb_get_names(conn, device_id, get_names_wanted); + xcb_xkb_get_controls_cookie_t controls_cookie = + xcb_xkb_get_controls(conn, device_id); + + if (!get_map(keymap, conn, map_cookie)) + goto err_map; + if (!get_indicator_map(keymap, conn, indicator_map_cookie)) + goto err_indicator_map; + if (!get_compat_map(keymap, conn, compat_map_cookie)) + goto err_compat_map; + if (!get_names(keymap, &interner, names_cookie)) + goto err_names; + if (!get_controls(keymap, conn, controls_cookie)) + goto err_controls; + x11_atom_interner_round_trip(&interner); + if (interner.had_error) + goto err_interner; return keymap; + +err_map: + xcb_discard_reply(conn, indicator_map_cookie.sequence); +err_indicator_map: + xcb_discard_reply(conn, compat_map_cookie.sequence); +err_compat_map: + xcb_discard_reply(conn, names_cookie.sequence); +err_names: + xcb_discard_reply(conn, controls_cookie.sequence); +err_controls: + x11_atom_interner_round_trip(&interner); +err_interner: + xkb_keymap_unref(keymap); + return NULL; } diff --git a/src/x11/util.c b/src/x11/util.c index 660d885..cc4c71c 100644 --- a/src/x11/util.c +++ b/src/x11/util.c @@ -124,37 +124,6 @@ xkb_x11_get_core_keyboard_device_id(xcb_connection_t *conn) return device_id; } -bool -get_atom_name(xcb_connection_t *conn, xcb_atom_t atom, char **out) -{ - xcb_get_atom_name_cookie_t cookie; - xcb_get_atom_name_reply_t *reply; - int length; - char *name; - - if (atom == 0) { - *out = NULL; - return true; - } - - cookie = xcb_get_atom_name(conn, atom); - reply = xcb_get_atom_name_reply(conn, cookie, NULL); - if (!reply) - return false; - - length = xcb_get_atom_name_name_length(reply); - name = xcb_get_atom_name_name(reply); - - *out = strndup(name, length); - if (!*out) { - free(reply); - return false; - } - - free(reply); - return true; -} - struct x11_atom_cache { /* * Invalidate the cache based on the XCB connection. @@ -169,14 +138,9 @@ struct x11_atom_cache { size_t len; }; -bool -adopt_atoms(struct xkb_context *ctx, xcb_connection_t *conn, - const xcb_atom_t *from, xkb_atom_t *to, const size_t count) +static struct x11_atom_cache * +get_cache(struct xkb_context *ctx, xcb_connection_t *conn) { - enum { SIZE = 128 }; - xcb_get_atom_name_cookie_t cookies[SIZE]; - const size_t num_batches = ROUNDUP(count, SIZE) / SIZE; - if (!ctx->x11_atom_cache) { ctx->x11_atom_cache = calloc(1, sizeof(struct x11_atom_cache)); } @@ -186,79 +150,149 @@ adopt_atoms(struct xkb_context *ctx, xcb_connection_t *conn, cache->conn = conn; cache->len = 0; } + return cache; +} - memset(to, 0, count * sizeof(*to)); - - /* Send and collect the atoms in batches of reasonable SIZE. */ - for (size_t batch = 0; batch < num_batches; batch++) { - const size_t start = batch * SIZE; - const size_t stop = MIN((batch + 1) * SIZE, count); - - /* Send. */ - for (size_t i = start; i < stop; i++) { - bool cache_hit = false; - if (cache) { - for (size_t c = 0; c < cache->len; c++) { - if (cache->cache[c].from == from[i]) { - to[i] = cache->cache[c].to; - cache_hit = true; - break; - } - } +void +x11_atom_interner_init(struct x11_atom_interner *interner, + struct xkb_context *ctx, xcb_connection_t *conn) +{ + interner->had_error = false; + interner->ctx = ctx; + interner->conn = conn; + interner->num_pending = 0; + interner->num_copies = 0; + interner->num_escaped = 0; +} + +void +x11_atom_interner_adopt_atom(struct x11_atom_interner *interner, + const xcb_atom_t atom, xkb_atom_t *out) +{ + *out = XKB_ATOM_NONE; + + if (atom == XCB_ATOM_NONE) + return; + + /* Can be NULL in case the malloc failed. */ + struct x11_atom_cache *cache = get_cache(interner->ctx, interner->conn); + +retry: + + /* Already in the cache? */ + if (cache) { + for (size_t c = 0; c < cache->len; c++) { + if (cache->cache[c].from == atom) { + *out = cache->cache[c].to; + return; } - if (!cache_hit && from[i] != XCB_ATOM_NONE) - cookies[i % SIZE] = xcb_get_atom_name(conn, from[i]); } + } - /* Collect. */ - for (size_t i = start; i < stop; i++) { - xcb_get_atom_name_reply_t *reply; - - if (from[i] == XCB_ATOM_NONE) - continue; + /* Already pending? */ + for (size_t i = 0; i < interner->num_pending; i++) { + if (interner->pending[i].from == atom) { + if (interner->num_copies == ARRAY_SIZE(interner->copies)) { + x11_atom_interner_round_trip(interner); + goto retry; + } - /* Was filled from cache. */ - if (to[i] != 0) - continue; + size_t idx = interner->num_copies++; + interner->copies[idx].from = atom; + interner->copies[idx].out = out; + return; + } + } - reply = xcb_get_atom_name_reply(conn, cookies[i % SIZE], NULL); - if (!reply) - goto err_discard; + /* We have to send a GetAtomName request */ + if (interner->num_pending == ARRAY_SIZE(interner->pending)) { + x11_atom_interner_round_trip(interner); + assert(interner->num_pending < ARRAY_SIZE(interner->pending)); + } + size_t idx = interner->num_pending++; + interner->pending[idx].from = atom; + interner->pending[idx].out = out; + interner->pending[idx].cookie = xcb_get_atom_name(interner->conn, atom); +} - to[i] = xkb_atom_intern(ctx, - xcb_get_atom_name_name(reply), - xcb_get_atom_name_name_length(reply)); - free(reply); +void +x11_atom_interner_round_trip(struct x11_atom_interner *interner) { + struct xkb_context *ctx = interner->ctx; + xcb_connection_t *conn = interner->conn; - if (to[i] == XKB_ATOM_NONE) - goto err_discard; + /* Can be NULL in case the malloc failed. */ + struct x11_atom_cache *cache = get_cache(ctx, conn); - if (cache && cache->len < ARRAY_SIZE(cache->cache)) { - size_t idx = cache->len++; - cache->cache[idx].from = from[i]; - cache->cache[idx].to = to[i]; - } + for (size_t i = 0; i < interner->num_pending; i++) { + xcb_get_atom_name_reply_t *reply; + reply = xcb_get_atom_name_reply(conn, interner->pending[i].cookie, NULL); + if (!reply) { + interner->had_error = true; continue; + } + xcb_atom_t x11_atom = interner->pending[i].from; + xkb_atom_t atom = xkb_atom_intern(ctx, + xcb_get_atom_name_name(reply), + xcb_get_atom_name_name_length(reply)); + free(reply); - /* - * If we don't discard the uncollected replies, they just - * sit in the XCB queue waiting forever. Sad. - */ -err_discard: - for (size_t j = i + 1; j < stop; j++) - if (from[j] != XCB_ATOM_NONE) - xcb_discard_reply(conn, cookies[j % SIZE].sequence); - return false; + if (cache && cache->len < ARRAY_SIZE(cache->cache)) { + size_t idx = cache->len++; + cache->cache[idx].from = x11_atom; + cache->cache[idx].to = atom; + } + + *interner->pending[i].out = atom; + + for (size_t j = 0; j < interner->num_copies; j++) { + if (interner->copies[j].from == x11_atom) + *interner->copies[j].out = atom; } } - return true; + for (size_t i = 0; i < interner->num_escaped; i++) { + xcb_get_atom_name_reply_t *reply; + int length; + char *name; + char **out = interner->escaped[i].out; + + reply = xcb_get_atom_name_reply(conn, interner->escaped[i].cookie, NULL); + *interner->escaped[i].out = NULL; + if (!reply) { + interner->had_error = true; + } else { + length = xcb_get_atom_name_name_length(reply); + name = xcb_get_atom_name_name(reply); + + *out = strndup(name, length); + free(reply); + if (*out == NULL) { + interner->had_error = true; + } else { + XkbEscapeMapName(*out); + } + } + } + + interner->num_pending = 0; + interner->num_copies = 0; + interner->num_escaped = 0; } -bool -adopt_atom(struct xkb_context *ctx, xcb_connection_t *conn, xcb_atom_t atom, - xkb_atom_t *out) +void +x11_atom_interner_get_escaped_atom_name(struct x11_atom_interner *interner, + xcb_atom_t atom, char **out) { - return adopt_atoms(ctx, conn, &atom, out, 1); + if (atom == 0) { + *out = NULL; + return; + } + size_t idx = interner->num_escaped++; + /* There can only be a fixed number of calls to this function "in-flight", + * thus we assert this number. Increase the array size if this assert fails. + */ + assert(idx < ARRAY_SIZE(interner->escaped)); + interner->escaped[idx].out = out; + interner->escaped[idx].cookie = xcb_get_atom_name(interner->conn, atom); } diff --git a/src/x11/x11-priv.h b/src/x11/x11-priv.h index 3a19e99..7f37fd5 100644 --- a/src/x11/x11-priv.h +++ b/src/x11/x11-priv.h @@ -29,26 +29,52 @@ #include "keymap.h" #include "xkbcommon/xkbcommon-x11.h" -/* Get a strdup'd name of an X atom. */ -bool -get_atom_name(xcb_connection_t *conn, xcb_atom_t atom, char **out); +struct x11_atom_interner { + struct xkb_context *ctx; + xcb_connection_t *conn; + bool had_error; + /* Atoms for which we send a GetAtomName request */ + struct { + xcb_atom_t from; + xkb_atom_t *out; + xcb_get_atom_name_cookie_t cookie; + } pending[128]; + size_t num_pending; + /* Atoms which were already pending but queried again */ + struct { + xcb_atom_t from; + xkb_atom_t *out; + } copies[128]; + size_t num_copies; + /* These are not interned, but saved directly (after XkbEscapeMapName) */ + struct { + xcb_get_atom_name_cookie_t cookie; + char **out; + } escaped[4]; + size_t num_escaped; +}; + +void +x11_atom_interner_init(struct x11_atom_interner *interner, + struct xkb_context *ctx, xcb_connection_t *conn); + +void +x11_atom_interner_round_trip(struct x11_atom_interner *interner); /* - * Make a xkb_atom_t's from X atoms (prefer to send as many as possible - * at once, to avoid many roundtrips). - * - * TODO: We can make this more flexible, such that @to doesn't have to - * be sequential. Then we can convert most adopt_atom() calls to - * adopt_atoms(). - * Atom caching would also likely be useful for avoiding quite a - * few requests. + * Make a xkb_atom_t's from X atoms. The actual write is delayed until the next + * call to x11_atom_interner_round_trip() or when too many atoms are pending. */ -bool -adopt_atoms(struct xkb_context *ctx, xcb_connection_t *conn, - const xcb_atom_t *from, xkb_atom_t *to, size_t count); +void +x11_atom_interner_adopt_atom(struct x11_atom_interner *interner, + const xcb_atom_t atom, xkb_atom_t *out); -bool -adopt_atom(struct xkb_context *ctx, xcb_connection_t *conn, xcb_atom_t atom, - xkb_atom_t *out); +/* + * Get a strdup'd and XkbEscapeMapName'd name of an X atom. The actual write is + * delayed until the next call to x11_atom_interner_round_trip(). + */ +void +x11_atom_interner_get_escaped_atom_name(struct x11_atom_interner *interner, + xcb_atom_t atom, char **out); #endif diff --git a/src/xkbcomp/.gitignore b/src/xkbcomp/.gitignore deleted file mode 100644 index d7814e4..0000000 --- a/src/xkbcomp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -parser.c -parser.h diff --git a/src/xkbcomp/action.c b/src/xkbcomp/action.c index 605f159..e2d4c40 100644 --- a/src/xkbcomp/action.c +++ b/src/xkbcomp/action.c @@ -700,15 +700,16 @@ HandlePrivate(struct xkb_context *ctx, const struct xkb_mod_set *mods, str = xkb_atom_text(ctx, val); len = strlen(str); - if (len < 1 || len > 7) { + if (len < 1 || len > sizeof(act->data)) { log_warn(ctx, - "A private action has 7 data bytes; " - "Illegal data ignored\n"); + "A private action has %ld data bytes; " + "Illegal data ignored\n", sizeof(act->data)); return false; } /* act->data may not be null-terminated, this is intentional */ - strncpy((char *) act->data, str, sizeof(act->data)); + memset(act->data, 0, sizeof(act->data)); + memcpy(act->data, str, len); return true; } else { diff --git a/src/xkbcomp/ast-build.c b/src/xkbcomp/ast-build.c index 7ee13d0..347eed8 100644 --- a/src/xkbcomp/ast-build.c +++ b/src/xkbcomp/ast-build.c @@ -462,15 +462,16 @@ IncludeStmt * IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge) { IncludeStmt *incl, *first; - char *file, *map, *stmt, *tmp, *extra_data; + char *stmt, *tmp; char nextop; incl = first = NULL; - file = map = NULL; tmp = str; stmt = strdup_safe(str); while (tmp && *tmp) { + char *file = NULL, *map = NULL, *extra_data = NULL; + if (!ParseIncludeMap(&tmp, &file, &map, &nextop, &extra_data)) goto err; @@ -494,8 +495,12 @@ IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge) incl = incl->next_incl; } - if (!incl) + if (!incl) { + free(file); + free(map); + free(extra_data); break; + } incl->common.type = STMT_INCLUDE; incl->common.next = NULL; diff --git a/src/xkbcomp/ast.h b/src/xkbcomp/ast.h index ee61106..6c51ce4 100644 --- a/src/xkbcomp/ast.h +++ b/src/xkbcomp/ast.h @@ -243,7 +243,6 @@ typedef struct { union ExprDef { ParseCommon common; - /* Maybe someday we can use C11 anonymous struct for ExprCommon here. */ ExprCommon expr; ExprIdent ident; ExprString string; diff --git a/src/xkbcomp/compat.c b/src/xkbcomp/compat.c index 26b2bb7..b8922c9 100644 --- a/src/xkbcomp/compat.c +++ b/src/xkbcomp/compat.c @@ -690,7 +690,7 @@ HandleInterpDef(CompatInfo *info, InterpDef *def, enum merge_mode merge) } si = info->default_interp; - si.merge = merge = (def->merge == MERGE_DEFAULT ? merge : def->merge); + si.merge = (def->merge == MERGE_DEFAULT ? merge : def->merge); si.interp.sym = def->sym; si.interp.match = pred; si.interp.mods = mods; diff --git a/test/.gitignore b/test/.gitignore deleted file mode 100644 index def76f0..0000000 --- a/test/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -*.log -*.trs -filecomp -rulescomp -keymap -keysym -state -context -rules-file -stringcomp -buffercomp -keyseq -log -interactive-evdev -rmlvo-to-kccgst -rmlvo-to-keymap -print-compiled-keymap -atom -x11 -interactive-x11 -interactive-wayland -utf8 -x11comp -compose diff --git a/test/compose.c b/test/compose.c index 5ba5751..35790a3 100644 --- a/test/compose.c +++ b/test/compose.c @@ -179,7 +179,7 @@ test_seqs(struct xkb_context *ctx) char *path; FILE *file; - path = test_get_path("compose/en_US.UTF-8/Compose"); + path = test_get_path("locale/en_US.UTF-8/Compose"); file = fopen(path, "rb"); assert(file); free(path); @@ -353,7 +353,7 @@ test_state(struct xkb_context *ctx) char *path; FILE *file; - path = test_get_path("compose/en_US.UTF-8/Compose"); + path = test_get_path("locale/en_US.UTF-8/Compose"); file = fopen(path, "rb"); assert(file); free(path); @@ -410,7 +410,7 @@ test_XCOMPOSEFILE(struct xkb_context *ctx) struct xkb_compose_table *table; char *path; - path = test_get_path("compose/en_US.UTF-8/Compose"); + path = test_get_path("locale/en_US.UTF-8/Compose"); setenv("XCOMPOSEFILE", path, 1); free(path); @@ -418,6 +418,8 @@ test_XCOMPOSEFILE(struct xkb_context *ctx) XKB_COMPOSE_COMPILE_NO_FLAGS); assert(table); + unsetenv("XCOMPOSEFILE"); + assert(test_compose_seq(table, XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, @@ -427,6 +429,49 @@ test_XCOMPOSEFILE(struct xkb_context *ctx) } static void +test_from_locale(struct xkb_context *ctx) +{ + struct xkb_compose_table *table; + char *path; + + path = test_get_path("locale"); + setenv("XLOCALEDIR", path, 1); + free(path); + + /* Direct directory name match. */ + table = xkb_compose_table_new_from_locale(ctx, "en_US.UTF-8", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + xkb_compose_table_unref(table); + + /* Direct locale name match. */ + table = xkb_compose_table_new_from_locale(ctx, "C.UTF-8", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + xkb_compose_table_unref(table); + + /* Alias. */ + table = xkb_compose_table_new_from_locale(ctx, "univ.utf8", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + xkb_compose_table_unref(table); + + /* Special case - C. */ + table = xkb_compose_table_new_from_locale(ctx, "C", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + xkb_compose_table_unref(table); + + /* Bogus - not found. */ + table = xkb_compose_table_new_from_locale(ctx, "blabla", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(!table); + + unsetenv("XLOCALEDIR"); +} + + +static void test_modifier_syntax(struct xkb_context *ctx) { const char *table_string; @@ -486,7 +531,7 @@ test_include(struct xkb_context *ctx) { char *path, *table_string; - path = test_get_path("compose/en_US.UTF-8/Compose"); + path = test_get_path("locale/en_US.UTF-8/Compose"); assert(path); /* We don't have a mechanism to change the include paths like we @@ -526,6 +571,7 @@ main(int argc, char *argv[]) test_seqs(ctx); test_conflicting(ctx); test_XCOMPOSEFILE(ctx); + test_from_locale(ctx); test_state(ctx); test_modifier_syntax(ctx); test_include(ctx); diff --git a/test/data/locale/compose.dir b/test/data/locale/compose.dir new file mode 100644 index 0000000..ee88bdc --- /dev/null +++ b/test/data/locale/compose.dir @@ -0,0 +1,944 @@ +# +# This file contains compose table file names. +# The first word is the compose table file name +# and the second word is the full locale name. +# +# +iso8859-1/Compose C +iso8859-1/Compose af_ZA.ISO8859-1 +iso8859-6/Compose ar_AA.ISO8859-6 +iso8859-6/Compose ar_AE.ISO8859-6 +iso8859-6/Compose ar_BH.ISO8859-6 +iso8859-6/Compose ar_DZ.ISO8859-6 +iso8859-6/Compose ar_EG.ISO8859-6 +iso8859-6/Compose ar_IQ.ISO8859-6 +iso8859-6/Compose ar_JO.ISO8859-6 +iso8859-6/Compose ar_KW.ISO8859-6 +iso8859-6/Compose ar_LB.ISO8859-6 +iso8859-6/Compose ar_LY.ISO8859-6 +iso8859-6/Compose ar_MA.ISO8859-6 +iso8859-6/Compose ar_OM.ISO8859-6 +iso8859-6/Compose ar_QA.ISO8859-6 +iso8859-6/Compose ar_SA.ISO8859-6 +iso8859-6/Compose ar_SD.ISO8859-6 +iso8859-6/Compose ar_SY.ISO8859-6 +iso8859-6/Compose ar_TN.ISO8859-6 +iso8859-6/Compose ar_YE.ISO8859-6 +iso8859-9e/Compose az_AZ.ISO8859-9E +koi8-c/Compose az_AZ.KOI8-C +microsoft-cp1251/Compose be_BY.CP1251 +iso8859-5/Compose be_BY.ISO8859-5 +iso8859-5/Compose bg_BG.ISO8859-5 +microsoft-cp1251/Compose bg_BG.CP1251 +koi8-r/Compose bg_BG.KOI8-R +iso8859-1/Compose br_FR.ISO8859-1 +iso8859-14/Compose br_FR.ISO8859-14 +iso8859-15/Compose br_FR.ISO8859-15 +iso8859-2/Compose bs_BA.ISO8859-2 +iso8859-1/Compose ca_AD.ISO8859-1 +iso8859-15/Compose ca_AD.ISO8859-15 +iso8859-1/Compose ca_ES.ISO8859-1 +iso8859-15/Compose ca_ES.ISO8859-15 +iso8859-1/Compose ca_FR.ISO8859-1 +iso8859-15/Compose ca_FR.ISO8859-15 +iso8859-1/Compose ca_IT.ISO8859-1 +iso8859-15/Compose ca_IT.ISO8859-15 +iso8859-2/Compose cs_CZ.ISO8859-2 +iso8859-1/Compose cy_GB.ISO8859-1 +iso8859-14/Compose cy_GB.ISO8859-14 +iso8859-15/Compose cy_GB.ISO8859-15 +iso8859-1/Compose da_DK.ISO8859-1 +iso8859-15/Compose da_DK.ISO8859-15 +iso8859-1/Compose de_AT.ISO8859-1 +iso8859-15/Compose de_AT.ISO8859-15 +iso8859-1/Compose de_BE.ISO8859-1 +iso8859-15/Compose de_BE.ISO8859-15 +iso8859-1/Compose de_CH.ISO8859-1 +iso8859-15/Compose de_CH.ISO8859-15 +iso8859-1/Compose de_DE.ISO8859-1 +iso8859-15/Compose de_DE.ISO8859-15 +iso8859-1/Compose de_LI.ISO8859-1 +iso8859-15/Compose de_LI.ISO8859-15 +iso8859-1/Compose de_LU.ISO8859-1 +iso8859-15/Compose de_LU.ISO8859-15 +iso8859-4/Compose ee_EE.ISO8859-4 +iso8859-7/Compose el_GR.ISO8859-7 +iso8859-15/Compose el_GR.ISO8859-15 +iso8859-1/Compose en_AU.ISO8859-1 +iso8859-1/Compose en_BE.ISO8859-1 +iso8859-15/Compose en_BE.ISO8859-15 +iso8859-1/Compose en_BW.ISO8859-1 +iso8859-1/Compose en_BZ.ISO8859-1 +iso8859-1/Compose en_CA.ISO8859-1 +iso8859-1/Compose en_EN.ISO8859-1 +iso8859-1/Compose en_GB.ISO8859-1 +iso8859-15/Compose en_GB.ISO8859-15 +iso8859-1/Compose en_HK.ISO8859-1 +iso8859-1/Compose en_IE.ISO8859-1 +iso8859-15/Compose en_IE.ISO8859-15 +iso8859-15/Compose en_IN.ISO8859-15 +iso8859-1/Compose en_JM.ISO8859-1 +iso8859-1/Compose en_NZ.ISO8859-1 +iso8859-1/Compose en_PH.ISO8859-1 +iso8859-1/Compose en_SG.ISO8859-1 +iso8859-1/Compose en_TT.ISO8859-1 +iso8859-1/Compose en_UK.ISO8859-1 +iso8859-15/Compose en_UK.ISO8859-15 +iso8859-1/Compose en_US.ISO8859-1 +iso8859-15/Compose en_US.ISO8859-15 +iso8859-1/Compose en_ZA.ISO8859-1 +iso8859-15/Compose en_ZA.ISO8859-15 +iso8859-1/Compose en_ZW.ISO8859-1 +iso8859-3/Compose eo_EO.ISO8859-3 +iso8859-3/Compose eo_XX.ISO8859-3 +iso8859-1/Compose es_AR.ISO8859-1 +iso8859-1/Compose es_BO.ISO8859-1 +iso8859-1/Compose es_CL.ISO8859-1 +iso8859-1/Compose es_CO.ISO8859-1 +iso8859-1/Compose es_CR.ISO8859-1 +iso8859-1/Compose es_DO.ISO8859-1 +iso8859-1/Compose es_EC.ISO8859-1 +iso8859-1/Compose es_ES.ISO8859-1 +iso8859-15/Compose es_ES.ISO8859-15 +iso8859-1/Compose es_GT.ISO8859-1 +iso8859-1/Compose es_HN.ISO8859-1 +iso8859-1/Compose es_MX.ISO8859-1 +iso8859-1/Compose es_NI.ISO8859-1 +iso8859-1/Compose es_PA.ISO8859-1 +iso8859-15/Compose es_PA.ISO8859-15 +iso8859-1/Compose es_PE.ISO8859-1 +iso8859-15/Compose es_PE.ISO8859-15 +iso8859-1/Compose es_PR.ISO8859-1 +iso8859-1/Compose es_PY.ISO8859-1 +iso8859-15/Compose es_PY.ISO8859-15 +iso8859-1/Compose es_SV.ISO8859-1 +iso8859-15/Compose es_SV.ISO8859-15 +iso8859-1/Compose es_US.ISO8859-1 +iso8859-1/Compose es_UY.ISO8859-1 +iso8859-15/Compose es_UY.ISO8859-15 +iso8859-1/Compose es_VE.ISO8859-1 +iso8859-15/Compose es_VE.ISO8859-15 +iso8859-1/Compose et_EE.ISO8859-1 +iso8859-4/Compose et_EE.ISO8859-4 +iso8859-13/Compose et_EE.ISO8859-13 +iso8859-15/Compose et_EE.ISO8859-15 +iso8859-1/Compose eu_ES.ISO8859-1 +iso8859-15/Compose eu_ES.ISO8859-15 +isiri-3342/Compose fa_IR.ISIRI-3342 +iso8859-1/Compose fi_FI.ISO8859-1 +iso8859-15/Compose fi_FI.ISO8859-15 +iso8859-1/Compose fo_FO.ISO8859-1 +iso8859-15/Compose fo_FO.ISO8859-15 +iso8859-1/Compose fr_BE.ISO8859-1 +iso8859-15/Compose fr_BE.ISO8859-15 +iso8859-1/Compose fr_CA.ISO8859-1 +iso8859-15/Compose fr_CA.ISO8859-15 +iso8859-1/Compose fr_CH.ISO8859-1 +iso8859-15/Compose fr_CH.ISO8859-15 +iso8859-1/Compose fr_FR.ISO8859-1 +iso8859-15/Compose fr_FR.ISO8859-15 +iso8859-1/Compose fr_LU.ISO8859-1 +iso8859-15/Compose fr_LU.ISO8859-15 +iso8859-1/Compose ga_IE.ISO8859-1 +iso8859-14/Compose ga_IE.ISO8859-14 +iso8859-15/Compose ga_IE.ISO8859-15 +iso8859-1/Compose gd_GB.ISO8859-1 +iso8859-14/Compose gd_GB.ISO8859-14 +iso8859-15/Compose gd_GB.ISO8859-15 +iso8859-1/Compose gl_ES.ISO8859-1 +iso8859-15/Compose gl_ES.ISO8859-15 +iso8859-1/Compose gv_GB.ISO8859-1 +iso8859-14/Compose gv_GB.ISO8859-14 +iso8859-15/Compose gv_GB.ISO8859-15 +iso8859-8/Compose he_IL.ISO8859-8 +microsoft-cp1255/Compose he_IL.CP1255 +iscii-dev/Compose hi_IN.ISCII-DEV +iso8859-2/Compose hr_HR.ISO8859-2 +iso8859-2/Compose hu_HU.ISO8859-2 +armscii-8/Compose hy_AM.ARMSCII-8 +iso8859-1/Compose id_ID.ISO8859-1 +iso8859-15/Compose id_ID.ISO8859-15 +iso8859-1/Compose is_IS.ISO8859-1 +iso8859-15/Compose is_IS.ISO8859-15 +iso8859-1/Compose it_CH.ISO8859-1 +iso8859-15/Compose it_CH.ISO8859-15 +iso8859-1/Compose it_IT.ISO8859-1 +iso8859-15/Compose it_IT.ISO8859-15 +ja/Compose ja_JP.eucJP +ja.SJIS/Compose ja_JP.SJIS +ja.JIS/Compose ja_JP.JIS7 +georgian-academy/Compose ka_GE.GEORGIAN-ACADEMY +georgian-ps/Compose ka_GE.GEORGIAN-PS +iso8859-1/Compose kl_GL.ISO8859-1 +iso8859-15/Compose kl_GL.ISO8859-15 +iso8859-1/Compose kw_GB.ISO8859-1 +iso8859-14/Compose kw_GB.ISO8859-14 +iso8859-15/Compose kw_GB.ISO8859-15 +ko/Compose ko_KR.eucKR +ibm-cp1133/Compose lo_LA.IBM-CP1133 +mulelao-1/Compose lo_LA.MULELAO-1 +iso8859-4/Compose lt_LT.ISO8859-4 +iso8859-13/Compose lt_LT.ISO8859-13 +iso8859-4/Compose lv_LV.ISO8859-4 +iso8859-13/Compose lv_LV.ISO8859-13 +iso8859-13/Compose mi_NZ.ISO8859-13 +iso8859-5/Compose mk_MK.ISO8859-5 +microsoft-cp1251/Compose mk_MK.CP1251 +iso8859-1/Compose ms_MY.ISO8859-1 +iso8859-3/Compose mt_MT.ISO8859-3 +iso8859-1/Compose nl_BE.ISO8859-1 +iso8859-15/Compose nl_BE.ISO8859-15 +iso8859-1/Compose nl_NL.ISO8859-1 +iso8859-15/Compose nl_NL.ISO8859-15 +iso8859-1/Compose no_NO.ISO8859-1 +iso8859-15/Compose no_NO.ISO8859-15 +iso8859-1/Compose nb_NO.ISO8859-1 +iso8859-15/Compose nb_NO.ISO8859-15 +iso8859-1/Compose nn_NO.ISO8859-1 +iso8859-15/Compose nn_NO.ISO8859-15 +iso8859-1/Compose nr_ZA.ISO8859-1 +iso8859-15/Compose nso_ZA.ISO8859-15 +iso8859-1/Compose ny_NO.ISO8859-1 +iso8859-15/Compose ny_NO.ISO8859-15 +iso8859-1/Compose oc_FR.ISO8859-1 +iso8859-15/Compose oc_FR.ISO8859-15 +iso8859-1/Compose pd_DE.ISO8859-1 +iso8859-15/Compose pd_DE.ISO8859-15 +iso8859-1/Compose pd_US.ISO8859-1 +iso8859-15/Compose pd_US.ISO8859-15 +iso8859-1/Compose ph_PH.ISO8859-1 +iso8859-2/Compose pl_PL.ISO8859-2 +iso8859-1/Compose pp_AN.ISO8859-1 +iso8859-1/Compose pt_BR.ISO8859-1 +iso8859-15/Compose pt_BR.ISO8859-15 +iso8859-1/Compose pt_PT.ISO8859-1 +iso8859-15/Compose pt_PT.ISO8859-15 +iso8859-2/Compose ro_RO.ISO8859-2 +koi8-r/Compose ru_RU.KOI8-R +iso8859-5/Compose ru_RU.ISO8859-5 +microsoft-cp1251/Compose ru_RU.CP1251 +microsoft-cp1251/Compose ru_UA.CP1251 +koi8-u/Compose ru_UA.KOI8-U +iso8859-1/Compose rw_RW.ISO8859-1 +iso8859-2/Compose sh_YU.ISO8859-2 +iso8859-2/Compose sk_SK.ISO8859-2 +iso8859-2/Compose sl_SI.ISO8859-2 +iso8859-2/Compose sq_AL.ISO8859-2 +iso8859-2/Compose sr_YU.ISO8859-2 +microsoft-cp1251/Compose sr_YU.CP1251 +iso8859-5/Compose sr_YU.ISO8859-5 +iso8859-1/Compose ss_ZA.ISO8859-1 +iso8859-1/Compose st_ZA.ISO8859-1 +iso8859-1/Compose sv_FI.ISO8859-1 +iso8859-15/Compose sv_FI.ISO8859-15 +iso8859-1/Compose sv_SE.ISO8859-1 +iso8859-15/Compose sv_SE.ISO8859-15 +tscii-0/Compose ta_IN.TSCII-0 +koi8-c/Compose tg_TJ.KOI8-C +iso8859-1/Compose tl_PH.ISO8859-1 +iso8859-11/Compose th_TH.ISO8859-11 +th_TH/Compose th_TH.TIS620 +iso8859-15/Compose tn_ZA.ISO8859-15 +iso8859-9/Compose tr_TR.ISO8859-9 +iso8859-1/Compose ts_ZA.ISO8859-1 +tatar-cyr/Compose tt_RU.TATAR-CYR +microsoft-cp1251/Compose uk_UA.CP1251 +koi8-c/Compose tt_RU.KOI8-C +koi8-u/Compose uk_UA.KOI8-U +iso8859-5/Compose uk_UA.ISO8859-5 +microsoft-cp1256/Compose ur_PK.CP1256 +iso8859-1/Compose uz_UZ.ISO8859-1 +vi_VN.viscii/Compose vi_VN.VISCII +vi_VN.tcvn/Compose vi_VN.TCVN +iso8859-1/Compose wa_BE.ISO8859-1 +iso8859-15/Compose wa_BE.ISO8859-15 +iso8859-1/Compose xh_ZA.ISO8859-1 +microsoft-cp1255/Compose yi_US.CP1255 +zh_CN/Compose zh_CN.eucCN +zh_CN/Compose zh_CN.gb2312 +zh_CN.gbk/Compose zh_CN.gbk +zh_CN.gb18030/Compose zh_CN.gb18030 +zh_HK.big5/Compose zh_HK.big5 +zh_HK.big5hkscs/Compose zh_HK.big5hkscs +zh_TW.big5/Compose zh_TW.big5 +zh_TW/Compose zh_TW.eucTW +iso8859-1/Compose zu_ZA.ISO8859-1 +# +# +en_US.UTF-8/Compose C.UTF-8 +en_US.UTF-8/Compose af_ZA.UTF-8 +am_ET.UTF-8/Compose am_ET.UTF-8 +en_US.UTF-8/Compose ar_AA.UTF-8 +en_US.UTF-8/Compose ar_AE.UTF-8 +en_US.UTF-8/Compose ar_BH.UTF-8 +en_US.UTF-8/Compose ar_DZ.UTF-8 +en_US.UTF-8/Compose ar_EG.UTF-8 +en_US.UTF-8/Compose ar_IN.UTF-8 +en_US.UTF-8/Compose ar_IQ.UTF-8 +en_US.UTF-8/Compose ar_JO.UTF-8 +en_US.UTF-8/Compose ar_KW.UTF-8 +en_US.UTF-8/Compose ar_LB.UTF-8 +en_US.UTF-8/Compose ar_LY.UTF-8 +en_US.UTF-8/Compose ar_MA.UTF-8 +en_US.UTF-8/Compose ar_OM.UTF-8 +en_US.UTF-8/Compose ar_QA.UTF-8 +en_US.UTF-8/Compose ar_SA.UTF-8 +en_US.UTF-8/Compose ar_SD.UTF-8 +en_US.UTF-8/Compose ar_SY.UTF-8 +en_US.UTF-8/Compose ar_TN.UTF-8 +en_US.UTF-8/Compose ar_YE.UTF-8 +en_US.UTF-8/Compose ast_ES.UTF-8 +en_US.UTF-8/Compose as_IN.UTF-8 +en_US.UTF-8/Compose az_AZ.UTF-8 +en_US.UTF-8/Compose be_BY.UTF-8 +en_US.UTF-8/Compose bg_BG.UTF-8 +en_US.UTF-8/Compose bn_BD.UTF-8 +en_US.UTF-8/Compose bn_IN.UTF-8 +en_US.UTF-8/Compose bo_IN.UTF-8 +en_US.UTF-8/Compose br_FR.UTF-8 +en_US.UTF-8/Compose bs_BA.UTF-8 +en_US.UTF-8/Compose ca_AD.UTF-8 +en_US.UTF-8/Compose ca_ES.UTF-8 +en_US.UTF-8/Compose ca_FR.UTF-8 +en_US.UTF-8/Compose ca_IT.UTF-8 +cs_CZ.UTF-8/Compose cs_CZ.UTF-8 +en_US.UTF-8/Compose cy_GB.UTF-8 +en_US.UTF-8/Compose da_DK.UTF-8 +en_US.UTF-8/Compose de_AT.UTF-8 +en_US.UTF-8/Compose de_BE.UTF-8 +en_US.UTF-8/Compose de_CH.UTF-8 +en_US.UTF-8/Compose de_DE.UTF-8 +en_US.UTF-8/Compose de_IT.UTF-8 +en_US.UTF-8/Compose de_LI.UTF-8 +en_US.UTF-8/Compose de_LU.UTF-8 +el_GR.UTF-8/Compose el_CY.UTF-8 +el_GR.UTF-8/Compose el_GR.UTF-8 +en_US.UTF-8/Compose en_AU.UTF-8 +en_US.UTF-8/Compose en_BE.UTF-8 +en_US.UTF-8/Compose en_BW.UTF-8 +en_US.UTF-8/Compose en_BZ.UTF-8 +en_US.UTF-8/Compose en_CA.UTF-8 +en_US.UTF-8/Compose en_DK.UTF-8 +en_US.UTF-8/Compose en_EN.UTF-8 +en_US.UTF-8/Compose en_GB.UTF-8 +en_US.UTF-8/Compose en_HK.UTF-8 +en_US.UTF-8/Compose en_IE.UTF-8 +en_US.UTF-8/Compose en_IN.UTF-8 +en_US.UTF-8/Compose en_JM.UTF-8 +en_US.UTF-8/Compose en_MT.UTF-8 +en_US.UTF-8/Compose en_NZ.UTF-8 +en_US.UTF-8/Compose en_PH.UTF-8 +en_US.UTF-8/Compose en_SG.UTF-8 +en_US.UTF-8/Compose en_TT.UTF-8 +en_US.UTF-8/Compose en_UK.UTF-8 +en_US.UTF-8/Compose en_US.UTF-8 +en_US.UTF-8/Compose en_ZA.UTF-8 +en_US.UTF-8/Compose en_ZW.UTF-8 +en_US.UTF-8/Compose eo_EO.UTF-8 +en_US.UTF-8/Compose eo_XX.UTF-8 +en_US.UTF-8/Compose es_AR.UTF-8 +en_US.UTF-8/Compose es_BO.UTF-8 +en_US.UTF-8/Compose es_CL.UTF-8 +en_US.UTF-8/Compose es_CO.UTF-8 +en_US.UTF-8/Compose es_CR.UTF-8 +en_US.UTF-8/Compose es_DO.UTF-8 +en_US.UTF-8/Compose es_EC.UTF-8 +en_US.UTF-8/Compose es_ES.UTF-8 +en_US.UTF-8/Compose es_GT.UTF-8 +en_US.UTF-8/Compose es_HN.UTF-8 +en_US.UTF-8/Compose es_MX.UTF-8 +en_US.UTF-8/Compose es_NI.UTF-8 +en_US.UTF-8/Compose es_PA.UTF-8 +en_US.UTF-8/Compose es_PE.UTF-8 +en_US.UTF-8/Compose es_PR.UTF-8 +en_US.UTF-8/Compose es_PY.UTF-8 +en_US.UTF-8/Compose es_SV.UTF-8 +en_US.UTF-8/Compose es_US.UTF-8 +en_US.UTF-8/Compose es_UY.UTF-8 +en_US.UTF-8/Compose es_VE.UTF-8 +en_US.UTF-8/Compose et_EE.UTF-8 +en_US.UTF-8/Compose eu_ES.UTF-8 +en_US.UTF-8/Compose fa_IR.UTF-8 +fi_FI.UTF-8/Compose fi_FI.UTF-8 +en_US.UTF-8/Compose fo_FO.UTF-8 +en_US.UTF-8/Compose fr_BE.UTF-8 +en_US.UTF-8/Compose fr_CA.UTF-8 +en_US.UTF-8/Compose fr_CH.UTF-8 +en_US.UTF-8/Compose fr_FR.UTF-8 +en_US.UTF-8/Compose fr_LU.UTF-8 +en_US.UTF-8/Compose ga_IE.UTF-8 +en_US.UTF-8/Compose gd_GB.UTF-8 +en_US.UTF-8/Compose gl_ES.UTF-8 +en_US.UTF-8/Compose gu_IN.UTF-8 +en_US.UTF-8/Compose gv_GB.UTF-8 +en_US.UTF-8/Compose he_IL.UTF-8 +en_US.UTF-8/Compose hi_IN.UTF-8 +en_US.UTF-8/Compose hne_IN.UTF-8 +en_US.UTF-8/Compose hr_HR.UTF-8 +en_US.UTF-8/Compose hu_HU.UTF-8 +en_US.UTF-8/Compose hy_AM.UTF-8 +en_US.UTF-8/Compose id_ID.UTF-8 +en_US.UTF-8/Compose is_IS.UTF-8 +en_US.UTF-8/Compose it_CH.UTF-8 +en_US.UTF-8/Compose it_IT.UTF-8 +en_US.UTF-8/Compose iu_CA.UTF-8 +ja_JP.UTF-8/Compose ja_JP.UTF-8 +en_US.UTF-8/Compose ka_GE.UTF-8 +en_US.UTF-8/Compose kk_KZ.UTF-8 +en_US.UTF-8/Compose kl_GL.UTF-8 +km_KH.UTF-8/Compose km_KH.UTF-8 +en_US.UTF-8/Compose kn_IN.UTF-8 +ko_KR.UTF-8/Compose ko_KR.UTF-8 +en_US.UTF-8/Compose ks_IN.UTF-8 +en_US.UTF-8/Compose ks_IN.UTF-8@devanagari +en_US.UTF-8/Compose ku_TR.UTF-8 +en_US.UTF-8/Compose kw_GB.UTF-8 +en_US.UTF-8/Compose ky_KG.UTF-8 +en_US.UTF-8/Compose lo_LA.UTF-8 +en_US.UTF-8/Compose lt_LT.UTF-8 +en_US.UTF-8/Compose lv_LV.UTF-8 +en_US.UTF-8/Compose mai_IN.UTF-8 +en_US.UTF-8/Compose mi_NZ.UTF-8 +en_US.UTF-8/Compose mk_MK.UTF-8 +en_US.UTF-8/Compose ml_IN.UTF-8 +en_US.UTF-8/Compose mr_IN.UTF-8 +en_US.UTF-8/Compose ms_MY.UTF-8 +en_US.UTF-8/Compose mt_MT.UTF-8 +en_US.UTF-8/Compose ne_NP.UTF-8 +en_US.UTF-8/Compose nl_BE.UTF-8 +en_US.UTF-8/Compose nl_NL.UTF-8 +en_US.UTF-8/Compose nn_NO.UTF-8 +en_US.UTF-8/Compose no_NO.UTF-8 +en_US.UTF-8/Compose nb_NO.UTF-8 +en_US.UTF-8/Compose nr_ZA.UTF-8 +en_US.UTF-8/Compose nso_ZA.UTF-8 +en_US.UTF-8/Compose ny_NO.UTF-8 +en_US.UTF-8/Compose oc_FR.UTF-8 +en_US.UTF-8/Compose or_IN.UTF-8 +en_US.UTF-8/Compose pa_IN.UTF-8 +en_US.UTF-8/Compose pa_PK.UTF-8 +en_US.UTF-8/Compose pd_DE.UTF-8 +en_US.UTF-8/Compose pd_US.UTF-8 +en_US.UTF-8/Compose ph_PH.UTF-8 +en_US.UTF-8/Compose pl_PL.UTF-8 +en_US.UTF-8/Compose pp_AN.UTF-8 +pt_BR.UTF-8/Compose pt_BR.UTF-8 +pt_PT.UTF-8/Compose pt_PT.UTF-8 +en_US.UTF-8/Compose ro_RO.UTF-8 +ru_RU.UTF-8/Compose ru_RU.UTF-8 +en_US.UTF-8/Compose ru_UA.UTF-8 +en_US.UTF-8/Compose rw_RW.UTF-8 +en_US.UTF-8/Compose sa_IN.UTF-8 +en_US.UTF-8/Compose sd_IN.UTF-8 +en_US.UTF-8/Compose sd_IN.UTF-8@devanagari +en_US.UTF-8/Compose se_NO.UTF-8 +en_US.UTF-8/Compose sh_BA.UTF-8 +en_US.UTF-8/Compose sh_YU.UTF-8 +en_US.UTF-8/Compose si_LK.UTF-8 +en_US.UTF-8/Compose sk_SK.UTF-8 +en_US.UTF-8/Compose sl_SI.UTF-8 +en_US.UTF-8/Compose sq_AL.UTF-8 +en_US.UTF-8/Compose sr_ME.UTF-8 +en_US.UTF-8/Compose sr_RS.UTF-8 +en_US.UTF-8/Compose sr_YU.UTF-8 +en_US.UTF-8/Compose ss_ZA.UTF-8 +en_US.UTF-8/Compose st_ZA.UTF-8 +en_US.UTF-8/Compose sv_FI.UTF-8 +en_US.UTF-8/Compose sv_SE.UTF-8 +en_US.UTF-8/Compose ta_IN.UTF-8 +en_US.UTF-8/Compose te_IN.UTF-8 +en_US.UTF-8/Compose tg_TJ.UTF-8 +th_TH.UTF-8/Compose th_TH.UTF-8 +en_US.UTF-8/Compose ti_ER.UTF-8 +en_US.UTF-8/Compose ti_ET.UTF-8 +en_US.UTF-8/Compose tl_PH.UTF-8 +en_US.UTF-8/Compose tn_ZA.UTF-8 +en_US.UTF-8/Compose tr_TR.UTF-8 +en_US.UTF-8/Compose ts_ZA.UTF-8 +en_US.UTF-8/Compose tt_RU.UTF-8 +en_US.UTF-8/Compose uk_UA.UTF-8 +en_US.UTF-8/Compose ur_IN.UTF-8 +en_US.UTF-8/Compose ur_PK.UTF-8 +en_US.UTF-8/Compose uz_UZ.UTF-8 +en_US.UTF-8/Compose ve_ZA.UTF-8 +en_US.UTF-8/Compose vi_VN.UTF-8 +en_US.UTF-8/Compose wa_BE.UTF-8 +en_US.UTF-8/Compose xh_ZA.UTF-8 +en_US.UTF-8/Compose yi_US.UTF-8 +zh_CN.UTF-8/Compose zh_CN.UTF-8 +zh_HK.UTF-8/Compose zh_HK.UTF-8 +en_US.UTF-8/Compose zh_SG.UTF-8 +zh_TW.UTF-8/Compose zh_TW.UTF-8 +en_US.UTF-8/Compose zu_ZA.UTF-8 +# +# This file contains compose table file names. +# The first word is the compose table file name +# and the second word is the full locale name. +# +# +iso8859-1/Compose: C +iso8859-1/Compose: af_ZA.ISO8859-1 +iso8859-6/Compose: ar_AA.ISO8859-6 +iso8859-6/Compose: ar_AE.ISO8859-6 +iso8859-6/Compose: ar_BH.ISO8859-6 +iso8859-6/Compose: ar_DZ.ISO8859-6 +iso8859-6/Compose: ar_EG.ISO8859-6 +iso8859-6/Compose: ar_IQ.ISO8859-6 +iso8859-6/Compose: ar_JO.ISO8859-6 +iso8859-6/Compose: ar_KW.ISO8859-6 +iso8859-6/Compose: ar_LB.ISO8859-6 +iso8859-6/Compose: ar_LY.ISO8859-6 +iso8859-6/Compose: ar_MA.ISO8859-6 +iso8859-6/Compose: ar_OM.ISO8859-6 +iso8859-6/Compose: ar_QA.ISO8859-6 +iso8859-6/Compose: ar_SA.ISO8859-6 +iso8859-6/Compose: ar_SD.ISO8859-6 +iso8859-6/Compose: ar_SY.ISO8859-6 +iso8859-6/Compose: ar_TN.ISO8859-6 +iso8859-6/Compose: ar_YE.ISO8859-6 +iso8859-9e/Compose: az_AZ.ISO8859-9E +koi8-c/Compose: az_AZ.KOI8-C +microsoft-cp1251/Compose: be_BY.CP1251 +iso8859-5/Compose: be_BY.ISO8859-5 +iso8859-5/Compose: bg_BG.ISO8859-5 +microsoft-cp1251/Compose: bg_BG.CP1251 +koi8-r/Compose: bg_BG.KOI8-R +iso8859-1/Compose: br_FR.ISO8859-1 +iso8859-14/Compose: br_FR.ISO8859-14 +iso8859-15/Compose: br_FR.ISO8859-15 +iso8859-2/Compose: bs_BA.ISO8859-2 +iso8859-1/Compose: ca_AD.ISO8859-1 +iso8859-15/Compose: ca_AD.ISO8859-15 +iso8859-1/Compose: ca_ES.ISO8859-1 +iso8859-15/Compose: ca_ES.ISO8859-15 +iso8859-1/Compose: ca_FR.ISO8859-1 +iso8859-15/Compose: ca_FR.ISO8859-15 +iso8859-1/Compose: ca_IT.ISO8859-1 +iso8859-15/Compose: ca_IT.ISO8859-15 +iso8859-2/Compose: cs_CZ.ISO8859-2 +iso8859-1/Compose: cy_GB.ISO8859-1 +iso8859-14/Compose: cy_GB.ISO8859-14 +iso8859-15/Compose: cy_GB.ISO8859-15 +iso8859-1/Compose: da_DK.ISO8859-1 +iso8859-15/Compose: da_DK.ISO8859-15 +iso8859-1/Compose: de_AT.ISO8859-1 +iso8859-15/Compose: de_AT.ISO8859-15 +iso8859-1/Compose: de_BE.ISO8859-1 +iso8859-15/Compose: de_BE.ISO8859-15 +iso8859-1/Compose: de_CH.ISO8859-1 +iso8859-15/Compose: de_CH.ISO8859-15 +iso8859-1/Compose: de_DE.ISO8859-1 +iso8859-15/Compose: de_DE.ISO8859-15 +iso8859-1/Compose: de_LI.ISO8859-1 +iso8859-15/Compose: de_LI.ISO8859-15 +iso8859-1/Compose: de_LU.ISO8859-1 +iso8859-15/Compose: de_LU.ISO8859-15 +iso8859-4/Compose: ee_EE.ISO8859-4 +iso8859-7/Compose: el_GR.ISO8859-7 +iso8859-15/Compose: el_GR.ISO8859-15 +iso8859-1/Compose: en_AU.ISO8859-1 +iso8859-1/Compose: en_BE.ISO8859-1 +iso8859-15/Compose: en_BE.ISO8859-15 +iso8859-1/Compose: en_BW.ISO8859-1 +iso8859-1/Compose: en_BZ.ISO8859-1 +iso8859-1/Compose: en_CA.ISO8859-1 +iso8859-1/Compose: en_EN.ISO8859-1 +iso8859-1/Compose: en_GB.ISO8859-1 +iso8859-15/Compose: en_GB.ISO8859-15 +iso8859-1/Compose: en_HK.ISO8859-1 +iso8859-1/Compose: en_IE.ISO8859-1 +iso8859-15/Compose: en_IE.ISO8859-15 +iso8859-15/Compose: en_IN.ISO8859-15 +iso8859-1/Compose: en_JM.ISO8859-1 +iso8859-1/Compose: en_NZ.ISO8859-1 +iso8859-1/Compose: en_PH.ISO8859-1 +iso8859-1/Compose: en_SG.ISO8859-1 +iso8859-1/Compose: en_TT.ISO8859-1 +iso8859-1/Compose: en_UK.ISO8859-1 +iso8859-15/Compose: en_UK.ISO8859-15 +iso8859-1/Compose: en_US.ISO8859-1 +iso8859-15/Compose: en_US.ISO8859-15 +iso8859-1/Compose: en_ZA.ISO8859-1 +iso8859-15/Compose: en_ZA.ISO8859-15 +iso8859-1/Compose: en_ZW.ISO8859-1 +iso8859-3/Compose: eo_EO.ISO8859-3 +iso8859-3/Compose: eo_XX.ISO8859-3 +iso8859-1/Compose: es_AR.ISO8859-1 +iso8859-1/Compose: es_BO.ISO8859-1 +iso8859-1/Compose: es_CL.ISO8859-1 +iso8859-1/Compose: es_CO.ISO8859-1 +iso8859-1/Compose: es_CR.ISO8859-1 +iso8859-1/Compose: es_DO.ISO8859-1 +iso8859-1/Compose: es_EC.ISO8859-1 +iso8859-1/Compose: es_ES.ISO8859-1 +iso8859-15/Compose: es_ES.ISO8859-15 +iso8859-1/Compose: es_GT.ISO8859-1 +iso8859-1/Compose: es_HN.ISO8859-1 +iso8859-1/Compose: es_MX.ISO8859-1 +iso8859-1/Compose: es_NI.ISO8859-1 +iso8859-1/Compose: es_PA.ISO8859-1 +iso8859-15/Compose: es_PA.ISO8859-15 +iso8859-1/Compose: es_PE.ISO8859-1 +iso8859-15/Compose: es_PE.ISO8859-15 +iso8859-1/Compose: es_PR.ISO8859-1 +iso8859-1/Compose: es_PY.ISO8859-1 +iso8859-15/Compose: es_PY.ISO8859-15 +iso8859-1/Compose: es_SV.ISO8859-1 +iso8859-15/Compose: es_SV.ISO8859-15 +iso8859-1/Compose: es_US.ISO8859-1 +iso8859-1/Compose: es_UY.ISO8859-1 +iso8859-15/Compose: es_UY.ISO8859-15 +iso8859-1/Compose: es_VE.ISO8859-1 +iso8859-15/Compose: es_VE.ISO8859-15 +iso8859-1/Compose: et_EE.ISO8859-1 +iso8859-4/Compose: et_EE.ISO8859-4 +iso8859-13/Compose: et_EE.ISO8859-13 +iso8859-15/Compose: et_EE.ISO8859-15 +iso8859-1/Compose: eu_ES.ISO8859-1 +iso8859-15/Compose: eu_ES.ISO8859-15 +isiri-3342/Compose: fa_IR.ISIRI-3342 +iso8859-1/Compose: fi_FI.ISO8859-1 +iso8859-15/Compose: fi_FI.ISO8859-15 +iso8859-1/Compose: fo_FO.ISO8859-1 +iso8859-15/Compose: fo_FO.ISO8859-15 +iso8859-1/Compose: fr_BE.ISO8859-1 +iso8859-15/Compose: fr_BE.ISO8859-15 +iso8859-1/Compose: fr_CA.ISO8859-1 +iso8859-15/Compose: fr_CA.ISO8859-15 +iso8859-1/Compose: fr_CH.ISO8859-1 +iso8859-15/Compose: fr_CH.ISO8859-15 +iso8859-1/Compose: fr_FR.ISO8859-1 +iso8859-15/Compose: fr_FR.ISO8859-15 +iso8859-1/Compose: fr_LU.ISO8859-1 +iso8859-15/Compose: fr_LU.ISO8859-15 +iso8859-1/Compose: ga_IE.ISO8859-1 +iso8859-14/Compose: ga_IE.ISO8859-14 +iso8859-15/Compose: ga_IE.ISO8859-15 +iso8859-1/Compose: gd_GB.ISO8859-1 +iso8859-14/Compose: gd_GB.ISO8859-14 +iso8859-15/Compose: gd_GB.ISO8859-15 +iso8859-1/Compose: gl_ES.ISO8859-1 +iso8859-15/Compose: gl_ES.ISO8859-15 +iso8859-1/Compose: gv_GB.ISO8859-1 +iso8859-14/Compose: gv_GB.ISO8859-14 +iso8859-15/Compose: gv_GB.ISO8859-15 +iso8859-8/Compose: he_IL.ISO8859-8 +microsoft-cp1255/Compose: he_IL.CP1255 +iscii-dev/Compose: hi_IN.ISCII-DEV +iso8859-2/Compose: hr_HR.ISO8859-2 +iso8859-2/Compose: hu_HU.ISO8859-2 +armscii-8/Compose: hy_AM.ARMSCII-8 +iso8859-1/Compose: id_ID.ISO8859-1 +iso8859-15/Compose: id_ID.ISO8859-15 +iso8859-1/Compose: is_IS.ISO8859-1 +iso8859-15/Compose: is_IS.ISO8859-15 +iso8859-1/Compose: it_CH.ISO8859-1 +iso8859-15/Compose: it_CH.ISO8859-15 +iso8859-1/Compose: it_IT.ISO8859-1 +iso8859-15/Compose: it_IT.ISO8859-15 +ja/Compose: ja_JP.eucJP +ja.SJIS/Compose: ja_JP.SJIS +ja.JIS/Compose: ja_JP.JIS7 +georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY +georgian-ps/Compose: ka_GE.GEORGIAN-PS +iso8859-1/Compose: kl_GL.ISO8859-1 +iso8859-15/Compose: kl_GL.ISO8859-15 +iso8859-1/Compose: kw_GB.ISO8859-1 +iso8859-14/Compose: kw_GB.ISO8859-14 +iso8859-15/Compose: kw_GB.ISO8859-15 +ko/Compose: ko_KR.eucKR +ibm-cp1133/Compose: lo_LA.IBM-CP1133 +mulelao-1/Compose: lo_LA.MULELAO-1 +iso8859-4/Compose: lt_LT.ISO8859-4 +iso8859-13/Compose: lt_LT.ISO8859-13 +iso8859-4/Compose: lv_LV.ISO8859-4 +iso8859-13/Compose: lv_LV.ISO8859-13 +iso8859-13/Compose: mi_NZ.ISO8859-13 +iso8859-5/Compose: mk_MK.ISO8859-5 +microsoft-cp1251/Compose: mk_MK.CP1251 +iso8859-1/Compose: ms_MY.ISO8859-1 +iso8859-3/Compose: mt_MT.ISO8859-3 +iso8859-1/Compose: nl_BE.ISO8859-1 +iso8859-15/Compose: nl_BE.ISO8859-15 +iso8859-1/Compose: nl_NL.ISO8859-1 +iso8859-15/Compose: nl_NL.ISO8859-15 +iso8859-1/Compose: no_NO.ISO8859-1 +iso8859-15/Compose: no_NO.ISO8859-15 +iso8859-1/Compose: nb_NO.ISO8859-1 +iso8859-15/Compose: nb_NO.ISO8859-15 +iso8859-1/Compose: nn_NO.ISO8859-1 +iso8859-15/Compose: nn_NO.ISO8859-15 +iso8859-1/Compose: nr_ZA.ISO8859-1 +iso8859-15/Compose: nso_ZA.ISO8859-15 +iso8859-1/Compose: ny_NO.ISO8859-1 +iso8859-15/Compose: ny_NO.ISO8859-15 +iso8859-1/Compose: oc_FR.ISO8859-1 +iso8859-15/Compose: oc_FR.ISO8859-15 +iso8859-1/Compose: pd_DE.ISO8859-1 +iso8859-15/Compose: pd_DE.ISO8859-15 +iso8859-1/Compose: pd_US.ISO8859-1 +iso8859-15/Compose: pd_US.ISO8859-15 +iso8859-1/Compose: ph_PH.ISO8859-1 +iso8859-2/Compose: pl_PL.ISO8859-2 +iso8859-1/Compose: pp_AN.ISO8859-1 +iso8859-1/Compose: pt_BR.ISO8859-1 +iso8859-15/Compose: pt_BR.ISO8859-15 +iso8859-1/Compose: pt_PT.ISO8859-1 +iso8859-15/Compose: pt_PT.ISO8859-15 +iso8859-2/Compose: ro_RO.ISO8859-2 +koi8-r/Compose: ru_RU.KOI8-R +iso8859-5/Compose: ru_RU.ISO8859-5 +microsoft-cp1251/Compose: ru_RU.CP1251 +microsoft-cp1251/Compose: ru_UA.CP1251 +koi8-u/Compose: ru_UA.KOI8-U +iso8859-1/Compose: rw_RW.ISO8859-1 +iso8859-2/Compose: sh_YU.ISO8859-2 +iso8859-2/Compose: sk_SK.ISO8859-2 +iso8859-2/Compose: sl_SI.ISO8859-2 +iso8859-2/Compose: sq_AL.ISO8859-2 +iso8859-2/Compose: sr_YU.ISO8859-2 +microsoft-cp1251/Compose: sr_YU.CP1251 +iso8859-5/Compose: sr_YU.ISO8859-5 +iso8859-1/Compose: ss_ZA.ISO8859-1 +iso8859-1/Compose: st_ZA.ISO8859-1 +iso8859-1/Compose: sv_FI.ISO8859-1 +iso8859-15/Compose: sv_FI.ISO8859-15 +iso8859-1/Compose: sv_SE.ISO8859-1 +iso8859-15/Compose: sv_SE.ISO8859-15 +tscii-0/Compose: ta_IN.TSCII-0 +koi8-c/Compose: tg_TJ.KOI8-C +iso8859-1/Compose: tl_PH.ISO8859-1 +iso8859-11/Compose: th_TH.ISO8859-11 +th_TH/Compose: th_TH.TIS620 +iso8859-15/Compose: tn_ZA.ISO8859-15 +iso8859-9/Compose: tr_TR.ISO8859-9 +iso8859-1/Compose: ts_ZA.ISO8859-1 +tatar-cyr/Compose: tt_RU.TATAR-CYR +microsoft-cp1251/Compose: uk_UA.CP1251 +koi8-c/Compose: tt_RU.KOI8-C +koi8-u/Compose: uk_UA.KOI8-U +iso8859-5/Compose: uk_UA.ISO8859-5 +microsoft-cp1256/Compose: ur_PK.CP1256 +iso8859-1/Compose: uz_UZ.ISO8859-1 +vi_VN.viscii/Compose: vi_VN.VISCII +vi_VN.tcvn/Compose: vi_VN.TCVN +iso8859-1/Compose: wa_BE.ISO8859-1 +iso8859-15/Compose: wa_BE.ISO8859-15 +iso8859-1/Compose: xh_ZA.ISO8859-1 +microsoft-cp1255/Compose: yi_US.CP1255 +zh_CN/Compose: zh_CN.eucCN +zh_CN/Compose: zh_CN.gb2312 +zh_CN.gbk/Compose: zh_CN.gbk +zh_CN.gb18030/Compose: zh_CN.gb18030 +zh_HK.big5/Compose: zh_HK.big5 +zh_HK.big5hkscs/Compose: zh_HK.big5hkscs +zh_TW.big5/Compose: zh_TW.big5 +zh_TW/Compose: zh_TW.eucTW +iso8859-1/Compose: zu_ZA.ISO8859-1 +# +# +en_US.UTF-8/Compose: C.UTF-8 +en_US.UTF-8/Compose: af_ZA.UTF-8 +am_ET.UTF-8/Compose: am_ET.UTF-8 +en_US.UTF-8/Compose: ar_AA.UTF-8 +en_US.UTF-8/Compose: ar_AE.UTF-8 +en_US.UTF-8/Compose: ar_BH.UTF-8 +en_US.UTF-8/Compose: ar_DZ.UTF-8 +en_US.UTF-8/Compose: ar_EG.UTF-8 +en_US.UTF-8/Compose: ar_IN.UTF-8 +en_US.UTF-8/Compose: ar_IQ.UTF-8 +en_US.UTF-8/Compose: ar_JO.UTF-8 +en_US.UTF-8/Compose: ar_KW.UTF-8 +en_US.UTF-8/Compose: ar_LB.UTF-8 +en_US.UTF-8/Compose: ar_LY.UTF-8 +en_US.UTF-8/Compose: ar_MA.UTF-8 +en_US.UTF-8/Compose: ar_OM.UTF-8 +en_US.UTF-8/Compose: ar_QA.UTF-8 +en_US.UTF-8/Compose: ar_SA.UTF-8 +en_US.UTF-8/Compose: ar_SD.UTF-8 +en_US.UTF-8/Compose: ar_SY.UTF-8 +en_US.UTF-8/Compose: ar_TN.UTF-8 +en_US.UTF-8/Compose: ar_YE.UTF-8 +en_US.UTF-8/Compose: ast_ES.UTF-8 +en_US.UTF-8/Compose: as_IN.UTF-8 +en_US.UTF-8/Compose: az_AZ.UTF-8 +en_US.UTF-8/Compose: be_BY.UTF-8 +en_US.UTF-8/Compose: bg_BG.UTF-8 +en_US.UTF-8/Compose: bn_BD.UTF-8 +en_US.UTF-8/Compose: bn_IN.UTF-8 +en_US.UTF-8/Compose: bo_IN.UTF-8 +en_US.UTF-8/Compose: br_FR.UTF-8 +en_US.UTF-8/Compose: bs_BA.UTF-8 +en_US.UTF-8/Compose: ca_AD.UTF-8 +en_US.UTF-8/Compose: ca_ES.UTF-8 +en_US.UTF-8/Compose: ca_FR.UTF-8 +en_US.UTF-8/Compose: ca_IT.UTF-8 +cs_CZ.UTF-8/Compose: cs_CZ.UTF-8 +en_US.UTF-8/Compose: cy_GB.UTF-8 +en_US.UTF-8/Compose: da_DK.UTF-8 +en_US.UTF-8/Compose: de_AT.UTF-8 +en_US.UTF-8/Compose: de_BE.UTF-8 +en_US.UTF-8/Compose: de_CH.UTF-8 +en_US.UTF-8/Compose: de_DE.UTF-8 +en_US.UTF-8/Compose: de_IT.UTF-8 +en_US.UTF-8/Compose: de_LI.UTF-8 +en_US.UTF-8/Compose: de_LU.UTF-8 +el_GR.UTF-8/Compose: el_CY.UTF-8 +el_GR.UTF-8/Compose: el_GR.UTF-8 +en_US.UTF-8/Compose: en_AU.UTF-8 +en_US.UTF-8/Compose: en_BE.UTF-8 +en_US.UTF-8/Compose: en_BW.UTF-8 +en_US.UTF-8/Compose: en_BZ.UTF-8 +en_US.UTF-8/Compose: en_CA.UTF-8 +en_US.UTF-8/Compose: en_DK.UTF-8 +en_US.UTF-8/Compose: en_EN.UTF-8 +en_US.UTF-8/Compose: en_GB.UTF-8 +en_US.UTF-8/Compose: en_HK.UTF-8 +en_US.UTF-8/Compose: en_IE.UTF-8 +en_US.UTF-8/Compose: en_IN.UTF-8 +en_US.UTF-8/Compose: en_JM.UTF-8 +en_US.UTF-8/Compose: en_MT.UTF-8 +en_US.UTF-8/Compose: en_NZ.UTF-8 +en_US.UTF-8/Compose: en_PH.UTF-8 +en_US.UTF-8/Compose: en_SG.UTF-8 +en_US.UTF-8/Compose: en_TT.UTF-8 +en_US.UTF-8/Compose: en_UK.UTF-8 +en_US.UTF-8/Compose: en_US.UTF-8 +en_US.UTF-8/Compose: en_ZA.UTF-8 +en_US.UTF-8/Compose: en_ZW.UTF-8 +en_US.UTF-8/Compose: eo_EO.UTF-8 +en_US.UTF-8/Compose: eo_XX.UTF-8 +en_US.UTF-8/Compose: es_AR.UTF-8 +en_US.UTF-8/Compose: es_BO.UTF-8 +en_US.UTF-8/Compose: es_CL.UTF-8 +en_US.UTF-8/Compose: es_CO.UTF-8 +en_US.UTF-8/Compose: es_CR.UTF-8 +en_US.UTF-8/Compose: es_DO.UTF-8 +en_US.UTF-8/Compose: es_EC.UTF-8 +en_US.UTF-8/Compose: es_ES.UTF-8 +en_US.UTF-8/Compose: es_GT.UTF-8 +en_US.UTF-8/Compose: es_HN.UTF-8 +en_US.UTF-8/Compose: es_MX.UTF-8 +en_US.UTF-8/Compose: es_NI.UTF-8 +en_US.UTF-8/Compose: es_PA.UTF-8 +en_US.UTF-8/Compose: es_PE.UTF-8 +en_US.UTF-8/Compose: es_PR.UTF-8 +en_US.UTF-8/Compose: es_PY.UTF-8 +en_US.UTF-8/Compose: es_SV.UTF-8 +en_US.UTF-8/Compose: es_US.UTF-8 +en_US.UTF-8/Compose: es_UY.UTF-8 +en_US.UTF-8/Compose: es_VE.UTF-8 +en_US.UTF-8/Compose: et_EE.UTF-8 +en_US.UTF-8/Compose: eu_ES.UTF-8 +en_US.UTF-8/Compose: fa_IR.UTF-8 +fi_FI.UTF-8/Compose: fi_FI.UTF-8 +en_US.UTF-8/Compose: fo_FO.UTF-8 +en_US.UTF-8/Compose: fr_BE.UTF-8 +en_US.UTF-8/Compose: fr_CA.UTF-8 +en_US.UTF-8/Compose: fr_CH.UTF-8 +en_US.UTF-8/Compose: fr_FR.UTF-8 +en_US.UTF-8/Compose: fr_LU.UTF-8 +en_US.UTF-8/Compose: ga_IE.UTF-8 +en_US.UTF-8/Compose: gd_GB.UTF-8 +en_US.UTF-8/Compose: gl_ES.UTF-8 +en_US.UTF-8/Compose: gu_IN.UTF-8 +en_US.UTF-8/Compose: gv_GB.UTF-8 +en_US.UTF-8/Compose: he_IL.UTF-8 +en_US.UTF-8/Compose: hi_IN.UTF-8 +en_US.UTF-8/Compose: hne_IN.UTF-8 +en_US.UTF-8/Compose: hr_HR.UTF-8 +en_US.UTF-8/Compose: hu_HU.UTF-8 +en_US.UTF-8/Compose: hy_AM.UTF-8 +en_US.UTF-8/Compose: id_ID.UTF-8 +en_US.UTF-8/Compose: is_IS.UTF-8 +en_US.UTF-8/Compose: it_CH.UTF-8 +en_US.UTF-8/Compose: it_IT.UTF-8 +en_US.UTF-8/Compose: iu_CA.UTF-8 +ja_JP.UTF-8/Compose: ja_JP.UTF-8 +en_US.UTF-8/Compose: ka_GE.UTF-8 +en_US.UTF-8/Compose: kk_KZ.UTF-8 +en_US.UTF-8/Compose: kl_GL.UTF-8 +km_KH.UTF-8/Compose: km_KH.UTF-8 +en_US.UTF-8/Compose: kn_IN.UTF-8 +ko_KR.UTF-8/Compose: ko_KR.UTF-8 +en_US.UTF-8/Compose: ks_IN.UTF-8 +en_US.UTF-8/Compose: ks_IN.UTF-8@devanagari +en_US.UTF-8/Compose: ku_TR.UTF-8 +en_US.UTF-8/Compose: kw_GB.UTF-8 +en_US.UTF-8/Compose: ky_KG.UTF-8 +en_US.UTF-8/Compose: lo_LA.UTF-8 +en_US.UTF-8/Compose: lt_LT.UTF-8 +en_US.UTF-8/Compose: lv_LV.UTF-8 +en_US.UTF-8/Compose: mai_IN.UTF-8 +en_US.UTF-8/Compose: mi_NZ.UTF-8 +en_US.UTF-8/Compose: mk_MK.UTF-8 +en_US.UTF-8/Compose: ml_IN.UTF-8 +en_US.UTF-8/Compose: mr_IN.UTF-8 +en_US.UTF-8/Compose: ms_MY.UTF-8 +en_US.UTF-8/Compose: mt_MT.UTF-8 +en_US.UTF-8/Compose: ne_NP.UTF-8 +en_US.UTF-8/Compose: nl_BE.UTF-8 +en_US.UTF-8/Compose: nl_NL.UTF-8 +en_US.UTF-8/Compose: nn_NO.UTF-8 +en_US.UTF-8/Compose: no_NO.UTF-8 +en_US.UTF-8/Compose: nb_NO.UTF-8 +en_US.UTF-8/Compose: nr_ZA.UTF-8 +en_US.UTF-8/Compose: nso_ZA.UTF-8 +en_US.UTF-8/Compose: ny_NO.UTF-8 +en_US.UTF-8/Compose: oc_FR.UTF-8 +en_US.UTF-8/Compose: or_IN.UTF-8 +en_US.UTF-8/Compose: pa_IN.UTF-8 +en_US.UTF-8/Compose: pa_PK.UTF-8 +en_US.UTF-8/Compose: pd_DE.UTF-8 +en_US.UTF-8/Compose: pd_US.UTF-8 +en_US.UTF-8/Compose: ph_PH.UTF-8 +en_US.UTF-8/Compose: pl_PL.UTF-8 +en_US.UTF-8/Compose: pp_AN.UTF-8 +pt_BR.UTF-8/Compose: pt_BR.UTF-8 +pt_PT.UTF-8/Compose: pt_PT.UTF-8 +en_US.UTF-8/Compose: ro_RO.UTF-8 +ru_RU.UTF-8/Compose: ru_RU.UTF-8 +en_US.UTF-8/Compose: ru_UA.UTF-8 +en_US.UTF-8/Compose: rw_RW.UTF-8 +en_US.UTF-8/Compose: sa_IN.UTF-8 +en_US.UTF-8/Compose: sd_IN.UTF-8 +en_US.UTF-8/Compose: sd_IN.UTF-8@devanagari +en_US.UTF-8/Compose: se_NO.UTF-8 +en_US.UTF-8/Compose: sh_BA.UTF-8 +en_US.UTF-8/Compose: sh_YU.UTF-8 +en_US.UTF-8/Compose: si_LK.UTF-8 +en_US.UTF-8/Compose: sk_SK.UTF-8 +en_US.UTF-8/Compose: sl_SI.UTF-8 +en_US.UTF-8/Compose: sq_AL.UTF-8 +en_US.UTF-8/Compose: sr_ME.UTF-8 +en_US.UTF-8/Compose: sr_RS.UTF-8 +en_US.UTF-8/Compose: sr_YU.UTF-8 +en_US.UTF-8/Compose: ss_ZA.UTF-8 +en_US.UTF-8/Compose: st_ZA.UTF-8 +en_US.UTF-8/Compose: sv_FI.UTF-8 +en_US.UTF-8/Compose: sv_SE.UTF-8 +en_US.UTF-8/Compose: ta_IN.UTF-8 +en_US.UTF-8/Compose: te_IN.UTF-8 +en_US.UTF-8/Compose: tg_TJ.UTF-8 +th_TH.UTF-8/Compose: th_TH.UTF-8 +en_US.UTF-8/Compose: ti_ER.UTF-8 +en_US.UTF-8/Compose: ti_ET.UTF-8 +en_US.UTF-8/Compose: tl_PH.UTF-8 +en_US.UTF-8/Compose: tn_ZA.UTF-8 +en_US.UTF-8/Compose: tr_TR.UTF-8 +en_US.UTF-8/Compose: ts_ZA.UTF-8 +en_US.UTF-8/Compose: tt_RU.UTF-8 +en_US.UTF-8/Compose: uk_UA.UTF-8 +en_US.UTF-8/Compose: ur_IN.UTF-8 +en_US.UTF-8/Compose: ur_PK.UTF-8 +en_US.UTF-8/Compose: uz_UZ.UTF-8 +en_US.UTF-8/Compose: ve_ZA.UTF-8 +en_US.UTF-8/Compose: vi_VN.UTF-8 +en_US.UTF-8/Compose: wa_BE.UTF-8 +en_US.UTF-8/Compose: xh_ZA.UTF-8 +en_US.UTF-8/Compose: yi_US.UTF-8 +zh_CN.UTF-8/Compose: zh_CN.UTF-8 +zh_HK.UTF-8/Compose: zh_HK.UTF-8 +en_US.UTF-8/Compose: zh_SG.UTF-8 +zh_TW.UTF-8/Compose: zh_TW.UTF-8 +en_US.UTF-8/Compose: zu_ZA.UTF-8 diff --git a/test/data/locale/en_US.UTF-8/Compose b/test/data/locale/en_US.UTF-8/Compose new file mode 100644 index 0000000..6f2f17a --- /dev/null +++ b/test/data/locale/en_US.UTF-8/Compose @@ -0,0 +1,5973 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +# UTF-8 (Unicode) compose sequence +# David.Monniaux@ens.fr +# + +# Part 1 - Manual definitions + +# Spacing versions of dead accents +<dead_tilde> <space> : "~" asciitilde # TILDE +<dead_tilde> <dead_tilde> : "~" asciitilde # TILDE +<dead_acute> <space> : "'" apostrophe # APOSTROPHE +<dead_acute> <dead_acute> : "´" acute # ACUTE ACCENT +<Multi_key> <apostrophe> <apostrophe> : "´" acute # ACUTE ACCENT +<dead_grave> <space> : "`" grave # GRAVE ACCENT +<dead_grave> <dead_grave> : "`" grave # GRAVE ACCENT +<dead_circumflex> <space> : "^" asciicircum # CIRCUMFLEX ACCENT +<dead_circumflex> <dead_circumflex> : "^" asciicircum # CIRCUMFLEX ACCENT +<dead_abovering> <space> : "°" degree # DEGREE SIGN +<dead_abovering> <dead_abovering> : "°" degree # DEGREE SIGN +<dead_macron> <space> : "¯" macron # MACRON +<dead_macron> <dead_macron> : "¯" macron # MACRON +<Multi_key> <minus> <asciicircum> : "¯" macron # MACRON +<Multi_key> <asciicircum> <minus> : "¯" macron # MACRON +<Multi_key> <underscore> <underscore> : "¯" macron # MACRON +<Multi_key> <underscore> <asciicircum> : "¯" macron # MACRON +<dead_breve> <space> : "˘" breve # BREVE +<dead_breve> <dead_breve> : "˘" breve # BREVE +<Multi_key> <space> <parenleft> : "˘" breve # BREVE +<Multi_key> <parenleft> <space> : "˘" breve # BREVE +<dead_abovedot> <space> : "˙" abovedot # DOT ABOVE +<dead_abovedot> <dead_abovedot> : "˙" abovedot # DOT ABOVE +<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis # DIAERESIS +<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis # DIAERESIS +<dead_diaeresis> <space> : "\"" quotedbl # REVERSE SOLIDUS +<dead_doubleacute> <space> : "˝" U2dd # DOUBLE ACUTE ACCENT +<dead_doubleacute> <dead_doubleacute> : "˝" U2dd # DOUBLE ACUTE ACCENT +<dead_caron> <space> : "ˇ" caron # CARON +<dead_caron> <dead_caron> : "ˇ" caron # CARON +<Multi_key> <space> <less> : "ˇ" caron # CARON +<Multi_key> <less> <space> : "ˇ" caron # CARON +<dead_cedilla> <space> : "¸" cedilla # CEDILLA +<dead_cedilla> <dead_cedilla> : "¸" cedilla # CEDILLA +<dead_ogonek> <space> : "˛" ogonek # OGONEK +<dead_ogonek> <dead_ogonek> : "˛" ogonek # OGONEK +<dead_iota> <space> : "ͺ" U37a # GREEK YPOGEGRAMMENI +<dead_iota> <dead_iota> : "ͺ" U37a # GREEK YPOGEGRAMMENI +<Multi_key> <minus> <minus> <space> : "" U00ad # SOFT HYPHEN + + +# ASCII characters that may be difficult to access +# on some keyboards. +<Multi_key> <plus> <plus> : "#" numbersign # NUMBER SIGN +<Multi_key> <apostrophe> <space> : "'" apostrophe # APOSTROPHE +<Multi_key> <space> <apostrophe> : "'" apostrophe # APOSTROPHE +<Multi_key> <A> <T> : "@" at # COMMERCIAL AT +<Multi_key> <parenleft> <parenleft> : "[" bracketleft # LEFT SQUARE BRACKET +<Multi_key> <slash> <slash> : "\\" backslash # REVERSE SOLIDUS +<Multi_key> <slash> <less> : "\\" backslash # REVERSE SOLIDUS +<Multi_key> <less> <slash> : "\\" backslash # REVERSE SOLIDUS +<Multi_key> <parenright> <parenright> : "]" bracketright # RIGHT SQUARE BRACKET + +<Multi_key> <asciicircum> <space> : "^" asciicircum # CIRCUMFLEX ACCENT +<Multi_key> <space> <asciicircum> : "^" asciicircum # CIRCUMFLEX ACCENT +<Multi_key> <greater> <space> : "^" asciicircum # CIRCUMFLEX ACCENT +<Multi_key> <space> <greater> : "^" asciicircum # CIRCUMFLEX ACCENT + +<Multi_key> <grave> <space> : "`" grave # GRAVE ACCENT +<Multi_key> <space> <grave> : "`" grave # GRAVE ACCENT + +<Multi_key> <comma> <space> : "¸" cedilla # CEDILLA +<Multi_key> <space> <comma> : "¸" cedilla # CEDILLA +<Multi_key> <comma> <comma> : "¸" cedilla # CEDILLA + +<Multi_key> <parenleft> <minus> : "{" braceleft # LEFT CURLY BRACKET +<Multi_key> <minus> <parenleft> : "{" braceleft # LEFT CURLY BRACKET + +<Multi_key> <slash> <asciicircum> : "|" bar # VERTICAL LINE +<Multi_key> <asciicircum> <slash> : "|" bar # VERTICAL LINE +<Multi_key> <V> <L> : "|" bar # VERTICAL LINE +<Multi_key> <L> <V> : "|" bar # VERTICAL LINE +<Multi_key> <v> <l> : "|" bar # VERTICAL LINE +<Multi_key> <l> <v> : "|" bar # VERTICAL LINE + +<Multi_key> <parenright> <minus> : "}" braceright # RIGHT CURLY BRACKET +<Multi_key> <minus> <parenright> : "}" braceright # RIGHT CURLY BRACKET + +<Multi_key> <asciitilde> <space> : "~" asciitilde # TILDE +<Multi_key> <space> <asciitilde> : "~" asciitilde # TILDE +<Multi_key> <minus> <space> : "~" asciitilde # TILDE +<Multi_key> <space> <minus> : "~" asciitilde # TILDE + +# Spaces +<Multi_key> <space> <space> : " " nobreakspace # NO-BREAK SPACE +<Multi_key> <space> <period> : " " U2008 # PUNCTUATION SPACE + +<Multi_key> <o> <c> : "©" copyright # COPYRIGHT SIGN +<Multi_key> <o> <C> : "©" copyright # COPYRIGHT SIGN +<Multi_key> <O> <c> : "©" copyright # COPYRIGHT SIGN +<Multi_key> <O> <C> : "©" copyright # COPYRIGHT SIGN +<Multi_key> <C> <o> : "©" copyright # COPYRIGHT SIGN +<Multi_key> <C> <O> : "©" copyright # COPYRIGHT SIGN + +<Multi_key> <o> <r> : "®" registered # REGISTERED SIGN +<Multi_key> <o> <R> : "®" registered # REGISTERED SIGN +<Multi_key> <O> <r> : "®" registered # REGISTERED SIGN +<Multi_key> <O> <R> : "®" registered # REGISTERED SIGN +<Multi_key> <R> <O> : "®" registered # REGISTERED SIGN + +<Multi_key> <period> <greater> : "›" U203a # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +<Multi_key> <period> <less> : "‹" U2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +<Multi_key> <period> <period> : "…" ellipsis # HORIZONTAL ELLIPSIS +<Multi_key> <period> <minus> : "·" periodcentered # MIDDLE DOT +<Multi_key> <period> <asciicircum> : "·" periodcentered # MIDDLE DOT +<Multi_key> <asciicircum> <period> : "·" periodcentered # MIDDLE DOT +<Multi_key> <period> <equal> : "•" enfilledcircbullet # BULLET +<Multi_key> <exclam> <asciicircum> : "¦" brokenbar # BROKEN BAR +<Multi_key> <exclam> <exclam> : "¡" exclamdown # INVERTED EXCLAMATION MARK +<Multi_key> <p> <exclam> : "¶" paragraph # PILCROW SIGN +<Multi_key> <P> <exclam> : "¶" paragraph # PILCROW SIGN +<Multi_key> <plus> <minus> : "±" plusminus # PLUS-MINUS SIGN +<Multi_key> <minus> <plus> : "±" plusminus # PLUS-MINUS SIGN +<Multi_key> <question> <question> : "¿" questiondown # INVERTED QUESTION MARK +<Multi_key> <minus> <d> : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE +<Multi_key> <minus> <D> : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE +<Multi_key> <s> <s> : "ß" ssharp # LATIN SMALL LETTER SHARP S +<Multi_key> <S> <S> : "ẞ" U1e9e # LATIN CAPITAL LETTER SHARP S + +<Multi_key> <o> <e> : "œ" oe # LATIN SMALL LIGATURE OE +<Multi_key> <O> <E> : "Œ" OE # LATIN CAPITAL LIGATURE OE +<Multi_key> <a> <e> : "æ" ae # LATIN SMALL LETTER AE +<Multi_key> <A> <E> : "Æ" AE # LATIN CAPITAL LETTER AE +<Multi_key> <f> <f> : "ff" Ufb00 # LATIN SMALL LIGATURE FF +<Multi_key> <f> <i> : "fi" Ufb01 # LATIN SMALL LIGATURE FI +<Multi_key> <f> <l> : "fl" Ufb02 # LATIN SMALL LIGATURE FL +<Multi_key> <F> <i> : "ffi" Ufb03 # LATIN SMALL LIGATURE FFI +<Multi_key> <F> <l> : "ffl" Ufb04 # LATIN SMALL LIGATURE FFL +<Multi_key> <I> <J> : "IJ" U0132 # LATIN CAPITAL LIGATURE IJ +<Multi_key> <I> <j> : "IJ" U0132 # LATIN CAPITAL LIGATURE IJ +<Multi_key> <i> <j> : "ij" U0133 # LATIN SMALL LIGATURE IJ + +<Multi_key> <o> <o> : "°" degree # DEGREE SIGN +<Multi_key> <asterisk> <0> : "°" degree # DEGREE SIGN +<Multi_key> <0> <asterisk> : "°" degree # DEGREE SIGN + +# Quotation marks +<Multi_key> <less> <less> : "«" guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +<Multi_key> <greater> <greater> : "»" guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +<Multi_key> <less> <apostrophe> : "‘" U2018 # LEFT SINGLE QUOTATION MARK +<Multi_key> <apostrophe> <less> : "‘" U2018 # LEFT SINGLE QUOTATION MARK +<Multi_key> <greater> <apostrophe> : "’" U2019 # RIGHT SINGLE QUOTATION MARK +<Multi_key> <apostrophe> <greater> : "’" U2019 # RIGHT SINGLE QUOTATION MARK +<Multi_key> <comma> <apostrophe> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK +<Multi_key> <apostrophe> <comma> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK +<Multi_key> <less> <quotedbl> : "“" U201c # LEFT DOUBLE QUOTATION MARK +<Multi_key> <quotedbl> <less> : "“" U201c # LEFT DOUBLE QUOTATION MARK +<Multi_key> <greater> <quotedbl> : "”" U201d # RIGHT DOUBLE QUOTATION MARK +<Multi_key> <quotedbl> <greater> : "”" U201d # RIGHT DOUBLE QUOTATION MARK +<Multi_key> <comma> <quotedbl> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK +<Multi_key> <quotedbl> <comma> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK + +# Per xxx +<Multi_key> <percent> <o> : "‰" U2030 # PER MILLE SIGN + +# Currencies +<Multi_key> <C> <E> : "₠" U20a0 # EURO-CURRENCY SIGN +<Multi_key> <C> <slash> : "₡" U20a1 # COLON SIGN +<Multi_key> <slash> <C> : "₡" U20a1 # COLON SIGN +<Multi_key> <C> <r> : "₢" U20a2 # CRUZEIRO SIGN +<Multi_key> <F> <r> : "₣" U20a3 # FRENCH FRANC SIGN +<Multi_key> <L> <equal> : "₤" U20a4 # LIRA SIGN +<Multi_key> <equal> <L> : "₤" U20a4 # LIRA SIGN +<Multi_key> <m> <slash> : "₥" U20a5 # MILL SIGN +<Multi_key> <slash> <m> : "₥" U20a5 # MILL SIGN +<Multi_key> <N> <equal> : "₦" U20a6 # NAIRA SIGN +<Multi_key> <equal> <N> : "₦" U20a6 # NAIRA SIGN +<Multi_key> <P> <t> : "₧" U20a7 # PESETA SIGN +<Multi_key> <R> <s> : "₨" U20a8 # RUPEE SIGN +<Multi_key> <W> <equal> : "₩" U20a9 # WON SIGN +<Multi_key> <equal> <W> : "₩" U20a9 # WON SIGN +# "₪" U20aa NEW SHEQEL SIGN +<Multi_key> <d> <equal> : "₫" U20ab # DONG SIGN +<Multi_key> <equal> <d> : "₫" U20ab # DONG SIGN +<Multi_key> <C> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <C> : "€" EuroSign # EURO SIGN +<Multi_key> <c> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <c> : "€" EuroSign # EURO SIGN +<Multi_key> <E> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <E> : "€" EuroSign # EURO SIGN +<Multi_key> <e> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <e> : "€" EuroSign # EURO SIGN +<Multi_key> <Cyrillic_ES> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <Cyrillic_ES> : "€" EuroSign # EURO SIGN +<Multi_key> <Cyrillic_IE> <equal> : "€" EuroSign # EURO SIGN +<Multi_key> <equal> <Cyrillic_IE> : "€" EuroSign # EURO SIGN +# "₭" U20ad KIP SIGN +# "₮" U20ae TUGRIK SIGN +# "₯" U20af DRACHMA SIGN +# "₰" U20b0 GERMAN PENNY SIGN +# "₱" U20b1 PESO SIGN +# "₲" U20b2 GUARANI SIGN +# "₳" U20b3 AUSTRAL SIGN +# "₴" U20b4 HRYVNIA SIGN +# "₵" U20b5 CEDI SIGN + + +<Multi_key> <bar> <C> : "¢" cent # CENT SIGN +<Multi_key> <bar> <c> : "¢" cent # CENT SIGN +<Multi_key> <C> <bar> : "¢" cent # CENT SIGN +<Multi_key> <c> <bar> : "¢" cent # CENT SIGN +<Multi_key> <c> <slash> : "¢" cent # CENT SIGN +<Multi_key> <slash> <c> : "¢" cent # CENT SIGN +<Multi_key> <L> <minus> : "£" sterling # POUND SIGN +<Multi_key> <l> <minus> : "£" sterling # POUND SIGN +<Multi_key> <minus> <L> : "£" sterling # POUND SIGN +<Multi_key> <minus> <l> : "£" sterling # POUND SIGN +<Multi_key> <Y> <equal> : "¥" yen # YEN SIGN +<Multi_key> <y> <equal> : "¥" yen # YEN SIGN +<Multi_key> <equal> <Y> : "¥" yen # YEN SIGN +<Multi_key> <equal> <y> : "¥" yen # YEN SIGN +<Multi_key> <Y> <minus> : "¥" yen # YEN SIGN +<Multi_key> <minus> <Y> : "¥" yen # YEN SIGN +<Multi_key> <y> <minus> : "¥" yen # YEN SIGN +<Multi_key> <minus> <y> : "¥" yen # YEN SIGN + +# Long S +<Multi_key> <f> <s> : "ſ" U017f # LATIN SMALL LETTER LONG S +<Multi_key> <f> <S> : "ſ" U017f # LATIN SMALL LETTER LONG S +<dead_abovedot> <Multi_key> <f> <s> : "ẛ" U1e9b # LATIN SMALL LETTER LONG S WITH DOT ABOVE +<Multi_key> <dead_abovedot> <f> <s> : "ẛ" U1e9b # LATIN SMALL LETTER LONG S WITH DOT ABOVE + +# Dashes +<Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH +<Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH + +# Musical alterations +<Multi_key> <numbersign> <q> : "♩" U2669 # QUARTER NOTE +<Multi_key> <numbersign> <e> : "♪" U266a # EIGHTH NOTE +<Multi_key> <numbersign> <E> : "♫" U266b # BEAMED EIGHTH NOTES +<Multi_key> <numbersign> <S> : "♬" U266c # BEAMED SIXTEENTH NOTES +<Multi_key> <numbersign> <b> : "♭" U266d # MUSIC FLAT SIGN +<Multi_key> <numbersign> <f> : "♮" U266e # MUSIC NATURAL SIGN +<Multi_key> <numbersign> <numbersign> : "♯" U266f # MUSIC SHARP SIGN + +# Other symbols +<Multi_key> <s> <o> : "§" section # SECTION SIGN +<Multi_key> <o> <s> : "§" section # SECTION SIGN +<Multi_key> <S> <O> : "§" section # SECTION SIGN +<Multi_key> <O> <S> : "§" section # SECTION SIGN +<Multi_key> <s> <exclam> : "§" section # SECTION SIGN +<Multi_key> <S> <exclam> : "§" section # SECTION SIGN +<Multi_key> <Cyrillic_pe> <Cyrillic_a> : "§" section # SECTION SIGN + +<Multi_key> <o> <x> : "¤" currency # CURRENCY SIGN +<Multi_key> <x> <o> : "¤" currency # CURRENCY SIGN +<Multi_key> <o> <X> : "¤" currency # CURRENCY SIGN +<Multi_key> <X> <o> : "¤" currency # CURRENCY SIGN +<Multi_key> <O> <X> : "¤" currency # CURRENCY SIGN +<Multi_key> <X> <O> : "¤" currency # CURRENCY SIGN +<Multi_key> <O> <x> : "¤" currency # CURRENCY SIGN +<Multi_key> <x> <O> : "¤" currency # CURRENCY SIGN + +<Multi_key> <P> <P> : "¶" paragraph # PILCROW SIGN + +<Multi_key> <N> <o> : "№" numerosign # NUMERO SIGN +<Multi_key> <N> <O> : "№" numerosign # NUMERO SIGN +<Multi_key> <Cyrillic_EN> <Cyrillic_o> : "№" numerosign # NUMERO SIGN +<Multi_key> <Cyrillic_EN> <Cyrillic_O> : "№" numerosign # NUMERO SIGN + +<Multi_key> <question> <exclam> : "⸘" U2E18 # INVERTED INTERROBANG +<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG + +<Multi_key> <C> <C> <C> <P> : "☭" U262D # HAMMER AND SICKLE +<Multi_key> <O> <A> : "Ⓐ" U24B6 # CIRCLED LATIN CAPITAL LETTER A +<Multi_key> <less> <3> : "♥" U2665 # BLACK HEART SUIT + +<Multi_key> <colon> <parenright> : "☺" U263A # WHITE SMILING FACE +<Multi_key> <colon> <parenleft> : "☹" U2639 # WHITE FROWNING FACE + +# Part 2 + +# Compose map for Korean Hangul(Choseongul) Conjoining Jamos automatically +# generated from UnicodeData-2.0.14.txt at +# ftp://ftp.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt +# by Jungshik Shin <jshin@jshin.net> 2002-10-17 +# There are some conflicts among sequences, but I left them alone. +# +# group 1: cluster jamos made of three basic jamos + + +<Multi_key> <U1100> <U1100> : "ᄁ" U1101 # HANGUL CHOSEONG SSANGKIYEOK +<Multi_key> <U1103> <U1103> : "ᄄ" U1104 # HANGUL CHOSEONG SSANGTIKEUT +<Multi_key> <U1107> <U1107> : "ᄈ" U1108 # HANGUL CHOSEONG SSANGPIEUP +<Multi_key> <U1109> <U1109> : "ᄊ" U110a # HANGUL CHOSEONG SSANGSIOS +<Multi_key> <U110C> <U110C> : "ᄍ" U110d # HANGUL CHOSEONG SSANGCIEUC +<Multi_key> <U1102> <U1100> : "ᄓ" U1113 # HANGUL CHOSEONG NIEUN-KIYEOK +<Multi_key> <U1102> <U1102> : "ᄔ" U1114 # HANGUL CHOSEONG SSANGNIEUN +<Multi_key> <U1102> <U1103> : "ᄕ" U1115 # HANGUL CHOSEONG NIEUN-TIKEUT +<Multi_key> <U1102> <U1107> : "ᄖ" U1116 # HANGUL CHOSEONG NIEUN-PIEUP +<Multi_key> <U1103> <U1100> : "ᄗ" U1117 # HANGUL CHOSEONG TIKEUT-KIYEOK +<Multi_key> <U1105> <U1102> : "ᄘ" U1118 # HANGUL CHOSEONG RIEUL-NIEUN +<Multi_key> <U1105> <U1105> : "ᄙ" U1119 # HANGUL CHOSEONG SSANGRIEUL +<Multi_key> <U1105> <U1112> : "ᄚ" U111a # HANGUL CHOSEONG RIEUL-HIEUH +<Multi_key> <U1105> <U110B> : "ᄛ" U111b # HANGUL CHOSEONG KAPYEOUNRIEUL +<Multi_key> <U1106> <U1107> : "ᄜ" U111c # HANGUL CHOSEONG MIEUM-PIEUP +<Multi_key> <U1106> <U110B> : "ᄝ" U111d # HANGUL CHOSEONG KAPYEOUNMIEUM +<Multi_key> <U1107> <U1100> : "ᄞ" U111e # HANGUL CHOSEONG PIEUP-KIYEOK +<Multi_key> <U1107> <U1102> : "ᄟ" U111f # HANGUL CHOSEONG PIEUP-NIEUN +<Multi_key> <U1107> <U1103> : "ᄠ" U1120 # HANGUL CHOSEONG PIEUP-TIKEUT +<Multi_key> <U1107> <U1109> : "ᄡ" U1121 # HANGUL CHOSEONG PIEUP-SIOS +<Multi_key> <U1107> <U110C> : "ᄧ" U1127 # HANGUL CHOSEONG PIEUP-CIEUC +<Multi_key> <U1107> <U110E> : "ᄨ" U1128 # HANGUL CHOSEONG PIEUP-CHIEUCH +<Multi_key> <U1107> <U1110> : "ᄩ" U1129 # HANGUL CHOSEONG PIEUP-THIEUTH +<Multi_key> <U1107> <U1111> : "ᄪ" U112a # HANGUL CHOSEONG PIEUP-PHIEUPH +<Multi_key> <U1107> <U110B> : "ᄫ" U112b # HANGUL CHOSEONG KAPYEOUNPIEUP +<Multi_key> <U1109> <U1100> : "ᄭ" U112d # HANGUL CHOSEONG SIOS-KIYEOK +<Multi_key> <U1109> <U1102> : "ᄮ" U112e # HANGUL CHOSEONG SIOS-NIEUN +<Multi_key> <U1109> <U1103> : "ᄯ" U112f # HANGUL CHOSEONG SIOS-TIKEUT +<Multi_key> <U1109> <U1105> : "ᄰ" U1130 # HANGUL CHOSEONG SIOS-RIEUL +<Multi_key> <U1109> <U1106> : "ᄱ" U1131 # HANGUL CHOSEONG SIOS-MIEUM +<Multi_key> <U1109> <U1107> : "ᄲ" U1132 # HANGUL CHOSEONG SIOS-PIEUP +<Multi_key> <U1109> <U110B> : "ᄵ" U1135 # HANGUL CHOSEONG SIOS-IEUNG +<Multi_key> <U1109> <U110C> : "ᄶ" U1136 # HANGUL CHOSEONG SIOS-CIEUC +<Multi_key> <U1109> <U110E> : "ᄷ" U1137 # HANGUL CHOSEONG SIOS-CHIEUCH +<Multi_key> <U1109> <U110F> : "ᄸ" U1138 # HANGUL CHOSEONG SIOS-KHIEUKH +<Multi_key> <U1109> <U1110> : "ᄹ" U1139 # HANGUL CHOSEONG SIOS-THIEUTH +<Multi_key> <U1109> <U1111> : "ᄺ" U113a # HANGUL CHOSEONG SIOS-PHIEUPH +<Multi_key> <U1109> <U1112> : "ᄻ" U113b # HANGUL CHOSEONG SIOS-HIEUH +<Multi_key> <U113C> <U113C> : "ᄽ" U113d # HANGUL CHOSEONG CHITUEUMSSANGSIOS +<Multi_key> <U113E> <U113E> : "ᄿ" U113f # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS +<Multi_key> <U110B> <U1100> : "ᅁ" U1141 # HANGUL CHOSEONG IEUNG-KIYEOK +<Multi_key> <U110B> <U1103> : "ᅂ" U1142 # HANGUL CHOSEONG IEUNG-TIKEUT +<Multi_key> <U110B> <U1106> : "ᅃ" U1143 # HANGUL CHOSEONG IEUNG-MIEUM +<Multi_key> <U110B> <U1107> : "ᅄ" U1144 # HANGUL CHOSEONG IEUNG-PIEUP +<Multi_key> <U110B> <U1109> : "ᅅ" U1145 # HANGUL CHOSEONG IEUNG-SIOS +<Multi_key> <U110B> <U1140> : "ᅆ" U1146 # HANGUL CHOSEONG IEUNG-PANSIOS +<Multi_key> <U110B> <U110B> : "ᅇ" U1147 # HANGUL CHOSEONG SSANGIEUNG +<Multi_key> <U110B> <U110C> : "ᅈ" U1148 # HANGUL CHOSEONG IEUNG-CIEUC +<Multi_key> <U110B> <U110E> : "ᅉ" U1149 # HANGUL CHOSEONG IEUNG-CHIEUCH +<Multi_key> <U110B> <U1110> : "ᅊ" U114a # HANGUL CHOSEONG IEUNG-THIEUTH +<Multi_key> <U110B> <U1111> : "ᅋ" U114b # HANGUL CHOSEONG IEUNG-PHIEUPH +<Multi_key> <U110C> <U110B> : "ᅍ" U114d # HANGUL CHOSEONG CIEUC-IEUNG +<Multi_key> <U114E> <U114E> : "ᅏ" U114f # HANGUL CHOSEONG CHITUEUMSSANGCIEUC +<Multi_key> <U1150> <U1150> : "ᅑ" U1151 # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC +<Multi_key> <U110E> <U110F> : "ᅒ" U1152 # HANGUL CHOSEONG CHIEUCH-KHIEUKH +<Multi_key> <U110E> <U1112> : "ᅓ" U1153 # HANGUL CHOSEONG CHIEUCH-HIEUH +<Multi_key> <U1111> <U1107> : "ᅖ" U1156 # HANGUL CHOSEONG PHIEUPH-PIEUP +<Multi_key> <U1111> <U110B> : "ᅗ" U1157 # HANGUL CHOSEONG KAPYEOUNPHIEUPH +<Multi_key> <U1112> <U1112> : "ᅘ" U1158 # HANGUL CHOSEONG SSANGHIEUH +<Multi_key> <U1161> <U1175> : "ᅢ" U1162 # HANGUL JUNGSEONG AE +<Multi_key> <U1163> <U1175> : "ᅤ" U1164 # HANGUL JUNGSEONG YAE +<Multi_key> <U1165> <U1175> : "ᅦ" U1166 # HANGUL JUNGSEONG E +<Multi_key> <U1167> <U1175> : "ᅨ" U1168 # HANGUL JUNGSEONG YE +<Multi_key> <U1169> <U1161> : "ᅪ" U116a # HANGUL JUNGSEONG WA +<Multi_key> <U1169> <U1175> : "ᅬ" U116c # HANGUL JUNGSEONG OE +<Multi_key> <U116E> <U1165> : "ᅯ" U116f # HANGUL JUNGSEONG WEO +<Multi_key> <U116E> <U1175> : "ᅱ" U1171 # HANGUL JUNGSEONG WI +<Multi_key> <U1173> <U1175> : "ᅴ" U1174 # HANGUL JUNGSEONG YI +<Multi_key> <U1161> <U1169> : "ᅶ" U1176 # HANGUL JUNGSEONG A-O +<Multi_key> <U1161> <U116E> : "ᅷ" U1177 # HANGUL JUNGSEONG A-U +<Multi_key> <U1163> <U1169> : "ᅸ" U1178 # HANGUL JUNGSEONG YA-O +<Multi_key> <U1163> <U116D> : "ᅹ" U1179 # HANGUL JUNGSEONG YA-YO +<Multi_key> <U1165> <U1169> : "ᅺ" U117a # HANGUL JUNGSEONG EO-O +<Multi_key> <U1165> <U116E> : "ᅻ" U117b # HANGUL JUNGSEONG EO-U +<Multi_key> <U1165> <U1173> : "ᅼ" U117c # HANGUL JUNGSEONG EO-EU +<Multi_key> <U1167> <U1169> : "ᅽ" U117d # HANGUL JUNGSEONG YEO-O +<Multi_key> <U1167> <U116E> : "ᅾ" U117e # HANGUL JUNGSEONG YEO-U +<Multi_key> <U1169> <U1165> : "ᅿ" U117f # HANGUL JUNGSEONG O-EO +<Multi_key> <U1169> <U1166> : "ᆀ" U1180 # HANGUL JUNGSEONG O-E +<Multi_key> <U1169> <U1168> : "ᆁ" U1181 # HANGUL JUNGSEONG O-YE +<Multi_key> <U1169> <U1169> : "ᆂ" U1182 # HANGUL JUNGSEONG O-O +<Multi_key> <U1169> <U116E> : "ᆃ" U1183 # HANGUL JUNGSEONG O-U +<Multi_key> <U116D> <U1163> : "ᆄ" U1184 # HANGUL JUNGSEONG YO-YA +<Multi_key> <U116D> <U1164> : "ᆅ" U1185 # HANGUL JUNGSEONG YO-YAE +<Multi_key> <U116D> <U1167> : "ᆆ" U1186 # HANGUL JUNGSEONG YO-YEO +<Multi_key> <U116D> <U1169> : "ᆇ" U1187 # HANGUL JUNGSEONG YO-O +<Multi_key> <U116D> <U1175> : "ᆈ" U1188 # HANGUL JUNGSEONG YO-I +<Multi_key> <U116E> <U1161> : "ᆉ" U1189 # HANGUL JUNGSEONG U-A +<Multi_key> <U116E> <U1162> : "ᆊ" U118a # HANGUL JUNGSEONG U-AE +<Multi_key> <U116E> <U1168> : "ᆌ" U118c # HANGUL JUNGSEONG U-YE +<Multi_key> <U116E> <U116E> : "ᆍ" U118d # HANGUL JUNGSEONG U-U +<Multi_key> <U1172> <U1161> : "ᆎ" U118e # HANGUL JUNGSEONG YU-A +<Multi_key> <U1172> <U1165> : "ᆏ" U118f # HANGUL JUNGSEONG YU-EO +<Multi_key> <U1172> <U1166> : "ᆐ" U1190 # HANGUL JUNGSEONG YU-E +<Multi_key> <U1172> <U1167> : "ᆑ" U1191 # HANGUL JUNGSEONG YU-YEO +<Multi_key> <U1172> <U1168> : "ᆒ" U1192 # HANGUL JUNGSEONG YU-YE +<Multi_key> <U1172> <U116E> : "ᆓ" U1193 # HANGUL JUNGSEONG YU-U +<Multi_key> <U1172> <U1175> : "ᆔ" U1194 # HANGUL JUNGSEONG YU-I +<Multi_key> <U1173> <U116E> : "ᆕ" U1195 # HANGUL JUNGSEONG EU-U +<Multi_key> <U1173> <U1173> : "ᆖ" U1196 # HANGUL JUNGSEONG EU-EU +<Multi_key> <U1174> <U116E> : "ᆗ" U1197 # HANGUL JUNGSEONG YI-U +<Multi_key> <U1175> <U1161> : "ᆘ" U1198 # HANGUL JUNGSEONG I-A +<Multi_key> <U1175> <U1163> : "ᆙ" U1199 # HANGUL JUNGSEONG I-YA +<Multi_key> <U1175> <U1169> : "ᆚ" U119a # HANGUL JUNGSEONG I-O +<Multi_key> <U1175> <U116E> : "ᆛ" U119b # HANGUL JUNGSEONG I-U +<Multi_key> <U1175> <U1173> : "ᆜ" U119c # HANGUL JUNGSEONG I-EU +<Multi_key> <U1175> <U119E> : "ᆝ" U119d # HANGUL JUNGSEONG I-ARAEA +<Multi_key> <U119E> <U1165> : "ᆟ" U119f # HANGUL JUNGSEONG ARAEA-EO +<Multi_key> <U119E> <U116E> : "ᆠ" U11a0 # HANGUL JUNGSEONG ARAEA-U +<Multi_key> <U119E> <U1175> : "ᆡ" U11a1 # HANGUL JUNGSEONG ARAEA-I +<Multi_key> <U119E> <U119E> : "ᆢ" U11a2 # HANGUL JUNGSEONG SSANGARAEA +<Multi_key> <U11A8> <U11A8> : "ᆩ" U11a9 # HANGUL JONGSEONG SSANGKIYEOK +<Multi_key> <U11A8> <U11BA> : "ᆪ" U11aa # HANGUL JONGSEONG KIYEOK-SIOS +<Multi_key> <U11AB> <U11BD> : "ᆬ" U11ac # HANGUL JONGSEONG NIEUN-CIEUC +<Multi_key> <U11AB> <U11C2> : "ᆭ" U11ad # HANGUL JONGSEONG NIEUN-HIEUH +<Multi_key> <U11AF> <U11A8> : "ᆰ" U11b0 # HANGUL JONGSEONG RIEUL-KIYEOK +<Multi_key> <U11AF> <U11B7> : "ᆱ" U11b1 # HANGUL JONGSEONG RIEUL-MIEUM +<Multi_key> <U11AF> <U11B8> : "ᆲ" U11b2 # HANGUL JONGSEONG RIEUL-PIEUP +<Multi_key> <U11AF> <U11BA> : "ᆳ" U11b3 # HANGUL JONGSEONG RIEUL-SIOS +<Multi_key> <U11AF> <U11C0> : "ᆴ" U11b4 # HANGUL JONGSEONG RIEUL-THIEUTH +<Multi_key> <U11AF> <U11C1> : "ᆵ" U11b5 # HANGUL JONGSEONG RIEUL-PHIEUPH +<Multi_key> <U11AF> <U11C2> : "ᆶ" U11b6 # HANGUL JONGSEONG RIEUL-HIEUH +<Multi_key> <U11B8> <U11BA> : "ᆹ" U11b9 # HANGUL JONGSEONG PIEUP-SIOS +<Multi_key> <U11BA> <U11BA> : "ᆻ" U11bb # HANGUL JONGSEONG SSANGSIOS +<Multi_key> <U11A8> <U11AF> : "ᇃ" U11c3 # HANGUL JONGSEONG KIYEOK-RIEUL +<Multi_key> <U11AB> <U11A8> : "ᇅ" U11c5 # HANGUL JONGSEONG NIEUN-KIYEOK +<Multi_key> <U11AB> <U11AE> : "ᇆ" U11c6 # HANGUL JONGSEONG NIEUN-TIKEUT +<Multi_key> <U11AB> <U11BA> : "ᇇ" U11c7 # HANGUL JONGSEONG NIEUN-SIOS +<Multi_key> <U11AB> <U11EB> : "ᇈ" U11c8 # HANGUL JONGSEONG NIEUN-PANSIOS +<Multi_key> <U11AB> <U11C0> : "ᇉ" U11c9 # HANGUL JONGSEONG NIEUN-THIEUTH +<Multi_key> <U11AE> <U11A8> : "ᇊ" U11ca # HANGUL JONGSEONG TIKEUT-KIYEOK +<Multi_key> <U11AE> <U11AF> : "ᇋ" U11cb # HANGUL JONGSEONG TIKEUT-RIEUL +<Multi_key> <U11AF> <U11AB> : "ᇍ" U11cd # HANGUL JONGSEONG RIEUL-NIEUN +<Multi_key> <U11AF> <U11AE> : "ᇎ" U11ce # HANGUL JONGSEONG RIEUL-TIKEUT +<Multi_key> <U11AF> <U11AF> : "ᇐ" U11d0 # HANGUL JONGSEONG SSANGRIEUL +<Multi_key> <U11AF> <U11EB> : "ᇗ" U11d7 # HANGUL JONGSEONG RIEUL-PANSIOS +<Multi_key> <U11AF> <U11BF> : "ᇘ" U11d8 # HANGUL JONGSEONG RIEUL-KHIEUKH +<Multi_key> <U11AF> <U11F9> : "ᇙ" U11d9 # HANGUL JONGSEONG RIEUL-YEORINHIEUH +<Multi_key> <U11B7> <U11A8> : "ᇚ" U11da # HANGUL JONGSEONG MIEUM-KIYEOK +<Multi_key> <U11B7> <U11AF> : "ᇛ" U11db # HANGUL JONGSEONG MIEUM-RIEUL +<Multi_key> <U11B7> <U11B8> : "ᇜ" U11dc # HANGUL JONGSEONG MIEUM-PIEUP +<Multi_key> <U11B7> <U11BA> : "ᇝ" U11dd # HANGUL JONGSEONG MIEUM-SIOS +<Multi_key> <U11B7> <U11EB> : "ᇟ" U11df # HANGUL JONGSEONG MIEUM-PANSIOS +<Multi_key> <U11B7> <U11BE> : "ᇠ" U11e0 # HANGUL JONGSEONG MIEUM-CHIEUCH +<Multi_key> <U11B7> <U11C2> : "ᇡ" U11e1 # HANGUL JONGSEONG MIEUM-HIEUH +<Multi_key> <U11B7> <U11BC> : "ᇢ" U11e2 # HANGUL JONGSEONG KAPYEOUNMIEUM +<Multi_key> <U11B8> <U11AF> : "ᇣ" U11e3 # HANGUL JONGSEONG PIEUP-RIEUL +<Multi_key> <U11B8> <U11C1> : "ᇤ" U11e4 # HANGUL JONGSEONG PIEUP-PHIEUPH +<Multi_key> <U11B8> <U11C2> : "ᇥ" U11e5 # HANGUL JONGSEONG PIEUP-HIEUH +<Multi_key> <U11B8> <U11BC> : "ᇦ" U11e6 # HANGUL JONGSEONG KAPYEOUNPIEUP +<Multi_key> <U11BA> <U11A8> : "ᇧ" U11e7 # HANGUL JONGSEONG SIOS-KIYEOK +<Multi_key> <U11BA> <U11AE> : "ᇨ" U11e8 # HANGUL JONGSEONG SIOS-TIKEUT +<Multi_key> <U11BA> <U11AF> : "ᇩ" U11e9 # HANGUL JONGSEONG SIOS-RIEUL +<Multi_key> <U11BA> <U11B8> : "ᇪ" U11ea # HANGUL JONGSEONG SIOS-PIEUP +<Multi_key> <U11BC> <U11A8> : "ᇬ" U11ec # HANGUL JONGSEONG IEUNG-KIYEOK +<Multi_key> <U11BC> <U11BC> : "ᇮ" U11ee # HANGUL JONGSEONG SSANGIEUNG +<Multi_key> <U11BC> <U11BF> : "ᇯ" U11ef # HANGUL JONGSEONG IEUNG-KHIEUKH +<Multi_key> <U11F0> <U11BA> : "ᇱ" U11f1 # HANGUL JONGSEONG YESIEUNG-SIOS +<Multi_key> <U11F0> <U11EB> : "ᇲ" U11f2 # HANGUL JONGSEONG YESIEUNG-PANSIOS +<Multi_key> <U11C1> <U11B8> : "ᇳ" U11f3 # HANGUL JONGSEONG PHIEUPH-PIEUP +<Multi_key> <U11C1> <U11BC> : "ᇴ" U11f4 # HANGUL JONGSEONG KAPYEOUNPHIEUPH +<Multi_key> <U11C2> <U11AB> : "ᇵ" U11f5 # HANGUL JONGSEONG HIEUH-NIEUN +<Multi_key> <U11C2> <U11AF> : "ᇶ" U11f6 # HANGUL JONGSEONG HIEUH-RIEUL +<Multi_key> <U11C2> <U11B7> : "ᇷ" U11f7 # HANGUL JONGSEONG HIEUH-MIEUM +<Multi_key> <U11C2> <U11B8> : "ᇸ" U11f8 # HANGUL JONGSEONG HIEUH-PIEUP +<Multi_key> <U1121> <U1100> : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK +<Multi_key> <U1121> <U1103> : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT +<Multi_key> <U1121> <U1107> : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP +<Multi_key> <U1121> <U1109> : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS +<Multi_key> <U1121> <U110C> : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC +<Multi_key> <U1108> <U110B> : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP +<Multi_key> <U1132> <U1100> : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK +<Multi_key> <U110A> <U1109> : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS +<Multi_key> <U116A> <U1175> : "ᅫ" U116b # HANGUL JUNGSEONG WAE +<Multi_key> <U116F> <U1175> : "ᅰ" U1170 # HANGUL JUNGSEONG WE +<Multi_key> <U116F> <U1173> : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU +<Multi_key> <U11AA> <U11A8> : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK +<Multi_key> <U11B0> <U11BA> : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS +<Multi_key> <U11CE> <U11C2> : "ᇏ" U11cf # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH +<Multi_key> <U11B1> <U11A8> : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK +<Multi_key> <U11B1> <U11BA> : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS +<Multi_key> <U11B2> <U11BA> : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS +<Multi_key> <U11B2> <U11C2> : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH +<Multi_key> <U11B2> <U11BC> : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP +<Multi_key> <U11B3> <U11BA> : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS +<Multi_key> <U11DD> <U11BA> : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS +<Multi_key> <U11EC> <U11A8> : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK +<Multi_key> <U1107> <U112D> : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK +<Multi_key> <U1107> <U112F> : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT +<Multi_key> <U1107> <U1132> : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP +<Multi_key> <U1107> <U110A> : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS +<Multi_key> <U1107> <U1136> : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC +<Multi_key> <U1107> <U112B> : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP +<Multi_key> <U1109> <U111E> : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK +<Multi_key> <U1109> <U110A> : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS +<Multi_key> <U1169> <U1162> : "ᅫ" U116b # HANGUL JUNGSEONG WAE +<Multi_key> <U116E> <U1166> : "ᅰ" U1170 # HANGUL JUNGSEONG WE +<Multi_key> <U116E> <U117C> : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU +<Multi_key> <U11A8> <U11E7> : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK +<Multi_key> <U11AF> <U11AA> : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS +<Multi_key> <U11AF> <U11DA> : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK +<Multi_key> <U11AF> <U11DD> : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS +<Multi_key> <U11AF> <U11B9> : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS +<Multi_key> <U11AF> <U11E5> : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH +<Multi_key> <U11AF> <U11E6> : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP +<Multi_key> <U11AF> <U11BB> : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS +<Multi_key> <U11B7> <U11BB> : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS +<Multi_key> <U11BC> <U11A9> : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK + +# Part 3 +<Multi_key> <comma> <minus> : "¬" notsign # NOT SIGN +<Multi_key> <minus> <comma> : "¬" notsign # NOT SIGN +<dead_circumflex> <Multi_key> <underscore> <a> : "ª" ordfeminine # FEMININE ORDINAL INDICATOR +<Multi_key> <asciicircum> <underscore> <a> : "ª" ordfeminine # FEMININE ORDINAL INDICATOR +<dead_circumflex> <Multi_key> <underbar> <a> : "ª" ordfeminine # FEMININE ORDINAL INDICATOR +<Multi_key> <asciicircum> <underbar> <a> : "ª" ordfeminine # FEMININE ORDINAL INDICATOR +<dead_circumflex> <2> : "²" twosuperior # SUPERSCRIPT TWO +<Multi_key> <asciicircum> <2> : "²" twosuperior # SUPERSCRIPT TWO +<dead_circumflex> <KP_Space> : "²" twosuperior # SUPERSCRIPT TWO +<Multi_key> <asciicircum> <KP_Space> : "²" twosuperior # SUPERSCRIPT TWO +<dead_circumflex> <KP_2> : "²" twosuperior # SUPERSCRIPT TWO +<Multi_key> <asciicircum> <KP_2> : "²" twosuperior # SUPERSCRIPT TWO +<Multi_key> <2> <asciicircum> : "²" twosuperior # SUPERSCRIPT TWO +<dead_circumflex> <3> : "³" threesuperior # SUPERSCRIPT THREE +<Multi_key> <asciicircum> <3> : "³" threesuperior # SUPERSCRIPT THREE +<dead_circumflex> <KP_3> : "³" threesuperior # SUPERSCRIPT THREE +<Multi_key> <asciicircum> <KP_3> : "³" threesuperior # SUPERSCRIPT THREE +<Multi_key> <3> <asciicircum> : "³" threesuperior # SUPERSCRIPT THREE +<Multi_key> <m> <u> : "µ" mu # MICRO SIGN +<Multi_key> <slash> <u> : "µ" mu # MICRO SIGN +<Multi_key> <u> <slash> : "µ" mu # MICRO SIGN +<dead_circumflex> <1> : "¹" onesuperior # SUPERSCRIPT ONE +<Multi_key> <asciicircum> <1> : "¹" onesuperior # SUPERSCRIPT ONE +<dead_circumflex> <KP_1> : "¹" onesuperior # SUPERSCRIPT ONE +<Multi_key> <asciicircum> <KP_1> : "¹" onesuperior # SUPERSCRIPT ONE +<Multi_key> <1> <asciicircum> : "¹" onesuperior # SUPERSCRIPT ONE +<dead_circumflex> <Multi_key> <underscore> <o> : "º" masculine # MASCULINE ORDINAL INDICATOR +<Multi_key> <asciicircum> <underscore> <o> : "º" masculine # MASCULINE ORDINAL INDICATOR +<dead_circumflex> <Multi_key> <underbar> <o> : "º" masculine # MASCULINE ORDINAL INDICATOR +<Multi_key> <asciicircum> <underbar> <o> : "º" masculine # MASCULINE ORDINAL INDICATOR +<Multi_key> <1> <4> : "¼" onequarter # VULGAR FRACTION ONE QUARTER +<Multi_key> <1> <2> : "½" onehalf # VULGAR FRACTION ONE HALF +<Multi_key> <3> <4> : "¾" threequarters # VULGAR FRACTION THREE QUARTERS +<dead_grave> <A> : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE +<Multi_key> <grave> <A> : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE +<Multi_key> <A> <grave> : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE +<dead_acute> <A> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE +<Multi_key> <acute> <A> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE +<Multi_key> <apostrophe> <A> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE +<Multi_key> <A> <apostrophe> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE +<Multi_key> <A> <acute> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE +<dead_circumflex> <A> : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<Multi_key> <asciicircum> <A> : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<Multi_key> <greater> <A> : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<Multi_key> <A> <greater> : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<Multi_key> <A> <asciicircum> : "Â" Acircumflex # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<dead_tilde> <A> : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE +<Multi_key> <asciitilde> <A> : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE +<Multi_key> <A> <asciitilde> : "Ã" Atilde # LATIN CAPITAL LETTER A WITH TILDE +<dead_diaeresis> <A> : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS +<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS +<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS +<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS +<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis # LATIN CAPITAL LETTER A WITH DIAERESIS +<dead_abovering> <A> : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE +<Multi_key> <o> <A> : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE +<Multi_key> <asterisk> <A> : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE +<Multi_key> <A> <asterisk> : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE +<Multi_key> <A> <A> : "Å" Aring # LATIN CAPITAL LETTER A WITH RING ABOVE +<dead_cedilla> <C> : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA +<Multi_key> <comma> <C> : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA +<Multi_key> <C> <comma> : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA +<Multi_key> <cedilla> <C> : "Ç" Ccedilla # LATIN CAPITAL LETTER C WITH CEDILLA +<dead_grave> <E> : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE +<Multi_key> <grave> <E> : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE +<Multi_key> <E> <grave> : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE +<dead_acute> <E> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE +<Multi_key> <acute> <E> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE +<Multi_key> <apostrophe> <E> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE +<Multi_key> <E> <apostrophe> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE +<Multi_key> <E> <acute> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE +<dead_circumflex> <E> : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<Multi_key> <greater> <E> : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<Multi_key> <E> <greater> : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<dead_diaeresis> <E> : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS +<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS +<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS +<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS +<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis # LATIN CAPITAL LETTER E WITH DIAERESIS +<dead_grave> <I> : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE +<Multi_key> <grave> <I> : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE +<Multi_key> <I> <grave> : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE +<dead_acute> <I> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE +<Multi_key> <acute> <I> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE +<Multi_key> <I> <acute> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE +<Multi_key> <apostrophe> <I> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE +<Multi_key> <I> <apostrophe> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE +<dead_circumflex> <I> : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<Multi_key> <asciicircum> <I> : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<Multi_key> <I> <asciicircum> : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<Multi_key> <greater> <I> : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<Multi_key> <I> <greater> : "Î" Icircumflex # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<dead_diaeresis> <I> : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS +<Multi_key> <quotedbl> <I> : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS +<Multi_key> <I> <quotedbl> : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS +<Multi_key> <diaeresis> <I> : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS +<Multi_key> <I> <diaeresis> : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS +<dead_acute> <J> : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <apostrophe> <J> : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <J> <apostrophe> : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <acute> <J> : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <J> <acute> : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <D> <H> : "Ð" ETH # LATIN CAPITAL LETTER ETH +<dead_tilde> <N> : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE +<Multi_key> <asciitilde> <N> : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE +<Multi_key> <N> <asciitilde> : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE +<dead_grave> <O> : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE +<Multi_key> <grave> <O> : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE +<Multi_key> <O> <grave> : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE +<dead_acute> <O> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE +<Multi_key> <acute> <O> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE +<Multi_key> <O> <acute> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE +<Multi_key> <apostrophe> <O> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE +<Multi_key> <O> <apostrophe> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE +<dead_circumflex> <O> : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<Multi_key> <greater> <O> : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<Multi_key> <O> <greater> : "Ô" Ocircumflex # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<dead_tilde> <O> : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE +<Multi_key> <asciitilde> <O> : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE +<Multi_key> <O> <asciitilde> : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE +<dead_diaeresis> <O> : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis # LATIN CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <x> <x> : "×" multiply # MULTIPLICATION SIGN +<dead_stroke> <O> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE +<Multi_key> <slash> <O> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE +<Multi_key> <O> <slash> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE +<Multi_key> <KP_Divide> <O> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE +<dead_grave> <U> : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE +<Multi_key> <grave> <U> : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE +<Multi_key> <U> <grave> : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE +<dead_acute> <U> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE +<Multi_key> <acute> <U> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE +<Multi_key> <U> <acute> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE +<Multi_key> <apostrophe> <U> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE +<Multi_key> <U> <apostrophe> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE +<dead_circumflex> <U> : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<Multi_key> <asciicircum> <U> : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<Multi_key> <U> <asciicircum> : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<Multi_key> <greater> <U> : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<Multi_key> <U> <greater> : "Û" Ucircumflex # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<dead_diaeresis> <U> : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS +<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS +<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS +<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS +<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis # LATIN CAPITAL LETTER U WITH DIAERESIS +<dead_acute> <Y> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE +<Multi_key> <acute> <Y> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE +<Multi_key> <Y> <acute> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE +<Multi_key> <apostrophe> <Y> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE +<Multi_key> <Y> <apostrophe> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE +<Multi_key> <T> <H> : "Þ" THORN # LATIN CAPITAL LETTER THORN +<dead_grave> <a> : "à" agrave # LATIN SMALL LETTER A WITH GRAVE +<Multi_key> <grave> <a> : "à" agrave # LATIN SMALL LETTER A WITH GRAVE +<Multi_key> <a> <grave> : "à" agrave # LATIN SMALL LETTER A WITH GRAVE +<dead_acute> <a> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE +<Multi_key> <acute> <a> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE +<Multi_key> <a> <acute> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE +<Multi_key> <apostrophe> <a> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE +<Multi_key> <a> <apostrophe> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE +<dead_circumflex> <a> : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX +<Multi_key> <asciicircum> <a> : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX +<Multi_key> <a> <asciicircum> : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX +<Multi_key> <greater> <a> : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX +<Multi_key> <a> <greater> : "â" acircumflex # LATIN SMALL LETTER A WITH CIRCUMFLEX +<dead_tilde> <a> : "ã" atilde # LATIN SMALL LETTER A WITH TILDE +<Multi_key> <asciitilde> <a> : "ã" atilde # LATIN SMALL LETTER A WITH TILDE +<Multi_key> <a> <asciitilde> : "ã" atilde # LATIN SMALL LETTER A WITH TILDE +<dead_diaeresis> <a> : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS +<Multi_key> <quotedbl> <a> : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS +<Multi_key> <a> <quotedbl> : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS +<Multi_key> <diaeresis> <a> : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS +<Multi_key> <a> <diaeresis> : "ä" adiaeresis # LATIN SMALL LETTER A WITH DIAERESIS +<dead_abovering> <a> : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE +<Multi_key> <o> <a> : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE +<Multi_key> <asterisk> <a> : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE +<Multi_key> <a> <asterisk> : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE +<Multi_key> <a> <a> : "å" aring # LATIN SMALL LETTER A WITH RING ABOVE +<dead_cedilla> <c> : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA +<Multi_key> <comma> <c> : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA +<Multi_key> <c> <comma> : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA +<Multi_key> <cedilla> <c> : "ç" ccedilla # LATIN SMALL LETTER C WITH CEDILLA +<dead_grave> <e> : "è" egrave # LATIN SMALL LETTER E WITH GRAVE +<Multi_key> <grave> <e> : "è" egrave # LATIN SMALL LETTER E WITH GRAVE +<Multi_key> <e> <grave> : "è" egrave # LATIN SMALL LETTER E WITH GRAVE +<dead_acute> <e> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE +<Multi_key> <acute> <e> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE +<Multi_key> <e> <acute> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE +<Multi_key> <apostrophe> <e> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE +<Multi_key> <e> <apostrophe> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE +<dead_circumflex> <e> : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX +<Multi_key> <asciicircum> <e> : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX +<Multi_key> <e> <asciicircum> : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX +<Multi_key> <greater> <e> : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX +<Multi_key> <e> <greater> : "ê" ecircumflex # LATIN SMALL LETTER E WITH CIRCUMFLEX +<dead_diaeresis> <e> : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS +<Multi_key> <quotedbl> <e> : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS +<Multi_key> <e> <quotedbl> : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS +<Multi_key> <diaeresis> <e> : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS +<Multi_key> <e> <diaeresis> : "ë" ediaeresis # LATIN SMALL LETTER E WITH DIAERESIS +<dead_grave> <i> : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE +<Multi_key> <grave> <i> : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE +<Multi_key> <i> <grave> : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE +<dead_acute> <i> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE +<Multi_key> <acute> <i> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE +<Multi_key> <i> <acute> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE +<Multi_key> <apostrophe> <i> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE +<Multi_key> <i> <apostrophe> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE +<dead_circumflex> <i> : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX +<Multi_key> <asciicircum> <i> : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX +<Multi_key> <i> <asciicircum> : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX +<Multi_key> <greater> <i> : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX +<Multi_key> <i> <greater> : "î" icircumflex # LATIN SMALL LETTER I WITH CIRCUMFLEX +<dead_diaeresis> <i> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS +<Multi_key> <quotedbl> <i> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS +<Multi_key> <i> <quotedbl> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS +<Multi_key> <diaeresis> <i> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS +<Multi_key> <i> <diaeresis> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS +<dead_acute> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <apostrophe> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <j> <apostrophe> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <acute> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <j> <acute> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 +<Multi_key> <d> <h> : "ð" eth # LATIN SMALL LETTER ETH +<dead_tilde> <n> : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE +<Multi_key> <asciitilde> <n> : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE +<Multi_key> <n> <asciitilde> : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE +<dead_grave> <o> : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE +<Multi_key> <grave> <o> : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE +<Multi_key> <o> <grave> : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE +<dead_acute> <o> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE +<Multi_key> <acute> <o> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE +<Multi_key> <o> <acute> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE +<Multi_key> <apostrophe> <o> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE +<Multi_key> <o> <apostrophe> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE +<dead_circumflex> <o> : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX +<Multi_key> <asciicircum> <o> : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX +<Multi_key> <o> <asciicircum> : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX +<Multi_key> <greater> <o> : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX +<Multi_key> <o> <greater> : "ô" ocircumflex # LATIN SMALL LETTER O WITH CIRCUMFLEX +<dead_tilde> <o> : "õ" otilde # LATIN SMALL LETTER O WITH TILDE +<Multi_key> <asciitilde> <o> : "õ" otilde # LATIN SMALL LETTER O WITH TILDE +<Multi_key> <o> <asciitilde> : "õ" otilde # LATIN SMALL LETTER O WITH TILDE +<dead_diaeresis> <o> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS +<Multi_key> <o> <diaeresis> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS +<Multi_key> <diaeresis> <o> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS +<Multi_key> <quotedbl> <o> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS +<Multi_key> <o> <quotedbl> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIAERESIS +<Multi_key> <colon> <minus> : "÷" division # DIVISION SIGN +<Multi_key> <minus> <colon> : "÷" division # DIVISION SIGN +<dead_stroke> <o> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE +<Multi_key> <slash> <o> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE +<Multi_key> <o> <slash> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE +<Multi_key> <KP_Divide> <o> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE +<dead_grave> <u> : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE +<Multi_key> <grave> <u> : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE +<Multi_key> <u> <grave> : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE +<dead_acute> <u> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE +<Multi_key> <acute> <u> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE +<Multi_key> <u> <acute> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE +<Multi_key> <apostrophe> <u> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE +<Multi_key> <u> <apostrophe> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE +<dead_circumflex> <u> : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX +<Multi_key> <asciicircum> <u> : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX +<Multi_key> <u> <asciicircum> : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX +<Multi_key> <greater> <u> : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX +<Multi_key> <u> <greater> : "û" ucircumflex # LATIN SMALL LETTER U WITH CIRCUMFLEX +<dead_diaeresis> <u> : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS +<Multi_key> <quotedbl> <u> : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS +<Multi_key> <u> <quotedbl> : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS +<Multi_key> <diaeresis> <u> : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS +<Multi_key> <u> <diaeresis> : "ü" udiaeresis # LATIN SMALL LETTER U WITH DIAERESIS +<dead_acute> <y> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE +<Multi_key> <acute> <y> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE +<Multi_key> <y> <acute> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE +<Multi_key> <apostrophe> <y> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE +<Multi_key> <y> <apostrophe> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE +<Multi_key> <t> <h> : "þ" thorn # LATIN SMALL LETTER THORN +<dead_diaeresis> <y> : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS +<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS +<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS +<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS +<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis # LATIN SMALL LETTER Y WITH DIAERESIS +<dead_macron> <A> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <macron> <A> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <underscore> <A> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <A> <underscore> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <minus> <A> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <A> <minus> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<dead_macron> <a> : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON +<Multi_key> <macron> <a> : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON +<Multi_key> <underscore> <a> : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON +<Multi_key> <a> <underscore> : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON +<Multi_key> <minus> <a> : "ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<Multi_key> <a> <minus> : "ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON +<dead_breve> <A> : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE +<Multi_key> <U> <A> : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE +<Multi_key> <b> <A> : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE +<Multi_key> <A> <parenleft> : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE +<dead_breve> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE +<Multi_key> <U> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE +<Multi_key> <b> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE +<Multi_key> <a> <parenleft> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE +<dead_ogonek> <A> : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK +<Multi_key> <semicolon> <A> : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK +<Multi_key> <comma> <A> : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK +<Multi_key> <A> <comma> : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK +<dead_ogonek> <a> : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK +<Multi_key> <semicolon> <a> : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK +<Multi_key> <comma> <a> : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK +<Multi_key> <a> <comma> : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK +<dead_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE +<Multi_key> <acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE +<Multi_key> <apostrophe> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE +<Multi_key> <C> <apostrophe> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE +<dead_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE +<Multi_key> <acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE +<Multi_key> <apostrophe> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE +<Multi_key> <c> <apostrophe> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE +<dead_circumflex> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +<Multi_key> <asciicircum> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +<dead_circumflex> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX +<Multi_key> <asciicircum> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX +<dead_abovedot> <C> : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE +<Multi_key> <period> <C> : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE +<Multi_key> <C> <period> : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE +<dead_abovedot> <c> : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE +<Multi_key> <period> <c> : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE +<Multi_key> <c> <period> : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE +<dead_caron> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON +<Multi_key> <c> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON +<Multi_key> <less> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON +<Multi_key> <C> <less> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON +<dead_caron> <c> : "č" U010D # LATIN SMALL LETTER C WITH CARON +<Multi_key> <c> <c> : "č" U010D # LATIN SMALL LETTER C WITH CARON +<Multi_key> <less> <c> : "č" U010D # LATIN SMALL LETTER C WITH CARON +<Multi_key> <c> <less> : "č" U010D # LATIN SMALL LETTER C WITH CARON +<dead_caron> <D> : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON +<Multi_key> <c> <D> : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON +<Multi_key> <less> <D> : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON +<Multi_key> <D> <less> : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON +<dead_caron> <d> : "ď" U010F # LATIN SMALL LETTER D WITH CARON +<Multi_key> <c> <d> : "ď" U010F # LATIN SMALL LETTER D WITH CARON +<Multi_key> <less> <d> : "ď" U010F # LATIN SMALL LETTER D WITH CARON +<Multi_key> <d> <less> : "ď" U010F # LATIN SMALL LETTER D WITH CARON +<dead_stroke> <D> : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE +<Multi_key> <slash> <D> : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE +<Multi_key> <KP_Divide> <D> : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE +<Multi_key> <D> <minus> : "Đ" Dstroke # LATIN CAPITAL LETTER D WITH STROKE +<dead_stroke> <d> : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE +<Multi_key> <slash> <d> : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE +<Multi_key> <d> <minus> : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE +<Multi_key> <KP_Divide> <d> : "đ" dstroke # LATIN SMALL LETTER D WITH STROKE +<dead_macron> <E> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<Multi_key> <macron> <E> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<Multi_key> <underscore> <E> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<Multi_key> <E> <underscore> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<Multi_key> <minus> <E> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<Multi_key> <E> <minus> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON +<dead_macron> <e> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<Multi_key> <macron> <e> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<Multi_key> <underscore> <e> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<Multi_key> <e> <underscore> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<Multi_key> <minus> <e> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<Multi_key> <e> <minus> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON +<dead_breve> <E> : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE +<Multi_key> <U> <E> : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE +<Multi_key> <b> <E> : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE +<dead_breve> <e> : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE +<Multi_key> <U> <e> : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE +<Multi_key> <b> <e> : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE +<dead_abovedot> <E> : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE +<Multi_key> <period> <E> : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE +<Multi_key> <E> <period> : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE +<dead_abovedot> <e> : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE +<Multi_key> <period> <e> : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE +<Multi_key> <e> <period> : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE +<dead_ogonek> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK +<Multi_key> <semicolon> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK +<Multi_key> <comma> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK +<Multi_key> <E> <comma> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK +<dead_ogonek> <e> : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK +<Multi_key> <semicolon> <e> : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK +<Multi_key> <comma> <e> : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK +<Multi_key> <e> <comma> : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK +<dead_caron> <E> : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON +<Multi_key> <c> <E> : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON +<Multi_key> <less> <E> : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON +<Multi_key> <E> <less> : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON +<dead_caron> <e> : "ě" U011B # LATIN SMALL LETTER E WITH CARON +<Multi_key> <c> <e> : "ě" U011B # LATIN SMALL LETTER E WITH CARON +<Multi_key> <less> <e> : "ě" U011B # LATIN SMALL LETTER E WITH CARON +<Multi_key> <e> <less> : "ě" U011B # LATIN SMALL LETTER E WITH CARON +<dead_circumflex> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +<Multi_key> <asciicircum> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +<dead_circumflex> <g> : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX +<Multi_key> <asciicircum> <g> : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX +<dead_breve> <G> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <U> <G> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <G> <U> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <b> <G> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <breve> <G> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <G> <breve> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<Multi_key> <G> <parenleft> : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE +<dead_breve> <g> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <U> <g> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <g> <U> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <b> <g> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <breve> <g> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <g> <breve> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<Multi_key> <g> <parenleft> : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE +<dead_abovedot> <G> : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE +<Multi_key> <period> <G> : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE +<Multi_key> <G> <period> : "Ġ" U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE +<dead_abovedot> <g> : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE +<Multi_key> <period> <g> : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE +<Multi_key> <g> <period> : "ġ" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE +<dead_cedilla> <G> : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA +<Multi_key> <comma> <G> : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA +<Multi_key> <G> <comma> : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA +<Multi_key> <cedilla> <G> : "Ģ" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA +<dead_cedilla> <g> : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA +<Multi_key> <comma> <g> : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA +<Multi_key> <g> <comma> : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA +<Multi_key> <cedilla> <g> : "ģ" U0123 # LATIN SMALL LETTER G WITH CEDILLA +<dead_circumflex> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +<Multi_key> <asciicircum> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +<dead_circumflex> <h> : "ĥ" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX +<Multi_key> <asciicircum> <h> : "ĥ" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX +<dead_stroke> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE +<Multi_key> <slash> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE +<Multi_key> <KP_Divide> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE +<dead_stroke> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE +<Multi_key> <slash> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE +<Multi_key> <KP_Divide> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE +<dead_tilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE +<Multi_key> <asciitilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE +<Multi_key> <I> <asciitilde> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE +<dead_tilde> <i> : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE +<Multi_key> <asciitilde> <i> : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE +<Multi_key> <i> <asciitilde> : "ĩ" U0129 # LATIN SMALL LETTER I WITH TILDE +<dead_macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<Multi_key> <macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<Multi_key> <underscore> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<Multi_key> <I> <underscore> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<Multi_key> <minus> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<Multi_key> <I> <minus> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON +<dead_macron> <i> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<Multi_key> <macron> <i> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<Multi_key> <underscore> <i> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<Multi_key> <i> <underscore> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<Multi_key> <minus> <i> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<Multi_key> <i> <minus> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON +<dead_breve> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE +<Multi_key> <U> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE +<Multi_key> <b> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE +<dead_breve> <i> : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE +<Multi_key> <U> <i> : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE +<Multi_key> <b> <i> : "ĭ" U012D # LATIN SMALL LETTER I WITH BREVE +<dead_ogonek> <I> : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK +<Multi_key> <semicolon> <I> : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK +<Multi_key> <comma> <I> : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK +<Multi_key> <I> <comma> : "Į" U012E # LATIN CAPITAL LETTER I WITH OGONEK +<dead_ogonek> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK +<Multi_key> <semicolon> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK +<Multi_key> <i> <semicolon> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK +<Multi_key> <comma> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK +<Multi_key> <i> <comma> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK +<dead_abovedot> <I> : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE +<Multi_key> <period> <I> : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE +<Multi_key> <I> <period> : "İ" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE +<dead_abovedot> <i> : "ı" U0131 # LATIN SMALL LETTER DOTLESS I +<Multi_key> <i> <period> : "ı" U0131 # LATIN SMALL LETTER DOTLESS I +<Multi_key> <period> <i> : "ı" U0131 # LATIN SMALL LETTER DOTLESS I +<dead_circumflex> <J> : "Ĵ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +<Multi_key> <asciicircum> <J> : "Ĵ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +<dead_circumflex> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX +<Multi_key> <asciicircum> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX +<dead_cedilla> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA +<Multi_key> <comma> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA +<Multi_key> <K> <comma> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA +<Multi_key> <cedilla> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA +<dead_cedilla> <k> : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA +<Multi_key> <comma> <k> : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA +<Multi_key> <k> <comma> : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA +<Multi_key> <cedilla> <k> : "ķ" U0137 # LATIN SMALL LETTER K WITH CEDILLA +<Multi_key> <k> <k> : "ĸ" U0138 # LATIN SMALL LETTER KRA +<dead_acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE +<Multi_key> <acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE +<Multi_key> <apostrophe> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE +<Multi_key> <L> <apostrophe> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE +<dead_acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE +<Multi_key> <acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE +<Multi_key> <apostrophe> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE +<Multi_key> <l> <apostrophe> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE +<dead_cedilla> <L> : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA +<Multi_key> <comma> <L> : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA +<Multi_key> <L> <comma> : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA +<Multi_key> <cedilla> <L> : "Ļ" U013B # LATIN CAPITAL LETTER L WITH CEDILLA +<dead_cedilla> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA +<Multi_key> <comma> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA +<Multi_key> <l> <comma> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA +<Multi_key> <cedilla> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA +<dead_caron> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON +<Multi_key> <c> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON +<Multi_key> <less> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON +<Multi_key> <L> <less> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON +<dead_caron> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON +<Multi_key> <c> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON +<Multi_key> <less> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON +<Multi_key> <l> <less> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON +<dead_stroke> <L> : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE +<Multi_key> <slash> <L> : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE +<Multi_key> <L> <slash> : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE +<Multi_key> <KP_Divide> <L> : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE +<dead_stroke> <l> : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE +<Multi_key> <slash> <l> : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE +<Multi_key> <l> <slash> : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE +<Multi_key> <KP_Divide> <l> : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE +<dead_acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE +<Multi_key> <acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE +<Multi_key> <apostrophe> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE +<Multi_key> <N> <apostrophe> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE +<dead_acute> <n> : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE +<Multi_key> <acute> <n> : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE +<Multi_key> <apostrophe> <n> : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE +<Multi_key> <n> <apostrophe> : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE +<dead_cedilla> <N> : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA +<Multi_key> <comma> <N> : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA +<Multi_key> <N> <comma> : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA +<Multi_key> <cedilla> <N> : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA +<dead_cedilla> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA +<Multi_key> <comma> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA +<Multi_key> <n> <comma> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA +<Multi_key> <cedilla> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA +<dead_caron> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON +<Multi_key> <c> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON +<Multi_key> <less> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON +<Multi_key> <N> <less> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON +<dead_caron> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON +<Multi_key> <c> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON +<Multi_key> <less> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON +<Multi_key> <n> <less> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON +<Multi_key> <N> <G> : "Ŋ" U014A # LATIN CAPITAL LETTER ENG +<Multi_key> <n> <g> : "ŋ" U014B # LATIN SMALL LETTER ENG +<dead_macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<Multi_key> <macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<Multi_key> <underscore> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<Multi_key> <O> <underscore> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<Multi_key> <minus> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<Multi_key> <O> <minus> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON +<dead_macron> <o> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<Multi_key> <macron> <o> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<Multi_key> <underscore> <o> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<Multi_key> <o> <underscore> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<Multi_key> <minus> <o> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<Multi_key> <o> <minus> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON +<dead_breve> <O> : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE +<Multi_key> <U> <O> : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE +<Multi_key> <b> <O> : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE +<dead_breve> <o> : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE +<Multi_key> <U> <o> : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE +<Multi_key> <b> <o> : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE +<dead_doubleacute> <O> : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +<Multi_key> <equal> <O> : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +<dead_doubleacute> <o> : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +<Multi_key> <equal> <o> : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +<dead_acute> <R> : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE +<Multi_key> <acute> <R> : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE +<Multi_key> <apostrophe> <R> : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE +<Multi_key> <R> <apostrophe> : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE +<dead_acute> <r> : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE +<Multi_key> <acute> <r> : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE +<Multi_key> <apostrophe> <r> : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE +<Multi_key> <r> <apostrophe> : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE +<dead_cedilla> <R> : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA +<Multi_key> <comma> <R> : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA +<Multi_key> <R> <comma> : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA +<Multi_key> <cedilla> <R> : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA +<dead_cedilla> <r> : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA +<Multi_key> <comma> <r> : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA +<Multi_key> <r> <comma> : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA +<Multi_key> <cedilla> <r> : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA +<dead_caron> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON +<Multi_key> <c> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON +<Multi_key> <less> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON +<Multi_key> <R> <less> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON +<dead_caron> <r> : "ř" U0159 # LATIN SMALL LETTER R WITH CARON +<Multi_key> <c> <r> : "ř" U0159 # LATIN SMALL LETTER R WITH CARON +<Multi_key> <less> <r> : "ř" U0159 # LATIN SMALL LETTER R WITH CARON +<Multi_key> <r> <less> : "ř" U0159 # LATIN SMALL LETTER R WITH CARON +<dead_acute> <S> : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE +<Multi_key> <acute> <S> : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE +<Multi_key> <apostrophe> <S> : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE +<Multi_key> <S> <apostrophe> : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE +<dead_acute> <s> : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE +<Multi_key> <acute> <s> : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE +<Multi_key> <apostrophe> <s> : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE +<Multi_key> <s> <apostrophe> : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE +<dead_circumflex> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +<Multi_key> <asciicircum> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +<dead_circumflex> <s> : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX +<Multi_key> <asciicircum> <s> : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX +<dead_cedilla> <S> : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA +<Multi_key> <comma> <S> : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA +<Multi_key> <S> <comma> : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA +<Multi_key> <cedilla> <S> : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA +<dead_cedilla> <s> : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA +<Multi_key> <comma> <s> : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA +<Multi_key> <s> <comma> : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA +<Multi_key> <cedilla> <s> : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA +<Multi_key> <s> <cedilla> : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA +<dead_caron> <S> : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON +<Multi_key> <c> <S> : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON +<Multi_key> <less> <S> : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON +<Multi_key> <S> <less> : "Š" U0160 # LATIN CAPITAL LETTER S WITH CARON +<dead_caron> <s> : "š" U0161 # LATIN SMALL LETTER S WITH CARON +<Multi_key> <c> <s> : "š" U0161 # LATIN SMALL LETTER S WITH CARON +<Multi_key> <less> <s> : "š" U0161 # LATIN SMALL LETTER S WITH CARON +<Multi_key> <s> <less> : "š" U0161 # LATIN SMALL LETTER S WITH CARON +<dead_cedilla> <T> : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA +<Multi_key> <comma> <T> : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA +<Multi_key> <T> <comma> : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA +<Multi_key> <cedilla> <T> : "Ţ" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA +<dead_cedilla> <t> : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA +<Multi_key> <comma> <t> : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA +<Multi_key> <t> <comma> : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA +<Multi_key> <cedilla> <t> : "ţ" U0163 # LATIN SMALL LETTER T WITH CEDILLA +<dead_caron> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON +<Multi_key> <c> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON +<Multi_key> <less> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON +<Multi_key> <T> <less> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON +<dead_caron> <t> : "ť" U0165 # LATIN SMALL LETTER T WITH CARON +<Multi_key> <c> <t> : "ť" U0165 # LATIN SMALL LETTER T WITH CARON +<Multi_key> <less> <t> : "ť" U0165 # LATIN SMALL LETTER T WITH CARON +<Multi_key> <t> <less> : "ť" U0165 # LATIN SMALL LETTER T WITH CARON +<dead_stroke> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE +<Multi_key> <slash> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE +<Multi_key> <KP_Divide> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE +<Multi_key> <T> <slash> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE +<Multi_key> <T> <minus> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE +<dead_stroke> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE +<Multi_key> <slash> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE +<Multi_key> <KP_Divide> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE +<Multi_key> <t> <slash> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE +<Multi_key> <t> <minus> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE +<dead_tilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE +<Multi_key> <asciitilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE +<Multi_key> <U> <asciitilde> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE +<dead_tilde> <u> : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE +<Multi_key> <asciitilde> <u> : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE +<Multi_key> <u> <asciitilde> : "ũ" U0169 # LATIN SMALL LETTER U WITH TILDE +<dead_macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<Multi_key> <macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<Multi_key> <underscore> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<Multi_key> <U> <underscore> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<Multi_key> <minus> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<Multi_key> <U> <minus> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON +<dead_macron> <u> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<Multi_key> <macron> <u> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<Multi_key> <underscore> <u> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<Multi_key> <u> <underscore> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<Multi_key> <minus> <u> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<Multi_key> <u> <minus> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON +<dead_breve> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE +<Multi_key> <U> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE +<Multi_key> <b> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE +<dead_breve> <u> : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE +<Multi_key> <U> <u> : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE +<Multi_key> <u> <u> : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE +<Multi_key> <b> <u> : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE +<dead_abovering> <U> : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE +<Multi_key> <o> <U> : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE +<Multi_key> <asterisk> <U> : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE +<Multi_key> <U> <asterisk> : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE +<dead_abovering> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE +<Multi_key> <o> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE +<Multi_key> <asterisk> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE +<Multi_key> <u> <asterisk> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE +<dead_doubleacute> <U> : "Ű" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +<Multi_key> <equal> <U> : "Ű" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +<dead_doubleacute> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +<Multi_key> <equal> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +<dead_ogonek> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK +<Multi_key> <semicolon> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK +<Multi_key> <comma> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK +<Multi_key> <U> <comma> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK +<dead_ogonek> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK +<Multi_key> <semicolon> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK +<Multi_key> <comma> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK +<Multi_key> <u> <comma> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK +<dead_circumflex> <W> : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +<Multi_key> <asciicircum> <W> : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +<Multi_key> <W> <asciicircum> : "Ŵ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +<dead_circumflex> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX +<Multi_key> <asciicircum> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX +<Multi_key> <w> <asciicircum> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX +<dead_circumflex> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +<Multi_key> <asciicircum> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +<Multi_key> <Y> <asciicircum> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +<dead_circumflex> <y> : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX +<Multi_key> <asciicircum> <y> : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX +<Multi_key> <y> <asciicircum> : "ŷ" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX +<dead_diaeresis> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS +<Multi_key> <quotedbl> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS +<Multi_key> <Y> <quotedbl> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS +<Multi_key> <diaeresis> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS +<Multi_key> <Y> <diaeresis> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS +<dead_acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE +<Multi_key> <acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE +<Multi_key> <apostrophe> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE +<Multi_key> <Z> <apostrophe> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE +<dead_acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE +<Multi_key> <acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE +<Multi_key> <apostrophe> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE +<Multi_key> <z> <apostrophe> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE +<dead_abovedot> <Z> : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE +<Multi_key> <period> <Z> : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE +<Multi_key> <Z> <period> : "Ż" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE +<dead_abovedot> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE +<Multi_key> <period> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE +<Multi_key> <z> <period> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE +<dead_caron> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON +<Multi_key> <c> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON +<Multi_key> <v> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON +<Multi_key> <less> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON +<Multi_key> <Z> <less> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON +<dead_caron> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON +<Multi_key> <c> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON +<Multi_key> <v> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON +<Multi_key> <less> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON +<Multi_key> <z> <less> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON +<dead_stroke> <b> : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE +<Multi_key> <slash> <b> : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE +<Multi_key> <KP_Divide> <b> : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE +<dead_stroke> <I> : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE +<Multi_key> <slash> <I> : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE +<Multi_key> <KP_Divide> <I> : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE +<dead_horn> <O> : "Ơ" U01A0 # LATIN CAPITAL LETTER O WITH HORN +<Multi_key> <plus> <O> : "Ơ" U01A0 # LATIN CAPITAL LETTER O WITH HORN +<dead_horn> <o> : "ơ" U01A1 # LATIN SMALL LETTER O WITH HORN +<Multi_key> <plus> <o> : "ơ" U01A1 # LATIN SMALL LETTER O WITH HORN +<dead_horn> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN +<Multi_key> <plus> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN +<dead_horn> <u> : "ư" U01B0 # LATIN SMALL LETTER U WITH HORN +<Multi_key> <plus> <u> : "ư" U01B0 # LATIN SMALL LETTER U WITH HORN +<dead_stroke> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE +<Multi_key> <slash> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE +<Multi_key> <KP_Divide> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE +<dead_stroke> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE +<Multi_key> <slash> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE +<Multi_key> <KP_Divide> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE +<dead_caron> <A> : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON +<Multi_key> <c> <A> : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON +<dead_caron> <a> : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON +<Multi_key> <c> <a> : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON +<dead_caron> <I> : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON +<Multi_key> <c> <I> : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON +<dead_caron> <i> : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON +<Multi_key> <c> <i> : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON +<dead_caron> <O> : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON +<Multi_key> <c> <O> : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON +<dead_caron> <o> : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON +<Multi_key> <c> <o> : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON +<dead_caron> <U> : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON +<Multi_key> <c> <U> : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON +<dead_caron> <u> : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON +<Multi_key> <c> <u> : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON +<dead_macron> <Udiaeresis> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <Udiaeresis> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <Udiaeresis> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <U> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <udiaeresis> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <udiaeresis> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <udiaeresis> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <u> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<dead_acute> <Udiaeresis> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <Udiaeresis> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <Udiaeresis> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <dead_diaeresis> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <Multi_key> <quotedbl> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <dead_diaeresis> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <quotedbl> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <dead_diaeresis> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <quotedbl> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <Multi_key> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_caron> <Udiaeresis> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <Udiaeresis> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <dead_diaeresis> <U> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <Multi_key> <quotedbl> <U> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <dead_diaeresis> <U> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <quotedbl> <U> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <udiaeresis> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <udiaeresis> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <dead_diaeresis> <u> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <Multi_key> <quotedbl> <u> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <dead_diaeresis> <u> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<Multi_key> <c> <quotedbl> <u> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_grave> <Udiaeresis> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <Udiaeresis> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <dead_diaeresis> <U> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <Multi_key> <quotedbl> <U> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <dead_diaeresis> <U> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <quotedbl> <U> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <Multi_key> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<Multi_key> <grave> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_macron> <Adiaeresis> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <Adiaeresis> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <Adiaeresis> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <adiaeresis> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <adiaeresis> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <adiaeresis> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<dead_macron> <U0226> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <U0226> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <U0226> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <dead_abovedot> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <Multi_key> <period> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <dead_abovedot> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <period> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <dead_abovedot> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <period> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <U0227> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <U0227> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <U0227> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <dead_abovedot> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <Multi_key> <period> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <dead_abovedot> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <period> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <dead_abovedot> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <period> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<dead_macron> <AE> : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON +<Multi_key> <macron> <AE> : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON +<Multi_key> <underscore> <AE> : "Ǣ" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON +<dead_macron> <ae> : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON +<Multi_key> <macron> <ae> : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON +<Multi_key> <underscore> <ae> : "ǣ" U01E3 # LATIN SMALL LETTER AE WITH MACRON +<dead_stroke> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE +<Multi_key> <slash> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE +<Multi_key> <KP_Divide> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE +<dead_stroke> <g> : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE +<Multi_key> <slash> <g> : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE +<Multi_key> <KP_Divide> <g> : "ǥ" U01E5 # LATIN SMALL LETTER G WITH STROKE +<dead_caron> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON +<Multi_key> <c> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON +<dead_caron> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON +<Multi_key> <c> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON +<dead_caron> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON +<Multi_key> <c> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON +<dead_caron> <k> : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON +<Multi_key> <c> <k> : "ǩ" U01E9 # LATIN SMALL LETTER K WITH CARON +<dead_ogonek> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK +<Multi_key> <semicolon> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK +<dead_ogonek> <o> : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK +<Multi_key> <semicolon> <o> : "ǫ" U01EB # LATIN SMALL LETTER O WITH OGONEK +<dead_macron> <U01EA> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <U01EA> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <U01EA> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<dead_macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<dead_macron> <Multi_key> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<dead_macron> <U01EB> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <U01EB> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <U01EB> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<dead_macron> <dead_ogonek> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<dead_macron> <Multi_key> <semicolon> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <dead_ogonek> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <macron> <semicolon> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <dead_ogonek> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<Multi_key> <underscore> <semicolon> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<dead_caron> <EZH> : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON +<Multi_key> <c> <EZH> : "Ǯ" U01EE # LATIN CAPITAL LETTER EZH WITH CARON +<dead_caron> <ezh> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON +<Multi_key> <c> <ezh> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON +<dead_caron> <j> : "ǰ" U01F0 # LATIN SMALL LETTER J WITH CARON +<Multi_key> <c> <j> : "ǰ" U01F0 # LATIN SMALL LETTER J WITH CARON +<dead_acute> <G> : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE +<Multi_key> <acute> <G> : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE +<Multi_key> <apostrophe> <G> : "Ǵ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE +<dead_acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE +<Multi_key> <acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE +<Multi_key> <apostrophe> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE +<dead_grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE +<Multi_key> <grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE +<dead_grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE +<Multi_key> <grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE +<dead_acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <apostrophe> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <Multi_key> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <apostrophe> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <asterisk> <apostrophe> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <aring> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <acute> <aring> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <apostrophe> <aring> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <dead_abovering> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <Multi_key> <o> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <acute> <dead_abovering> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <apostrophe> <dead_abovering> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<Multi_key> <asterisk> <apostrophe> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<dead_acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE +<Multi_key> <acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE +<Multi_key> <apostrophe> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE +<dead_acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE +<Multi_key> <acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE +<Multi_key> <apostrophe> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE +<dead_acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_acute> <dead_stroke> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_acute> <Multi_key> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_acute> <Multi_key> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_stroke> <dead_acute> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_acute> <oslash> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <oslash> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <oslash> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_acute> <dead_stroke> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_acute> <Multi_key> <slash> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <slash> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <slash> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_acute> <Multi_key> <KP_Divide> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <acute> <KP_Divide> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<Multi_key> <apostrophe> <KP_Divide> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_stroke> <dead_acute> <o> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_doublegrave> <A> : "Ȁ" U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE +<dead_doublegrave> <a> : "ȁ" U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE +<dead_invertedbreve> <A> : "Ȃ" U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE +<dead_invertedbreve> <a> : "ȃ" U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE +<dead_doublegrave> <E> : "Ȅ" U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE +<dead_doublegrave> <e> : "ȅ" U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE +<dead_invertedbreve> <E> : "Ȇ" U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE +<dead_invertedbreve> <e> : "ȇ" U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE +<dead_doublegrave> <I> : "Ȉ" U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE +<dead_doublegrave> <i> : "ȉ" U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE +<dead_invertedbreve> <I> : "Ȋ" U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE +<dead_invertedbreve> <i> : "ȋ" U020B # LATIN SMALL LETTER I WITH INVERTED BREVE +<dead_doublegrave> <O> : "Ȍ" U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE +<dead_doublegrave> <o> : "ȍ" U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE +<dead_invertedbreve> <O> : "Ȏ" U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE +<dead_invertedbreve> <o> : "ȏ" U020F # LATIN SMALL LETTER O WITH INVERTED BREVE +<dead_doublegrave> <R> : "Ȑ" U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE +<dead_doublegrave> <r> : "ȑ" U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE +<dead_invertedbreve> <R> : "Ȓ" U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE +<dead_invertedbreve> <r> : "ȓ" U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE +<dead_doublegrave> <U> : "Ȕ" U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE +<dead_doublegrave> <u> : "ȕ" U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE +<dead_invertedbreve> <U> : "Ȗ" U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE +<dead_invertedbreve> <u> : "ȗ" U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE +<dead_caron> <H> : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON +<Multi_key> <c> <H> : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON +<dead_caron> <h> : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON +<Multi_key> <c> <h> : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON +<dead_abovedot> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE +<Multi_key> <period> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE +<dead_abovedot> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE +<Multi_key> <period> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE +<dead_cedilla> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA +<Multi_key> <cedilla> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA +<dead_cedilla> <e> : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA +<Multi_key> <cedilla> <e> : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA +<dead_macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <odiaeresis> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <odiaeresis> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <odiaeresis> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <dead_diaeresis> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <Multi_key> <quotedbl> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <dead_diaeresis> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <macron> <quotedbl> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <dead_diaeresis> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<Multi_key> <underscore> <quotedbl> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<dead_macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<dead_macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<dead_macron> <Multi_key> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<dead_macron> <otilde> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <otilde> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <otilde> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<dead_macron> <dead_tilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<dead_macron> <Multi_key> <asciitilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <dead_tilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <macron> <asciitilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <dead_tilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<Multi_key> <underscore> <asciitilde> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<dead_abovedot> <O> : "Ȯ" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE +<Multi_key> <period> <O> : "Ȯ" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE +<dead_abovedot> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE +<Multi_key> <period> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE +<dead_macron> <U022E> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <U022E> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <U022E> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <dead_abovedot> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <Multi_key> <period> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <dead_abovedot> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <period> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <dead_abovedot> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <period> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <U022F> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <U022F> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <U022F> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <Multi_key> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <macron> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<Multi_key> <underscore> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<dead_macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON +<Multi_key> <macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON +<Multi_key> <underscore> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON +<dead_macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON +<Multi_key> <macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON +<Multi_key> <underscore> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON +<Multi_key> <e> <e> : "ə" U0259 # LATIN SMALL LETTER SCHWA +<dead_stroke> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE +<Multi_key> <slash> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE +<Multi_key> <KP_Divide> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE +<Multi_key> <slash> <U0294> : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE +<Multi_key> <KP_Divide> <U0294> : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE +<dead_circumflex> <Multi_key> <underscore> <h> : "ʰ" U02B0 # MODIFIER LETTER SMALL H +<Multi_key> <asciicircum> <underscore> <h> : "ʰ" U02B0 # MODIFIER LETTER SMALL H +<dead_circumflex> <Multi_key> <underbar> <h> : "ʰ" U02B0 # MODIFIER LETTER SMALL H +<Multi_key> <asciicircum> <underbar> <h> : "ʰ" U02B0 # MODIFIER LETTER SMALL H +<dead_circumflex> <Multi_key> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK +<Multi_key> <asciicircum> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK +<dead_circumflex> <Multi_key> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK +<Multi_key> <asciicircum> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK +<dead_circumflex> <Multi_key> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J +<Multi_key> <asciicircum> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J +<dead_circumflex> <Multi_key> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J +<Multi_key> <asciicircum> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J +<dead_circumflex> <Multi_key> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R +<Multi_key> <asciicircum> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R +<dead_circumflex> <Multi_key> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R +<Multi_key> <asciicircum> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R +<dead_circumflex> <Multi_key> <underscore> <U0279> : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R +<Multi_key> <asciicircum> <underscore> <U0279> : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R +<dead_circumflex> <Multi_key> <underbar> <U0279> : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R +<Multi_key> <asciicircum> <underbar> <U0279> : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R +<dead_circumflex> <Multi_key> <underscore> <U027B> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK +<Multi_key> <asciicircum> <underscore> <U027B> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK +<dead_circumflex> <Multi_key> <underbar> <U027B> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK +<Multi_key> <asciicircum> <underbar> <U027B> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK +<dead_circumflex> <Multi_key> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R +<Multi_key> <asciicircum> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R +<dead_circumflex> <Multi_key> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R +<Multi_key> <asciicircum> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R +<dead_circumflex> <Multi_key> <underscore> <w> : "ʷ" U02B7 # MODIFIER LETTER SMALL W +<Multi_key> <asciicircum> <underscore> <w> : "ʷ" U02B7 # MODIFIER LETTER SMALL W +<dead_circumflex> <Multi_key> <underbar> <w> : "ʷ" U02B7 # MODIFIER LETTER SMALL W +<Multi_key> <asciicircum> <underbar> <w> : "ʷ" U02B7 # MODIFIER LETTER SMALL W +<dead_circumflex> <Multi_key> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y +<Multi_key> <asciicircum> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y +<dead_circumflex> <Multi_key> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y +<Multi_key> <asciicircum> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y +<dead_circumflex> <Multi_key> <underscore> <U0263> : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA +<Multi_key> <asciicircum> <underscore> <U0263> : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA +<dead_circumflex> <Multi_key> <underbar> <U0263> : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA +<Multi_key> <asciicircum> <underbar> <U0263> : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA +<dead_circumflex> <Multi_key> <underscore> <l> : "ˡ" U02E1 # MODIFIER LETTER SMALL L +<Multi_key> <asciicircum> <underscore> <l> : "ˡ" U02E1 # MODIFIER LETTER SMALL L +<dead_circumflex> <Multi_key> <underbar> <l> : "ˡ" U02E1 # MODIFIER LETTER SMALL L +<Multi_key> <asciicircum> <underbar> <l> : "ˡ" U02E1 # MODIFIER LETTER SMALL L +<dead_circumflex> <Multi_key> <underscore> <s> : "ˢ" U02E2 # MODIFIER LETTER SMALL S +<Multi_key> <asciicircum> <underscore> <s> : "ˢ" U02E2 # MODIFIER LETTER SMALL S +<dead_circumflex> <Multi_key> <underbar> <s> : "ˢ" U02E2 # MODIFIER LETTER SMALL S +<Multi_key> <asciicircum> <underbar> <s> : "ˢ" U02E2 # MODIFIER LETTER SMALL S +<dead_circumflex> <Multi_key> <underscore> <x> : "ˣ" U02E3 # MODIFIER LETTER SMALL X +<Multi_key> <asciicircum> <underscore> <x> : "ˣ" U02E3 # MODIFIER LETTER SMALL X +<dead_circumflex> <Multi_key> <underbar> <x> : "ˣ" U02E3 # MODIFIER LETTER SMALL X +<Multi_key> <asciicircum> <underbar> <x> : "ˣ" U02E3 # MODIFIER LETTER SMALL X +<dead_circumflex> <Multi_key> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +<Multi_key> <asciicircum> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +<dead_circumflex> <Multi_key> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +<Multi_key> <asciicircum> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +<dead_diaeresis> <acute> : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS +<dead_diaeresis> <apostrophe> : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS +<Multi_key> <quotedbl> <dead_acute> : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS +<Multi_key> <quotedbl> <acute> : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS +<Multi_key> <quotedbl> <apostrophe> : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS +<dead_acute> <dead_diaeresis> <space> : "΅" U0385 # GREEK DIALYTIKA TONOS +<dead_diaeresis> <dead_acute> <space> : "΅" U0385 # GREEK DIALYTIKA TONOS +<Multi_key> <diaeresis> <dead_acute> : "΅" U0385 # GREEK DIALYTIKA TONOS +<Multi_key> <diaeresis> <acute> : "΅" U0385 # GREEK DIALYTIKA TONOS +<Multi_key> <diaeresis> <apostrophe> : "΅" U0385 # GREEK DIALYTIKA TONOS +<Multi_key> <apostrophe> <quotedbl> <space> : "΅" U0385 # GREEK DIALYTIKA TONOS +<dead_acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS +<Multi_key> <acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS +<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS +<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS +<dead_acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS +<Multi_key> <acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS +<Multi_key> <apostrophe> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS +<Multi_key> <Greek_EPSILON> <apostrophe> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS +<dead_acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS +<Multi_key> <acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS +<Multi_key> <apostrophe> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS +<Multi_key> <Greek_ETA> <apostrophe> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS +<dead_acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS +<Multi_key> <acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS +<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS +<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS +<dead_acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS +<Multi_key> <acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS +<Multi_key> <apostrophe> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS +<Multi_key> <Greek_OMICRON> <apostrophe> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS +<dead_acute> <Greek_UPSILON> : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS +<Multi_key> <acute> <Greek_UPSILON> : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS +<Multi_key> <apostrophe> <Greek_UPSILON> : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS +<Multi_key> <Greek_UPSILON> <apostrophe> : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS +<dead_acute> <Greek_OMEGA> : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS +<Multi_key> <acute> <Greek_OMEGA> : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS +<Multi_key> <apostrophe> <Greek_OMEGA> : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS +<Multi_key> <Greek_OMEGA> <apostrophe> : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS +<dead_acute> <Greek_iotadieresis> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <Greek_iotadieresis> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <Greek_iotadieresis> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<dead_acute> <dead_diaeresis> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<dead_diaeresis> <dead_acute> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<dead_acute> <Multi_key> <quotedbl> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <dead_diaeresis> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <quotedbl> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <dead_diaeresis> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<Greek_accentdieresis> <Greek_iota> : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +<dead_diaeresis> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +<dead_diaeresis> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +<dead_acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS +<Multi_key> <acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS +<Multi_key> <apostrophe> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS +<Multi_key> <Greek_alpha> <apostrophe> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS +<dead_acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS +<Multi_key> <acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS +<Multi_key> <apostrophe> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS +<Multi_key> <Greek_epsilon> <apostrophe> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS +<dead_acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS +<Multi_key> <acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS +<Multi_key> <apostrophe> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS +<Multi_key> <Greek_eta> <apostrophe> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS +<dead_acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS +<Multi_key> <acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS +<Multi_key> <apostrophe> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS +<dead_acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<dead_acute> <Multi_key> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <acute> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<Greek_accentdieresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +<dead_diaeresis> <Greek_iota> : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA +<Multi_key> <quotedbl> <Greek_iota> : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA +<Multi_key> <Greek_iota> <quotedbl> : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA +<dead_diaeresis> <Greek_upsilon> : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +<Multi_key> <quotedbl> <Greek_upsilon> : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +<Multi_key> <Greek_upsilon> <quotedbl> : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +<dead_acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS +<Multi_key> <acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS +<Multi_key> <apostrophe> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS +<Multi_key> <Greek_omicron> <apostrophe> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS +<dead_acute> <Greek_upsilon> : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS +<Multi_key> <acute> <Greek_upsilon> : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS +<Multi_key> <apostrophe> <Greek_upsilon> : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS +<Multi_key> <Greek_upsilon> <apostrophe> : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS +<dead_acute> <Greek_omega> : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS +<Multi_key> <acute> <Greek_omega> : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS +<Multi_key> <apostrophe> <Greek_omega> : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS +<Multi_key> <Greek_omega> <apostrophe> : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS +<Multi_key> <quotedbl> <U03D2> : "ϔ" U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +<dead_grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE +<Multi_key> <grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE +<dead_diaeresis> <Cyrillic_IE> : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO +<Multi_key> <quotedbl> <Cyrillic_IE> : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO +<dead_acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE +<Multi_key> <acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE +<Multi_key> <apostrophe> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE +<dead_diaeresis> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI +<Multi_key> <quotedbl> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI +<dead_acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE +<Multi_key> <acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE +<Multi_key> <apostrophe> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE +<dead_grave> <Cyrillic_I> : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE +<Multi_key> <grave> <Cyrillic_I> : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE +<dead_breve> <Cyrillic_U> : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U +<Multi_key> <U> <Cyrillic_U> : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U +<Multi_key> <b> <Cyrillic_U> : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U +<dead_breve> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I +<Multi_key> <U> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I +<Multi_key> <b> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I +<dead_breve> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I +<Multi_key> <U> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I +<Multi_key> <b> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I +<dead_grave> <Cyrillic_ie> : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE +<Multi_key> <grave> <Cyrillic_ie> : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE +<dead_diaeresis> <Cyrillic_ie> : "ё" U0451 # CYRILLIC SMALL LETTER IO +<Multi_key> <quotedbl> <Cyrillic_ie> : "ё" U0451 # CYRILLIC SMALL LETTER IO +<dead_acute> <Cyrillic_ghe> : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE +<Multi_key> <acute> <Cyrillic_ghe> : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE +<Multi_key> <apostrophe> <Cyrillic_ghe> : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE +<dead_diaeresis> <Ukrainian_i> : "ї" U0457 # CYRILLIC SMALL LETTER YI +<Multi_key> <quotedbl> <Ukrainian_i> : "ї" U0457 # CYRILLIC SMALL LETTER YI +<dead_acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE +<Multi_key> <acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE +<Multi_key> <apostrophe> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE +<dead_grave> <Cyrillic_i> : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE +<Multi_key> <grave> <Cyrillic_i> : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE +<dead_breve> <Cyrillic_u> : "ў" U045E # CYRILLIC SMALL LETTER SHORT U +<Multi_key> <U> <Cyrillic_u> : "ў" U045E # CYRILLIC SMALL LETTER SHORT U +<Multi_key> <b> <Cyrillic_u> : "ў" U045E # CYRILLIC SMALL LETTER SHORT U +<dead_doublegrave> <U0474> : "Ѷ" U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +<dead_doublegrave> <U0475> : "ѷ" U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +<Multi_key> <slash> <Cyrillic_GHE> : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE +<Multi_key> <KP_Divide> <Cyrillic_GHE> : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE +<Multi_key> <slash> <Cyrillic_ghe> : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE +<Multi_key> <KP_Divide> <Cyrillic_ghe> : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE +<Multi_key> <slash> <Cyrillic_KA> : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE +<Multi_key> <KP_Divide> <Cyrillic_KA> : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE +<Multi_key> <slash> <Cyrillic_ka> : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE +<Multi_key> <KP_Divide> <Cyrillic_ka> : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE +<Multi_key> <slash> <U04AE> : "Ұ" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +<Multi_key> <KP_Divide> <U04AE> : "Ұ" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +<Multi_key> <slash> <U04AF> : "ұ" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +<Multi_key> <KP_Divide> <U04AF> : "ұ" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +<dead_breve> <Cyrillic_ZHE> : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +<Multi_key> <U> <Cyrillic_ZHE> : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +<Multi_key> <b> <Cyrillic_ZHE> : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +<dead_breve> <Cyrillic_zhe> : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE +<Multi_key> <U> <Cyrillic_zhe> : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE +<Multi_key> <b> <Cyrillic_zhe> : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE +<dead_breve> <Cyrillic_A> : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE +<Multi_key> <U> <Cyrillic_A> : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE +<Multi_key> <b> <Cyrillic_A> : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE +<dead_breve> <Cyrillic_a> : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE +<Multi_key> <U> <Cyrillic_a> : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE +<Multi_key> <b> <Cyrillic_a> : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE +<dead_diaeresis> <Cyrillic_A> : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_A> : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +<dead_diaeresis> <Cyrillic_a> : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_a> : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS +<dead_breve> <Cyrillic_IE> : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE +<Multi_key> <U> <Cyrillic_IE> : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE +<Multi_key> <b> <Cyrillic_IE> : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE +<dead_breve> <Cyrillic_ie> : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE +<Multi_key> <U> <Cyrillic_ie> : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE +<Multi_key> <b> <Cyrillic_ie> : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE +<dead_diaeresis> <U04D8> : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +<Multi_key> <quotedbl> <U04D8> : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +<dead_diaeresis> <U04D9> : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS +<Multi_key> <quotedbl> <U04D9> : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS +<dead_diaeresis> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +<dead_diaeresis> <Cyrillic_zhe> : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_zhe> : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS +<dead_diaeresis> <Cyrillic_ZE> : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_ZE> : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +<dead_diaeresis> <Cyrillic_ze> : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_ze> : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS +<dead_macron> <Cyrillic_I> : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON +<Multi_key> <macron> <Cyrillic_I> : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON +<Multi_key> <underscore> <Cyrillic_I> : "Ӣ" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON +<dead_macron> <Cyrillic_i> : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON +<Multi_key> <macron> <Cyrillic_i> : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON +<Multi_key> <underscore> <Cyrillic_i> : "ӣ" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON +<dead_diaeresis> <Cyrillic_I> : "Ӥ" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_I> : "Ӥ" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +<dead_diaeresis> <Cyrillic_i> : "ӥ" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_i> : "ӥ" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS +<dead_diaeresis> <Cyrillic_O> : "Ӧ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_O> : "Ӧ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +<dead_diaeresis> <Cyrillic_o> : "ӧ" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_o> : "ӧ" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS +<dead_diaeresis> <U04E8> : "Ӫ" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +<Multi_key> <quotedbl> <U04E8> : "Ӫ" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +<dead_diaeresis> <U04E9> : "ӫ" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS +<Multi_key> <quotedbl> <U04E9> : "ӫ" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS +<dead_diaeresis> <Cyrillic_E> : "Ӭ" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_E> : "Ӭ" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +<dead_diaeresis> <Cyrillic_e> : "ӭ" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_e> : "ӭ" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS +<dead_macron> <Cyrillic_U> : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON +<Multi_key> <macron> <Cyrillic_U> : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON +<Multi_key> <underscore> <Cyrillic_U> : "Ӯ" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON +<dead_macron> <Cyrillic_u> : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON +<Multi_key> <macron> <Cyrillic_u> : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON +<Multi_key> <underscore> <Cyrillic_u> : "ӯ" U04EF # CYRILLIC SMALL LETTER U WITH MACRON +<dead_diaeresis> <Cyrillic_U> : "Ӱ" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_U> : "Ӱ" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +<dead_diaeresis> <Cyrillic_u> : "ӱ" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_u> : "ӱ" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS +<dead_doubleacute> <Cyrillic_U> : "Ӳ" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +<Multi_key> <equal> <Cyrillic_U> : "Ӳ" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +<dead_doubleacute> <Cyrillic_u> : "ӳ" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +<Multi_key> <equal> <Cyrillic_u> : "ӳ" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +<dead_diaeresis> <Cyrillic_CHE> : "Ӵ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_CHE> : "Ӵ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +<dead_diaeresis> <Cyrillic_che> : "ӵ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_che> : "ӵ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS +<dead_diaeresis> <Cyrillic_YERU> : "Ӹ" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_YERU> : "Ӹ" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +<dead_diaeresis> <Cyrillic_yeru> : "ӹ" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS +<Multi_key> <quotedbl> <Cyrillic_yeru> : "ӹ" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS +<Multi_key> <U0653> <Arabic_alef> : "آ" U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE +<Multi_key> <U0654> <Arabic_alef> : "أ" U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE +<Multi_key> <U0654> <Arabic_waw> : "ؤ" U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE +<Multi_key> <U0655> <Arabic_alef> : "إ" U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW +<Multi_key> <U0654> <Arabic_yeh> : "ئ" U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE +<Multi_key> <U0654> <U06D5> : "ۀ" U06C0 # ARABIC LETTER HEH WITH YEH ABOVE +<Multi_key> <U0654> <U06C1> : "ۂ" U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +<Multi_key> <U0654> <U06D2> : "ۓ" U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +<Multi_key> <U093C> <U0928> : "ऩ" U0929 # DEVANAGARI LETTER NNNA +<Multi_key> <U093C> <U0930> : "ऱ" U0931 # DEVANAGARI LETTER RRA +<Multi_key> <U093C> <U0933> : "ऴ" U0934 # DEVANAGARI LETTER LLLA +<Multi_key> <U093C> <U0915> : "क़" U0958 # DEVANAGARI LETTER QA +<Multi_key> <U093C> <U0916> : "ख़" U0959 # DEVANAGARI LETTER KHHA +<Multi_key> <U093C> <U0917> : "ग़" U095A # DEVANAGARI LETTER GHHA +<Multi_key> <U093C> <U091C> : "ज़" U095B # DEVANAGARI LETTER ZA +<Multi_key> <U093C> <U0921> : "ड़" U095C # DEVANAGARI LETTER DDDHA +<Multi_key> <U093C> <U0922> : "ढ़" U095D # DEVANAGARI LETTER RHA +<Multi_key> <U093C> <U092B> : "फ़" U095E # DEVANAGARI LETTER FA +<Multi_key> <U093C> <U092F> : "य़" U095F # DEVANAGARI LETTER YYA +<Multi_key> <U09C7> <U09BE> : "ো" U09CB # BENGALI VOWEL SIGN O +<Multi_key> <U09C7> <U09D7> : "ৌ" U09CC # BENGALI VOWEL SIGN AU +<Multi_key> <U09BC> <U09A1> : "ড়" U09DC # BENGALI LETTER RRA +<Multi_key> <U09BC> <U09A2> : "ঢ়" U09DD # BENGALI LETTER RHA +<Multi_key> <U09BC> <U09AF> : "য়" U09DF # BENGALI LETTER YYA +<Multi_key> <U0A3C> <U0A32> : "ਲ਼" U0A33 # GURMUKHI LETTER LLA +<Multi_key> <U0A3C> <U0A38> : "ਸ਼" U0A36 # GURMUKHI LETTER SHA +<Multi_key> <U0A3C> <U0A16> : "ਖ਼" U0A59 # GURMUKHI LETTER KHHA +<Multi_key> <U0A3C> <U0A17> : "ਗ਼" U0A5A # GURMUKHI LETTER GHHA +<Multi_key> <U0A3C> <U0A1C> : "ਜ਼" U0A5B # GURMUKHI LETTER ZA +<Multi_key> <U0A3C> <U0A2B> : "ਫ਼" U0A5E # GURMUKHI LETTER FA +<Multi_key> <U0B47> <U0B56> : "ୈ" U0B48 # ORIYA VOWEL SIGN AI +<Multi_key> <U0B47> <U0B3E> : "ୋ" U0B4B # ORIYA VOWEL SIGN O +<Multi_key> <U0B47> <U0B57> : "ୌ" U0B4C # ORIYA VOWEL SIGN AU +<Multi_key> <U0B3C> <U0B21> : "ଡ଼" U0B5C # ORIYA LETTER RRA +<Multi_key> <U0B3C> <U0B22> : "ଢ଼" U0B5D # ORIYA LETTER RHA +<Multi_key> <U0BD7> <U0B92> : "ஔ" U0B94 # TAMIL LETTER AU +<Multi_key> <U0BC6> <U0BBE> : "ொ" U0BCA # TAMIL VOWEL SIGN O +<Multi_key> <U0BC7> <U0BBE> : "ோ" U0BCB # TAMIL VOWEL SIGN OO +<Multi_key> <U0BC6> <U0BD7> : "ௌ" U0BCC # TAMIL VOWEL SIGN AU +<Multi_key> <U0C46> <U0C56> : "ై" U0C48 # TELUGU VOWEL SIGN AI +<Multi_key> <U0CBF> <U0CD5> : "ೀ" U0CC0 # KANNADA VOWEL SIGN II +<Multi_key> <U0CC6> <U0CD5> : "ೇ" U0CC7 # KANNADA VOWEL SIGN EE +<Multi_key> <U0CC6> <U0CD6> : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI +<Multi_key> <U0CC6> <U0CC2> : "ೊ" U0CCA # KANNADA VOWEL SIGN O +<Multi_key> <U0CCA> <U0CD5> : "ೋ" U0CCB # KANNADA VOWEL SIGN OO + +<Multi_key> <U0D46> <U0D3E> : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O +<Multi_key> <U0D47> <U0D3E> : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO +<Multi_key> <U0D46> <U0D57> : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU +<Multi_key> <U0DD9> <U0DCA> : "ේ" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA +<Multi_key> <U0DD9> <U0DCF> : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA +<Multi_key> <U0DDC> <U0DCA> : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA + +<Multi_key> <U0DD9> <U0DDF> : "ෞ" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +<Multi_key> <U0FB7> <U0F42> : "གྷ" U0F43 # TIBETAN LETTER GHA +<Multi_key> <U0FB7> <U0F4C> : "ཌྷ" U0F4D # TIBETAN LETTER DDHA +<Multi_key> <U0FB7> <U0F51> : "དྷ" U0F52 # TIBETAN LETTER DHA +<Multi_key> <U0FB7> <U0F56> : "བྷ" U0F57 # TIBETAN LETTER BHA +<Multi_key> <U0FB7> <U0F5B> : "ཛྷ" U0F5C # TIBETAN LETTER DZHA +<Multi_key> <U0FB5> <U0F40> : "ཀྵ" U0F69 # TIBETAN LETTER KSSA +<Multi_key> <U0F71> <U0F72> : "ཱི" U0F73 # TIBETAN VOWEL SIGN II +<Multi_key> <U0F71> <U0F74> : "ཱུ" U0F75 # TIBETAN VOWEL SIGN UU +<Multi_key> <U0FB2> <U0F80> : "ྲྀ" U0F76 # TIBETAN VOWEL SIGN VOCALIC R +<Multi_key> <U0FB3> <U0F80> : "ླྀ" U0F78 # TIBETAN VOWEL SIGN VOCALIC L +<Multi_key> <U0F71> <U0F80> : "ཱྀ" U0F81 # TIBETAN VOWEL SIGN REVERSED II +<Multi_key> <U0F92> <U0FB7> : "ྒྷ" U0F93 # TIBETAN SUBJOINED LETTER GHA +<Multi_key> <U0F9C> <U0FB7> : "ྜྷ" U0F9D # TIBETAN SUBJOINED LETTER DDHA +<Multi_key> <U0FA1> <U0FB7> : "ྡྷ" U0FA2 # TIBETAN SUBJOINED LETTER DHA +<Multi_key> <U0FA6> <U0FB7> : "ྦྷ" U0FA7 # TIBETAN SUBJOINED LETTER BHA +<Multi_key> <U0FAB> <U0FB7> : "ྫྷ" U0FAC # TIBETAN SUBJOINED LETTER DZHA +<Multi_key> <U0F90> <U0FB5> : "ྐྵ" U0FB9 # TIBETAN SUBJOINED LETTER KSSA +<Multi_key> <U102E> <U1025> : "ဦ" U1026 # MYANMAR LETTER UU +<dead_belowring> <A> : "Ḁ" U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW +<dead_belowring> <a> : "ḁ" U1E01 # LATIN SMALL LETTER A WITH RING BELOW +<dead_abovedot> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE +<Multi_key> <period> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE +<Multi_key> <B> <period> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE +<dead_abovedot> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE +<Multi_key> <period> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE +<Multi_key> <b> <period> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE +<dead_belowdot> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW +<Multi_key> <exclam> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW +<dead_belowdot> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW +<Multi_key> <exclam> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW +<dead_belowmacron> <B> : "Ḇ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW +<dead_belowmacron> <b> : "ḇ" U1E07 # LATIN SMALL LETTER B WITH LINE BELOW +<dead_acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <Multi_key> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <Multi_key> <cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <Multi_key> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_acute> <Multi_key> <cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <acute> <cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<Multi_key> <apostrophe> <cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_abovedot> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE +<Multi_key> <period> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE +<Multi_key> <D> <period> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE +<dead_abovedot> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE +<Multi_key> <period> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE +<Multi_key> <d> <period> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE +<dead_belowdot> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW +<Multi_key> <exclam> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW +<dead_belowdot> <d> : "ḍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW +<Multi_key> <exclam> <d> : "ḍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW +<dead_belowmacron> <D> : "Ḏ" U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW +<dead_belowmacron> <d> : "ḏ" U1E0F # LATIN SMALL LETTER D WITH LINE BELOW +<dead_cedilla> <D> : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA +<Multi_key> <comma> <D> : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA +<Multi_key> <D> <comma> : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA +<Multi_key> <cedilla> <D> : "Ḑ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA +<dead_cedilla> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA +<Multi_key> <comma> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA +<Multi_key> <d> <comma> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA +<Multi_key> <cedilla> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA +<dead_belowcircumflex> <D> : "Ḓ" U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <d> : "ḓ" U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW +<dead_grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<Multi_key> <grave> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <acute> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_belowcircumflex> <E> : "Ḙ" U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <e> : "ḙ" U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW +<dead_belowtilde> <E> : "Ḛ" U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW +<dead_belowtilde> <e> : "ḛ" U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW +<dead_breve> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <Multi_key> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <Multi_key> <cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <space> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <U0229> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <U0229> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <U0229> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <dead_cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <Multi_key> <comma> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <Multi_key> <cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <dead_cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <space> <comma> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <U> <cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <dead_cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <comma> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<Multi_key> <b> <cedilla> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_abovedot> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE +<Multi_key> <period> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE +<Multi_key> <F> <period> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE +<dead_abovedot> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE +<Multi_key> <period> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE +<Multi_key> <f> <period> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE +<dead_macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON +<Multi_key> <macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON +<Multi_key> <underscore> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON +<dead_macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON +<Multi_key> <macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON +<Multi_key> <underscore> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON +<dead_abovedot> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE +<Multi_key> <period> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE +<dead_abovedot> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE +<Multi_key> <period> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE +<dead_belowdot> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW +<Multi_key> <exclam> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW +<dead_belowdot> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW +<Multi_key> <exclam> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW +<dead_diaeresis> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS +<Multi_key> <quotedbl> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS +<dead_diaeresis> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS +<Multi_key> <quotedbl> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS +<dead_cedilla> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA +<Multi_key> <comma> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA +<Multi_key> <H> <comma> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA +<Multi_key> <cedilla> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA +<dead_cedilla> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA +<Multi_key> <comma> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA +<Multi_key> <h> <comma> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA +<Multi_key> <cedilla> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA +<dead_belowbreve> <H> : "Ḫ" U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW +<dead_belowbreve> <h> : "ḫ" U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW +<dead_belowtilde> <I> : "Ḭ" U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW +<dead_belowtilde> <i> : "ḭ" U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW +<dead_acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <Multi_key> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <Multi_key> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <acute> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<Multi_key> <apostrophe> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<dead_acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE +<Multi_key> <acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE +<Multi_key> <apostrophe> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE +<dead_acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE +<Multi_key> <acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE +<Multi_key> <apostrophe> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE +<dead_belowdot> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW +<Multi_key> <exclam> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW +<dead_belowdot> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW +<Multi_key> <exclam> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW +<dead_belowmacron> <K> : "Ḵ" U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW +<dead_belowmacron> <k> : "ḵ" U1E35 # LATIN SMALL LETTER K WITH LINE BELOW +<dead_belowdot> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW +<Multi_key> <exclam> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW +<dead_belowdot> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW +<Multi_key> <exclam> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW +<dead_macron> <U1E36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <U1E36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <U1E36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<dead_macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<dead_macron> <Multi_key> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<dead_macron> <U1E37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <U1E37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <U1E37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<dead_macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<dead_macron> <Multi_key> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <macron> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<dead_belowmacron> <L> : "Ḻ" U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW +<dead_belowmacron> <l> : "ḻ" U1E3B # LATIN SMALL LETTER L WITH LINE BELOW +<dead_belowcircumflex> <L> : "Ḽ" U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <l> : "ḽ" U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW +<dead_acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE +<Multi_key> <acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE +<Multi_key> <apostrophe> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE +<dead_acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE +<Multi_key> <acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE +<Multi_key> <apostrophe> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE +<dead_abovedot> <M> : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE +<Multi_key> <period> <M> : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE +<Multi_key> <M> <period> : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE +<dead_abovedot> <m> : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE +<Multi_key> <period> <m> : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE +<Multi_key> <m> <period> : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE +<dead_belowdot> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW +<Multi_key> <exclam> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW +<dead_belowdot> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW +<Multi_key> <exclam> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW +<dead_abovedot> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE +<Multi_key> <period> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE +<dead_abovedot> <n> : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE +<Multi_key> <period> <n> : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE +<dead_belowdot> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW +<Multi_key> <exclam> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW +<dead_belowdot> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW +<Multi_key> <exclam> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW +<dead_belowmacron> <N> : "Ṉ" U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW +<dead_belowmacron> <n> : "ṉ" U1E49 # LATIN SMALL LETTER N WITH LINE BELOW +<dead_belowcircumflex> <N> : "Ṋ" U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <n> : "ṋ" U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW +<dead_acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<dead_acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<dead_acute> <Multi_key> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<dead_acute> <otilde> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <otilde> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <otilde> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<dead_acute> <dead_tilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<dead_acute> <Multi_key> <asciitilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <dead_tilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <acute> <asciitilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <dead_tilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <asciitilde> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<dead_diaeresis> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<dead_diaeresis> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<dead_diaeresis> <Multi_key> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<dead_diaeresis> <otilde> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <otilde> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<dead_diaeresis> <dead_tilde> <o> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<dead_diaeresis> <Multi_key> <asciitilde> <o> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <dead_tilde> <o> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<Multi_key> <quotedbl> <asciitilde> <o> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<dead_grave> <Omacron> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <Omacron> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_grave> <dead_macron> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <macron> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <underscore> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <dead_macron> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <macron> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <underscore> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_grave> <Multi_key> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<Multi_key> <grave> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_acute> <Omacron> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <Omacron> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <Omacron> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_acute> <dead_macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <underscore> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <dead_macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <underscore> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <dead_macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <macron> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <underscore> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_acute> <Multi_key> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <acute> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<Multi_key> <apostrophe> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_acute> <P> : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +<Multi_key> <acute> <P> : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +<Multi_key> <apostrophe> <P> : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +<dead_acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +<Multi_key> <acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +<Multi_key> <apostrophe> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +<dead_abovedot> <P> : "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE +<Multi_key> <period> <P> : "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE +<Multi_key> <P> <period> : "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE +<dead_abovedot> <p> : "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE +<Multi_key> <period> <p> : "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE +<Multi_key> <p> <period> : "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE +<dead_abovedot> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE +<Multi_key> <period> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE +<dead_abovedot> <r> : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE +<Multi_key> <period> <r> : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE +<dead_belowdot> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW +<Multi_key> <exclam> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW +<dead_belowdot> <r> : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW +<Multi_key> <exclam> <r> : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW +<dead_macron> <U1E5A> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <U1E5A> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <U1E5A> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<dead_macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<dead_macron> <Multi_key> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<dead_macron> <U1E5B> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <U1E5B> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <U1E5B> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<dead_macron> <dead_belowdot> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<dead_macron> <Multi_key> <exclam> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <dead_belowdot> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <macron> <exclam> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <dead_belowdot> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<Multi_key> <underscore> <exclam> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<dead_belowmacron> <R> : "Ṟ" U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW +<dead_belowmacron> <r> : "ṟ" U1E5F # LATIN SMALL LETTER R WITH LINE BELOW +<dead_abovedot> <S> : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE +<Multi_key> <period> <S> : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE +<Multi_key> <S> <period> : "Ṡ" U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE +<dead_abovedot> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE +<Multi_key> <period> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE +<Multi_key> <s> <period> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE +<dead_belowdot> <S> : "Ṣ" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW +<Multi_key> <exclam> <S> : "Ṣ" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW +<dead_belowdot> <s> : "ṣ" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW +<Multi_key> <exclam> <s> : "ṣ" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW +<dead_abovedot> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <Multi_key> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <Multi_key> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <sacute> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <sacute> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <dead_acute> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <Multi_key> <acute> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <Multi_key> <apostrophe> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <dead_acute> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <acute> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<Multi_key> <period> <apostrophe> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_abovedot> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<Multi_key> <period> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <Multi_key> <c> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<Multi_key> <period> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<Multi_key> <period> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <Multi_key> <c> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<Multi_key> <period> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <U1E62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <U1E62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <Multi_key> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <U1E63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <U1E63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <Multi_key> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<Multi_key> <period> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_abovedot> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE +<Multi_key> <period> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE +<Multi_key> <T> <period> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE +<dead_abovedot> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE +<Multi_key> <period> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE +<Multi_key> <t> <period> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE +<dead_belowdot> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW +<Multi_key> <exclam> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW +<dead_belowdot> <t> : "ṭ" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW +<Multi_key> <exclam> <t> : "ṭ" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW +<dead_belowmacron> <T> : "Ṯ" U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW +<dead_belowmacron> <t> : "ṯ" U1E6F # LATIN SMALL LETTER T WITH LINE BELOW +<dead_belowcircumflex> <T> : "Ṱ" U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <t> : "ṱ" U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW +<dead_belowdiaeresis> <U> : "Ṳ" U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW +<dead_belowdiaeresis> <u> : "ṳ" U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW +<dead_belowtilde> <U> : "Ṵ" U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW +<dead_belowtilde> <u> : "ṵ" U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW +<dead_belowcircumflex> <U> : "Ṷ" U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW +<dead_belowcircumflex> <u> : "ṷ" U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW +<dead_acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<dead_acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<dead_acute> <Multi_key> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<dead_acute> <utilde> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <utilde> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <utilde> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<dead_acute> <dead_tilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<dead_acute> <Multi_key> <asciitilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <dead_tilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <acute> <asciitilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <dead_tilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<Multi_key> <apostrophe> <asciitilde> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<dead_diaeresis> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <Multi_key> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <Multi_key> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <umacron> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <umacron> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <dead_macron> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <Multi_key> <macron> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<dead_diaeresis> <Multi_key> <underscore> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <dead_macron> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <macron> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<Multi_key> <quotedbl> <underscore> <u> : "ṻ" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +<dead_tilde> <V> : "Ṽ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE +<Multi_key> <asciitilde> <V> : "Ṽ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE +<dead_tilde> <v> : "ṽ" U1E7D # LATIN SMALL LETTER V WITH TILDE +<Multi_key> <asciitilde> <v> : "ṽ" U1E7D # LATIN SMALL LETTER V WITH TILDE +<dead_belowdot> <V> : "Ṿ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW +<Multi_key> <exclam> <V> : "Ṿ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW +<dead_belowdot> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW +<Multi_key> <exclam> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW +<dead_grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE +<Multi_key> <grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE +<dead_grave> <w> : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE +<Multi_key> <grave> <w> : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE +<dead_acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE +<Multi_key> <acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE +<Multi_key> <apostrophe> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE +<dead_acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE +<Multi_key> <acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE +<Multi_key> <apostrophe> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE +<dead_diaeresis> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS +<Multi_key> <quotedbl> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS +<dead_diaeresis> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS +<Multi_key> <quotedbl> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS +<dead_abovedot> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE +<Multi_key> <period> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE +<dead_abovedot> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE +<Multi_key> <period> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE +<dead_belowdot> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW +<Multi_key> <exclam> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW +<dead_belowdot> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW +<Multi_key> <exclam> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW +<dead_abovedot> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE +<Multi_key> <period> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE +<dead_abovedot> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE +<Multi_key> <period> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE +<dead_diaeresis> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS +<Multi_key> <quotedbl> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS +<dead_diaeresis> <x> : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS +<Multi_key> <quotedbl> <x> : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS +<dead_abovedot> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE +<Multi_key> <period> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE +<dead_abovedot> <y> : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE +<Multi_key> <period> <y> : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE +<dead_circumflex> <Z> : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +<Multi_key> <asciicircum> <Z> : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +<dead_circumflex> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX +<Multi_key> <asciicircum> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX +<dead_belowdot> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW +<Multi_key> <exclam> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW +<dead_belowdot> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW +<Multi_key> <exclam> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW +<dead_belowmacron> <Z> : "Ẕ" U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW +<dead_belowmacron> <z> : "ẕ" U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW +<dead_belowmacron> <h> : "ẖ" U1E96 # LATIN SMALL LETTER H WITH LINE BELOW +<dead_diaeresis> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS +<Multi_key> <quotedbl> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS +<dead_abovering> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE +<Multi_key> <o> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE +<dead_abovering> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE +<Multi_key> <o> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE +<dead_abovedot> <U017F> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE +<Multi_key> <period> <U017F> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE +<dead_belowdot> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW +<Multi_key> <exclam> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW +<dead_belowdot> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW +<Multi_key> <exclam> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW +<dead_hook> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE +<Multi_key> <question> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE +<dead_hook> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE +<Multi_key> <question> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE +<dead_acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_hook> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_tilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_tilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <U1EA0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1EA0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <Acircumflex> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <U1EA1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1EA1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <acircumflex> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_acute> <Multi_key> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_acute> <Multi_key> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_acute> <Multi_key> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_acute> <Multi_key> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <acute> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<Multi_key> <apostrophe> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_grave> <Multi_key> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_grave> <Multi_key> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_grave> <Multi_key> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_grave> <Multi_key> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<Multi_key> <grave> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_hook> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <Multi_key> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <Multi_key> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <Multi_key> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_hook> <Multi_key> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<Multi_key> <question> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_tilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_tilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_tilde> <Multi_key> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_tilde> <Multi_key> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_tilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_tilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_tilde> <Multi_key> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_tilde> <Multi_key> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<Multi_key> <asciitilde> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_breve> <U1EA0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <U1EA0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <U1EA0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<dead_breve> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<dead_breve> <Multi_key> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<dead_belowdot> <Abreve> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<dead_breve> <U1EA1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <U1EA1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <U1EA1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<dead_breve> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<dead_breve> <Multi_key> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <U> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<Multi_key> <b> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<dead_belowdot> <abreve> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<dead_belowdot> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW +<Multi_key> <exclam> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW +<dead_belowdot> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW +<Multi_key> <exclam> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW +<dead_hook> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE +<Multi_key> <question> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE +<dead_hook> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE +<Multi_key> <question> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE +<dead_tilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE +<Multi_key> <asciitilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE +<dead_tilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE +<Multi_key> <asciitilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE +<dead_acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_grave> <ecircumflex> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <ecircumflex> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <e> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <e> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <e> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <e> : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_hook> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_tilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_tilde> <ecircumflex> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <ecircumflex> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <e> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <e> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <e> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <e> : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <U1EB8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1EB8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <Ecircumflex> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <U1EB9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1EB9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <ecircumflex> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_hook> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE +<Multi_key> <question> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE +<dead_hook> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE +<Multi_key> <question> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE +<dead_belowdot> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW +<Multi_key> <exclam> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW +<dead_belowdot> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW +<Multi_key> <exclam> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW +<dead_belowdot> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW +<Multi_key> <exclam> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW +<dead_belowdot> <o> : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW +<Multi_key> <exclam> <o> : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW +<dead_hook> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE +<Multi_key> <question> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE +<dead_hook> <o> : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE +<Multi_key> <question> <o> : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE +<dead_acute> <Ocircumflex> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <Ocircumflex> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <Ocircumflex> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <O> : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_acute> <Multi_key> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <acute> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<Multi_key> <apostrophe> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_grave> <Ocircumflex> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <Ocircumflex> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <O> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <O> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <O> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <O> : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_grave> <Multi_key> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<Multi_key> <grave> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_hook> <Ocircumflex> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <Ocircumflex> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <O> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <O> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <O> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <O> : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_hook> <Multi_key> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<Multi_key> <question> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_tilde> <Ocircumflex> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <Ocircumflex> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <O> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <O> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <O> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <O> : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_tilde> <ocircumflex> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <ocircumflex> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_tilde> <dead_circumflex> <o> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_tilde> <Multi_key> <asciicircum> <o> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <dead_circumflex> <o> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<Multi_key> <asciitilde> <asciicircum> <o> : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <U1ECC> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1ECC> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <Ocircumflex> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <U1ECD> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <U1ECD> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <dead_belowdot> <o> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_circumflex> <Multi_key> <exclam> <o> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <dead_belowdot> <o> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<Multi_key> <asciicircum> <exclam> <o> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <ocircumflex> : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<dead_acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<dead_acute> <Multi_key> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<dead_acute> <ohorn> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <ohorn> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <ohorn> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<dead_acute> <dead_horn> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<dead_acute> <Multi_key> <plus> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <dead_horn> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <acute> <plus> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <dead_horn> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<Multi_key> <apostrophe> <plus> <o> : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE +<dead_grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<dead_grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<dead_grave> <Multi_key> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<dead_grave> <ohorn> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <ohorn> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<dead_grave> <dead_horn> <o> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<dead_grave> <Multi_key> <plus> <o> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <dead_horn> <o> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<Multi_key> <grave> <plus> <o> : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE +<dead_hook> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<dead_hook> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<dead_hook> <Multi_key> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<dead_hook> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<dead_hook> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<dead_hook> <Multi_key> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<Multi_key> <question> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<dead_tilde> <Ohorn> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <Ohorn> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<dead_tilde> <dead_horn> <O> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<dead_tilde> <Multi_key> <plus> <O> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <dead_horn> <O> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <plus> <O> : "Ỡ" U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<dead_tilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<dead_tilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<dead_tilde> <Multi_key> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<Multi_key> <asciitilde> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE +<dead_belowdot> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <Multi_key> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <Multi_key> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<Multi_key> <exclam> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<dead_belowdot> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW +<Multi_key> <exclam> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW +<dead_belowdot> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW +<Multi_key> <exclam> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW +<dead_hook> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE +<Multi_key> <question> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE +<dead_hook> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE +<Multi_key> <question> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE +<dead_acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<dead_acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<dead_acute> <Multi_key> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<dead_acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<dead_acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<dead_acute> <Multi_key> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <acute> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<Multi_key> <apostrophe> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE +<dead_grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<dead_grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<dead_grave> <Multi_key> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<dead_grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<dead_grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<dead_grave> <Multi_key> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<Multi_key> <grave> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE +<dead_hook> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<dead_hook> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<dead_hook> <Multi_key> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<dead_hook> <uhorn> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <uhorn> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<dead_hook> <dead_horn> <u> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<dead_hook> <Multi_key> <plus> <u> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <dead_horn> <u> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<Multi_key> <question> <plus> <u> : "ử" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<dead_tilde> <Uhorn> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <Uhorn> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<dead_tilde> <dead_horn> <U> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<dead_tilde> <Multi_key> <plus> <U> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <dead_horn> <U> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <plus> <U> : "Ữ" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<dead_tilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<dead_tilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<dead_tilde> <Multi_key> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<Multi_key> <asciitilde> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE +<dead_belowdot> <Uhorn> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <Uhorn> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <dead_horn> <U> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <Multi_key> <plus> <U> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <dead_horn> <U> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <plus> <U> : "Ự" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <uhorn> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <uhorn> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <dead_horn> <u> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <Multi_key> <plus> <u> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <dead_horn> <u> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<Multi_key> <exclam> <plus> <u> : "ự" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<dead_grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE +<Multi_key> <grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE +<dead_grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE +<Multi_key> <grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE +<dead_belowdot> <Y> : "Ỵ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW +<Multi_key> <exclam> <Y> : "Ỵ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW +<dead_belowdot> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW +<Multi_key> <exclam> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW +<dead_hook> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +<Multi_key> <question> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +<dead_hook> <y> : "ỷ" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE +<Multi_key> <question> <y> : "ỷ" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE +<dead_tilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE +<Multi_key> <asciitilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE +<dead_tilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE +<Multi_key> <asciitilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE +<dead_psili> <Greek_alpha> : "ἀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI +<Multi_key> <parenright> <Greek_alpha> : "ἀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI +<dead_dasia> <Greek_alpha> : "ἁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA +<Multi_key> <parenleft> <Greek_alpha> : "ἁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA +<dead_grave> <U1F00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <U1F01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +<dead_acute> <U1F00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <U1F01> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F01> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F01> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "ἅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +<dead_tilde> <U1F00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI +<Multi_key> <parenright> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI +<dead_dasia> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA +<Multi_key> <parenleft> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA +<dead_grave> <U1F08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +<dead_grave> <U1F09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +<dead_acute> <U1F08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +<dead_acute> <U1F09> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F09> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F09> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "Ἅ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +<dead_tilde> <U1F08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F09> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F09> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_ALPHA> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_ALPHA> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "Ἇ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_epsilon> : "ἐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI +<Multi_key> <parenright> <Greek_epsilon> : "ἐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI +<dead_dasia> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA +<Multi_key> <parenleft> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA +<dead_grave> <U1F10> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <U1F10> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_epsilon> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_epsilon> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_epsilon> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_epsilon> : "ἒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <U1F11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +<dead_acute> <U1F10> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <U1F10> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F10> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_epsilon> : "ἔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <U1F11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +<dead_psili> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI +<Multi_key> <parenright> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI +<dead_dasia> <Greek_EPSILON> : "Ἑ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA +<Multi_key> <parenleft> <Greek_EPSILON> : "Ἑ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA +<dead_grave> <U1F18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <U1F18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +<dead_grave> <U1F19> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F19> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_EPSILON> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_EPSILON> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_EPSILON> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_EPSILON> : "Ἓ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +<dead_acute> <U1F18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <U1F18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +<dead_acute> <U1F19> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F19> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F19> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_EPSILON> : "Ἕ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +<dead_psili> <Greek_eta> : "ἠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI +<Multi_key> <parenright> <Greek_eta> : "ἠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI +<dead_dasia> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA +<Multi_key> <parenleft> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA +<dead_grave> <U1F20> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F20> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_eta> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_eta> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_eta> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_eta> : "ἢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <U1F21> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F21> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_eta> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_eta> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_eta> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_eta> : "ἣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +<dead_acute> <U1F20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <U1F21> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F21> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F21> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_eta> : "ἥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +<dead_tilde> <U1F20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI +<Multi_key> <parenright> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI +<dead_dasia> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA +<Multi_key> <parenleft> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA +<dead_grave> <U1F28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +<dead_grave> <U1F29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +<dead_acute> <U1F28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +<dead_acute> <U1F29> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F29> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F29> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "Ἥ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +<dead_tilde> <U1F28> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F28> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_ETA> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_ETA> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_ETA> : "Ἦ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_iota> : "ἰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI +<Multi_key> <parenright> <Greek_iota> : "ἰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI +<dead_dasia> <Greek_iota> : "ἱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA +<Multi_key> <parenleft> <Greek_iota> : "ἱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA +<dead_grave> <U1F30> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F30> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_iota> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_iota> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_iota> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_iota> : "ἲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <U1F31> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F31> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_iota> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_iota> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_iota> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_iota> : "ἳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +<dead_acute> <U1F30> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F30> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F30> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_iota> : "ἴ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <U1F31> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F31> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F31> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_iota> : "ἵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +<dead_tilde> <U1F30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F31> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F31> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_iota> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_iota> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_iota> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_iota> : "ἷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI +<Multi_key> <parenright> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI +<dead_dasia> <Greek_IOTA> : "Ἱ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA +<Multi_key> <parenleft> <Greek_IOTA> : "Ἱ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA +<dead_grave> <U1F38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +<dead_grave> <U1F39> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F39> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_IOTA> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_IOTA> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_IOTA> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_IOTA> : "Ἳ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +<dead_acute> <U1F38> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F38> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F38> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_IOTA> : "Ἴ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +<dead_acute> <U1F39> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F39> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F39> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_IOTA> : "Ἵ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +<dead_tilde> <U1F38> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F38> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_IOTA> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_IOTA> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_IOTA> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_IOTA> : "Ἶ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_omicron> : "ὀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI +<Multi_key> <parenright> <Greek_omicron> : "ὀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI +<dead_dasia> <Greek_omicron> : "ὁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA +<Multi_key> <parenleft> <Greek_omicron> : "ὁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA +<dead_grave> <U1F40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <U1F40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <U1F41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +<dead_acute> <U1F40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <U1F40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <U1F41> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F41> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F41> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_omicron> : "ὅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +<dead_psili> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI +<Multi_key> <parenright> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI +<dead_dasia> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA +<Multi_key> <parenleft> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA +<dead_grave> <U1F48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <U1F48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +<dead_grave> <U1F49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +<dead_acute> <U1F48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <U1F48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +<dead_acute> <U1F49> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F49> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F49> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_OMICRON> : "Ὅ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +<dead_psili> <Greek_upsilon> : "ὐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI +<Multi_key> <parenright> <Greek_upsilon> : "ὐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI +<dead_dasia> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA +<Multi_key> <parenleft> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA +<dead_grave> <U1F50> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <U1F50> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_upsilon> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_upsilon> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_upsilon> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_upsilon> : "ὒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +<dead_grave> <U1F51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +<dead_acute> <U1F50> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <U1F50> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F50> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_upsilon> : "ὔ" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +<dead_acute> <U1F51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +<dead_tilde> <U1F50> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F50> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_upsilon> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_upsilon> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_upsilon> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_upsilon> : "ὖ" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F51> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F51> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_upsilon> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_upsilon> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_upsilon> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_upsilon> : "ὗ" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_dasia> <Greek_UPSILON> : "Ὑ" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA +<Multi_key> <parenleft> <Greek_UPSILON> : "Ὑ" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA +<dead_grave> <U1F59> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <U1F59> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_UPSILON> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_UPSILON> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_UPSILON> : "Ὓ" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +<dead_acute> <U1F59> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <U1F59> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F59> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_UPSILON> : "Ὕ" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +<dead_tilde> <U1F59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_omega> : "ὠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI +<Multi_key> <parenright> <Greek_omega> : "ὠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI +<dead_dasia> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA +<Multi_key> <parenleft> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA +<dead_grave> <U1F60> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F60> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_omega> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_omega> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_omega> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_omega> : "ὢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <U1F61> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F61> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_omega> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_omega> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_omega> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_omega> : "ὣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +<dead_acute> <U1F60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <U1F61> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F61> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F61> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_omega> : "ὥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +<dead_tilde> <U1F60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_psili> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI +<Multi_key> <parenright> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI +<dead_dasia> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA +<Multi_key> <parenleft> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA +<dead_grave> <U1F68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <U1F68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<Multi_key> <grave> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +<dead_grave> <U1F69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <U1F69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<dead_grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<Multi_key> <grave> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +<dead_acute> <U1F68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <U1F68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <U1F68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <acute> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <dead_psili> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +<dead_acute> <U1F69> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <U1F69> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <U1F69> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<dead_acute> <dead_dasia> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <dead_dasia> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <acute> <parenleft> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <dead_dasia> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "Ὥ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +<dead_tilde> <U1F68> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <U1F68> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <dead_psili> <Greek_OMEGA> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <dead_psili> <Greek_OMEGA> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "Ὦ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +<dead_tilde> <U1F69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <U1F69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_tilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +<dead_grave> <Greek_alpha> : "ὰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA +<Multi_key> <grave> <Greek_alpha> : "ὰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA +<dead_grave> <Greek_epsilon> : "ὲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA +<Multi_key> <grave> <Greek_epsilon> : "ὲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA +<dead_grave> <Greek_eta> : "ὴ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA +<Multi_key> <grave> <Greek_eta> : "ὴ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA +<dead_grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA +<Multi_key> <grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA +<dead_grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA +<Multi_key> <grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA +<dead_grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA +<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA +<dead_grave> <Greek_omega> : "ὼ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA +<Multi_key> <grave> <Greek_omega> : "ὼ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA +<dead_iota> <U1F00> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F00> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <dead_psili> <Greek_alpha> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_alpha> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_alpha> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_alpha> : "ᾀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <U1F01> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F01> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_alpha> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_alpha> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_alpha> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_alpha> : "ᾁ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <U1F02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F05> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F05> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F01> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_alpha> : "ᾅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <U1F09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <U1F0A> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0A> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F0B> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0B> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F0C> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0C> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F0D> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0D> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F09> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ALPHA> : "ᾍ" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F0E> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0E> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <U1F0F> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F0F> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F09> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F09> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F09> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F09> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ALPHA> : "ᾏ" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <U1F20> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F20> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <dead_psili> <Greek_eta> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_eta> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_eta> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_eta> : "ᾐ" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <U1F21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <U1F22> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F22> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F20> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F20> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F20> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F20> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_eta> : "ᾒ" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F24> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F24> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F20> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_eta> : "ᾔ" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F26> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F26> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F20> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F20> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F20> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F20> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_eta> : "ᾖ" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F27> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F27> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F21> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F21> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F21> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F21> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_eta> : "ᾗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <U1F29> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F29> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_ETA> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_ETA> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_ETA> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_ETA> : "ᾙ" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <U1F2A> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2A> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F2B> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2B> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F29> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F29> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F29> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F29> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ETA> : "ᾛ" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F2C> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2C> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F2D> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2D> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F29> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ETA> : "ᾝ" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F2E> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2E> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <U1F2F> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F2F> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <U1F60> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F60> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <dead_psili> <Greek_omega> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_omega> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_omega> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_omega> : "ᾠ" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +<dead_iota> <U1F61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +<dead_iota> <U1F62> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F62> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F60> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F60> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F60> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F60> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_omega> : "ᾢ" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F63> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F63> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <U1F61> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F61> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F61> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F61> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_omega> : "ᾣ" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +<dead_iota> <U1F64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F65> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F65> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F61> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_omega> : "ᾥ" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +<dead_iota> <U1F66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <U1F61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <U1F68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +<dead_iota> <U1F69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +<dead_iota> <U1F6A> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6A> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F6B> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6B> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <U1F69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <U1F69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <U1F69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <U1F69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +<dead_iota> <U1F6C> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6C> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_psili> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F6D> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6D> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <U1F69> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <acute> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <dead_dasia> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_OMEGA> : "ᾭ" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +<dead_iota> <U1F6E> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6E> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F68> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F68> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F68> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F68> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_psili> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_psili> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_OMEGA> : "ᾮ" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <U1F6F> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <U1F6F> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <U1F69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <U1F69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <U1F69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <U1F69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +<dead_breve> <Greek_alpha> : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY +<Multi_key> <U> <Greek_alpha> : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY +<Multi_key> <b> <Greek_alpha> : "ᾰ" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY +<dead_macron> <Greek_alpha> : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON +<Multi_key> <macron> <Greek_alpha> : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON +<Multi_key> <underscore> <Greek_alpha> : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON +<dead_iota> <U1F70> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F70> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Greek_alpha> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <Greek_alpha> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <Greek_alpha> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <Greek_alpha> : "ᾲ" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Greek_alpha> : "ᾳ" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_alpha> : "ᾳ" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +<dead_iota> <Greek_alphaaccent> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_alphaaccent> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <Greek_alpha> : "ᾴ" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +<dead_tilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +<dead_iota> <U1FB6> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1FB6> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Greek_alpha> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <Greek_alpha> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <Greek_alpha> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <Greek_alpha> : "ᾷ" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_breve> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY +<Multi_key> <U> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY +<Multi_key> <b> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY +<dead_macron> <Greek_ALPHA> : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON +<Multi_key> <macron> <Greek_ALPHA> : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON +<Multi_key> <underscore> <Greek_ALPHA> : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON +<dead_grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA +<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA +<dead_iota> <Greek_ALPHA> : "ᾼ" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_ALPHA> : "ᾼ" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +<Multi_key> <diaeresis> <dead_tilde> : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI +<Multi_key> <diaeresis> <asciitilde> : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI +<dead_iota> <U1F74> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F74> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Greek_eta> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <Greek_eta> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <Greek_eta> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <Greek_eta> : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +<dead_iota> <Greek_etaaccent> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_etaaccent> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <Greek_eta> : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +<dead_tilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI +<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI +<dead_iota> <U1FC6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1FC6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA +<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA +<dead_grave> <Greek_ETA> : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA +<Multi_key> <grave> <Greek_ETA> : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA +<dead_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +<Multi_key> <U1FBF> <dead_grave> : "῍" U1FCD # GREEK PSILI AND VARIA +<Multi_key> <U1FBF> <grave> : "῍" U1FCD # GREEK PSILI AND VARIA +<Multi_key> <U1FBF> <dead_acute> : "῎" U1FCE # GREEK PSILI AND OXIA +<Multi_key> <U1FBF> <acute> : "῎" U1FCE # GREEK PSILI AND OXIA +<Multi_key> <U1FBF> <apostrophe> : "῎" U1FCE # GREEK PSILI AND OXIA +<Multi_key> <U1FBF> <dead_tilde> : "῏" U1FCF # GREEK PSILI AND PERISPOMENI +<Multi_key> <U1FBF> <asciitilde> : "῏" U1FCF # GREEK PSILI AND PERISPOMENI +<dead_breve> <Greek_iota> : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY +<Multi_key> <U> <Greek_iota> : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY +<Multi_key> <b> <Greek_iota> : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY +<dead_macron> <Greek_iota> : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON +<Multi_key> <macron> <Greek_iota> : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON +<Multi_key> <underscore> <Greek_iota> : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON +<dead_grave> <Greek_iotadieresis> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <Greek_iotadieresis> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<dead_grave> <dead_diaeresis> <Greek_iota> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<dead_grave> <Multi_key> <quotedbl> <Greek_iota> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <dead_diaeresis> <Greek_iota> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <quotedbl> <Greek_iota> : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +<dead_tilde> <Greek_iota> : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI +<Multi_key> <asciitilde> <Greek_iota> : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI +<dead_tilde> <Greek_iotadieresis> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <Greek_iotadieresis> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<dead_tilde> <dead_diaeresis> <Greek_iota> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<dead_tilde> <Multi_key> <quotedbl> <Greek_iota> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_diaeresis> <Greek_iota> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +<dead_breve> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY +<Multi_key> <U> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY +<Multi_key> <b> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY +<dead_macron> <Greek_IOTA> : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON +<Multi_key> <macron> <Greek_IOTA> : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON +<Multi_key> <underscore> <Greek_IOTA> : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON +<dead_grave> <Greek_IOTA> : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA +<Multi_key> <grave> <Greek_IOTA> : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA +<Multi_key> <U1FFE> <dead_grave> : "῝" U1FDD # GREEK DASIA AND VARIA +<Multi_key> <U1FFE> <grave> : "῝" U1FDD # GREEK DASIA AND VARIA +<Multi_key> <U1FFE> <dead_acute> : "῞" U1FDE # GREEK DASIA AND OXIA +<Multi_key> <U1FFE> <acute> : "῞" U1FDE # GREEK DASIA AND OXIA +<Multi_key> <U1FFE> <apostrophe> : "῞" U1FDE # GREEK DASIA AND OXIA +<Multi_key> <U1FFE> <dead_tilde> : "῟" U1FDF # GREEK DASIA AND PERISPOMENI +<Multi_key> <U1FFE> <asciitilde> : "῟" U1FDF # GREEK DASIA AND PERISPOMENI +<dead_breve> <Greek_upsilon> : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY +<Multi_key> <U> <Greek_upsilon> : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY +<Multi_key> <b> <Greek_upsilon> : "ῠ" U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY +<dead_macron> <Greek_upsilon> : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON +<Multi_key> <macron> <Greek_upsilon> : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON +<Multi_key> <underscore> <Greek_upsilon> : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON +<dead_grave> <Greek_upsilondieresis> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <Greek_upsilondieresis> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<dead_grave> <dead_diaeresis> <Greek_upsilon> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<dead_grave> <Multi_key> <quotedbl> <Greek_upsilon> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <dead_diaeresis> <Greek_upsilon> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "ῢ" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +<dead_psili> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI +<Multi_key> <parenright> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI +<dead_dasia> <Greek_rho> : "ῥ" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA +<Multi_key> <parenleft> <Greek_rho> : "ῥ" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA +<dead_tilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +<dead_tilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<dead_tilde> <Multi_key> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +<dead_breve> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY +<Multi_key> <U> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY +<Multi_key> <b> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY +<dead_macron> <Greek_UPSILON> : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON +<Multi_key> <macron> <Greek_UPSILON> : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON +<Multi_key> <underscore> <Greek_UPSILON> : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON +<dead_grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA +<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA +<dead_dasia> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA +<Multi_key> <parenleft> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA +<Multi_key> <diaeresis> <dead_grave> : "῭" U1FED # GREEK DIALYTIKA AND VARIA +<Multi_key> <diaeresis> <grave> : "῭" U1FED # GREEK DIALYTIKA AND VARIA +<dead_iota> <U1F7C> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1F7C> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +<dead_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +<dead_iota> <Greek_omegaaccent> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_omegaaccent> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <dead_acute> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <acute> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <apostrophe> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_acute> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <acute> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <apostrophe> <Greek_omega> : "ῴ" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +<dead_tilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +<dead_iota> <U1FF6> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <U1FF6> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <dead_tilde> <Greek_omega> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_iota> <Multi_key> <asciitilde> <Greek_omega> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <dead_tilde> <Greek_omega> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<Multi_key> <Greek_iota> <asciitilde> <Greek_omega> : "ῷ" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +<dead_grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA +<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA +<dead_grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA +<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA +<dead_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +<Multi_key> <Greek_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +<dead_circumflex> <0> : "⁰" U2070 # SUPERSCRIPT ZERO +<Multi_key> <asciicircum> <0> : "⁰" U2070 # SUPERSCRIPT ZERO +<dead_circumflex> <KP_0> : "⁰" U2070 # SUPERSCRIPT ZERO +<Multi_key> <asciicircum> <KP_0> : "⁰" U2070 # SUPERSCRIPT ZERO +<dead_circumflex> <Multi_key> <underscore> <i> : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I +<Multi_key> <asciicircum> <underscore> <i> : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I +<dead_circumflex> <Multi_key> <underbar> <i> : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I +<Multi_key> <asciicircum> <underbar> <i> : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I +<dead_circumflex> <4> : "⁴" U2074 # SUPERSCRIPT FOUR +<Multi_key> <asciicircum> <4> : "⁴" U2074 # SUPERSCRIPT FOUR +<dead_circumflex> <KP_4> : "⁴" U2074 # SUPERSCRIPT FOUR +<Multi_key> <asciicircum> <KP_4> : "⁴" U2074 # SUPERSCRIPT FOUR +<dead_circumflex> <5> : "⁵" U2075 # SUPERSCRIPT FIVE +<Multi_key> <asciicircum> <5> : "⁵" U2075 # SUPERSCRIPT FIVE +<dead_circumflex> <KP_5> : "⁵" U2075 # SUPERSCRIPT FIVE +<Multi_key> <asciicircum> <KP_5> : "⁵" U2075 # SUPERSCRIPT FIVE +<dead_circumflex> <6> : "⁶" U2076 # SUPERSCRIPT SIX +<Multi_key> <asciicircum> <6> : "⁶" U2076 # SUPERSCRIPT SIX +<dead_circumflex> <KP_6> : "⁶" U2076 # SUPERSCRIPT SIX +<Multi_key> <asciicircum> <KP_6> : "⁶" U2076 # SUPERSCRIPT SIX +<dead_circumflex> <7> : "⁷" U2077 # SUPERSCRIPT SEVEN +<Multi_key> <asciicircum> <7> : "⁷" U2077 # SUPERSCRIPT SEVEN +<dead_circumflex> <KP_7> : "⁷" U2077 # SUPERSCRIPT SEVEN +<Multi_key> <asciicircum> <KP_7> : "⁷" U2077 # SUPERSCRIPT SEVEN +<dead_circumflex> <8> : "⁸" U2078 # SUPERSCRIPT EIGHT +<Multi_key> <asciicircum> <8> : "⁸" U2078 # SUPERSCRIPT EIGHT +<dead_circumflex> <KP_8> : "⁸" U2078 # SUPERSCRIPT EIGHT +<Multi_key> <asciicircum> <KP_8> : "⁸" U2078 # SUPERSCRIPT EIGHT +<dead_circumflex> <9> : "⁹" U2079 # SUPERSCRIPT NINE +<Multi_key> <asciicircum> <9> : "⁹" U2079 # SUPERSCRIPT NINE +<dead_circumflex> <KP_9> : "⁹" U2079 # SUPERSCRIPT NINE +<Multi_key> <asciicircum> <KP_9> : "⁹" U2079 # SUPERSCRIPT NINE +<dead_circumflex> <plus> : "⁺" U207A # SUPERSCRIPT PLUS SIGN +<Multi_key> <asciicircum> <plus> : "⁺" U207A # SUPERSCRIPT PLUS SIGN +<dead_circumflex> <KP_Add> : "⁺" U207A # SUPERSCRIPT PLUS SIGN +<Multi_key> <asciicircum> <KP_Add> : "⁺" U207A # SUPERSCRIPT PLUS SIGN +<dead_circumflex> <U2212> : "⁻" U207B # SUPERSCRIPT MINUS +<Multi_key> <asciicircum> <U2212> : "⁻" U207B # SUPERSCRIPT MINUS +<dead_circumflex> <equal> : "⁼" U207C # SUPERSCRIPT EQUALS SIGN +<Multi_key> <asciicircum> <equal> : "⁼" U207C # SUPERSCRIPT EQUALS SIGN +<dead_circumflex> <KP_Equal> : "⁼" U207C # SUPERSCRIPT EQUALS SIGN +<Multi_key> <asciicircum> <KP_Equal> : "⁼" U207C # SUPERSCRIPT EQUALS SIGN +<dead_circumflex> <parenleft> : "⁽" U207D # SUPERSCRIPT LEFT PARENTHESIS +<Multi_key> <asciicircum> <parenleft> : "⁽" U207D # SUPERSCRIPT LEFT PARENTHESIS +<dead_circumflex> <parenright> : "⁾" U207E # SUPERSCRIPT RIGHT PARENTHESIS +<Multi_key> <asciicircum> <parenright> : "⁾" U207E # SUPERSCRIPT RIGHT PARENTHESIS +<dead_circumflex> <Multi_key> <underscore> <n> : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N +<Multi_key> <asciicircum> <underscore> <n> : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N +<dead_circumflex> <Multi_key> <underbar> <n> : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N +<Multi_key> <asciicircum> <underbar> <n> : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N +<Multi_key> <underscore> <0> : "₀" U2080 # SUBSCRIPT ZERO +<Multi_key> <underscore> <KP_0> : "₀" U2080 # SUBSCRIPT ZERO +<Multi_key> <underbar> <0> : "₀" U2080 # SUBSCRIPT ZERO +<Multi_key> <underbar> <KP_0> : "₀" U2080 # SUBSCRIPT ZERO +<Multi_key> <underscore> <1> : "₁" U2081 # SUBSCRIPT ONE +<Multi_key> <underscore> <KP_1> : "₁" U2081 # SUBSCRIPT ONE +<Multi_key> <underbar> <1> : "₁" U2081 # SUBSCRIPT ONE +<Multi_key> <underbar> <KP_1> : "₁" U2081 # SUBSCRIPT ONE +<Multi_key> <underscore> <2> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underscore> <KP_Space> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underscore> <KP_2> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underbar> <2> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underbar> <KP_Space> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underbar> <KP_2> : "₂" U2082 # SUBSCRIPT TWO +<Multi_key> <underscore> <3> : "₃" U2083 # SUBSCRIPT THREE +<Multi_key> <underscore> <KP_3> : "₃" U2083 # SUBSCRIPT THREE +<Multi_key> <underbar> <3> : "₃" U2083 # SUBSCRIPT THREE +<Multi_key> <underbar> <KP_3> : "₃" U2083 # SUBSCRIPT THREE +<Multi_key> <underscore> <4> : "₄" U2084 # SUBSCRIPT FOUR +<Multi_key> <underscore> <KP_4> : "₄" U2084 # SUBSCRIPT FOUR +<Multi_key> <underbar> <4> : "₄" U2084 # SUBSCRIPT FOUR +<Multi_key> <underbar> <KP_4> : "₄" U2084 # SUBSCRIPT FOUR +<Multi_key> <underscore> <5> : "₅" U2085 # SUBSCRIPT FIVE +<Multi_key> <underscore> <KP_5> : "₅" U2085 # SUBSCRIPT FIVE +<Multi_key> <underbar> <5> : "₅" U2085 # SUBSCRIPT FIVE +<Multi_key> <underbar> <KP_5> : "₅" U2085 # SUBSCRIPT FIVE +<Multi_key> <underscore> <6> : "₆" U2086 # SUBSCRIPT SIX +<Multi_key> <underscore> <KP_6> : "₆" U2086 # SUBSCRIPT SIX +<Multi_key> <underbar> <6> : "₆" U2086 # SUBSCRIPT SIX +<Multi_key> <underbar> <KP_6> : "₆" U2086 # SUBSCRIPT SIX +<Multi_key> <underscore> <7> : "₇" U2087 # SUBSCRIPT SEVEN +<Multi_key> <underscore> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN +<Multi_key> <underbar> <7> : "₇" U2087 # SUBSCRIPT SEVEN +<Multi_key> <underbar> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN +<Multi_key> <underscore> <8> : "₈" U2088 # SUBSCRIPT EIGHT +<Multi_key> <underscore> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT +<Multi_key> <underbar> <8> : "₈" U2088 # SUBSCRIPT EIGHT +<Multi_key> <underbar> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT +<Multi_key> <underscore> <9> : "₉" U2089 # SUBSCRIPT NINE +<Multi_key> <underscore> <KP_9> : "₉" U2089 # SUBSCRIPT NINE +<Multi_key> <underbar> <9> : "₉" U2089 # SUBSCRIPT NINE +<Multi_key> <underbar> <KP_9> : "₉" U2089 # SUBSCRIPT NINE +<Multi_key> <underscore> <plus> : "₊" U208A # SUBSCRIPT PLUS SIGN +<Multi_key> <underscore> <KP_Add> : "₊" U208A # SUBSCRIPT PLUS SIGN +<Multi_key> <underbar> <plus> : "₊" U208A # SUBSCRIPT PLUS SIGN +<Multi_key> <underbar> <KP_Add> : "₊" U208A # SUBSCRIPT PLUS SIGN +<Multi_key> <underscore> <U2212> : "₋" U208B # SUBSCRIPT MINUS +<Multi_key> <underbar> <U2212> : "₋" U208B # SUBSCRIPT MINUS +<Multi_key> <underscore> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN +<Multi_key> <underscore> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN +<Multi_key> <underbar> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN +<Multi_key> <underbar> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN +<Multi_key> <underscore> <parenleft> : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS +<Multi_key> <underbar> <parenleft> : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS +<Multi_key> <underscore> <parenright> : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS +<Multi_key> <underbar> <parenright> : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS +<dead_circumflex> <Multi_key> <S> <M> : "℠" U2120 # SERVICE MARK +<Multi_key> <S> <M> : "℠" U2120 # SERVICE MARK +<dead_circumflex> <Multi_key> <s> <M> : "℠" U2120 # SERVICE MARK +<Multi_key> <s> <M> : "℠" U2120 # SERVICE MARK +<dead_circumflex> <Multi_key> <S> <m> : "℠" U2120 # SERVICE MARK +<Multi_key> <S> <m> : "℠" U2120 # SERVICE MARK +<dead_circumflex> <Multi_key> <s> <m> : "℠" U2120 # SERVICE MARK +<Multi_key> <s> <m> : "℠" U2120 # SERVICE MARK +<dead_circumflex> <Multi_key> <T> <M> : "™" U2122 # TRADE MARK SIGN +<Multi_key> <T> <M> : "™" U2122 # TRADE MARK SIGN +<dead_circumflex> <Multi_key> <t> <M> : "™" U2122 # TRADE MARK SIGN +<Multi_key> <t> <M> : "™" U2122 # TRADE MARK SIGN +<dead_circumflex> <Multi_key> <T> <m> : "™" U2122 # TRADE MARK SIGN +<Multi_key> <T> <m> : "™" U2122 # TRADE MARK SIGN +<dead_circumflex> <Multi_key> <t> <m> : "™" U2122 # TRADE MARK SIGN +<Multi_key> <t> <m> : "™" U2122 # TRADE MARK SIGN +<Multi_key> <1> <7> : "⅐" U2150 # VULGAR FRACTION ONE SEVENTH +<Multi_key> <1> <9> : "⅑" U2151 # VULGAR FRACTION ONE NINTH +<Multi_key> <1> <1> <0> : "⅒" U2152 # VULGAR FRACTION ONE TENTH +<Multi_key> <1> <3> : "⅓" U2153 # VULGAR FRACTION ONE THIRD +<Multi_key> <2> <3> : "⅔" U2154 # VULGAR FRACTION TWO THIRDS +<Multi_key> <1> <5> : "⅕" U2155 # VULGAR FRACTION ONE FIFTH +<Multi_key> <2> <5> : "⅖" U2156 # VULGAR FRACTION TWO FIFTHS +<Multi_key> <3> <5> : "⅗" U2157 # VULGAR FRACTION THREE FIFTHS +<Multi_key> <4> <5> : "⅘" U2158 # VULGAR FRACTION FOUR FIFTHS +<Multi_key> <1> <6> : "⅙" U2159 # VULGAR FRACTION ONE SIXTH +<Multi_key> <5> <6> : "⅚" U215A # VULGAR FRACTION FIVE SIXTHS +<Multi_key> <1> <8> : "⅛" U215B # VULGAR FRACTION ONE EIGHTH +<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS +<Multi_key> <5> <8> : "⅝" U215D # VULGAR FRACTION FIVE EIGHTHS +<Multi_key> <7> <8> : "⅞" U215E # VULGAR FRACTION SEVEN EIGHTHS +<Multi_key> <0> <3> : "↉" U2189 # VULGAR FRACTION ZERO THIRDS +<Multi_key> <slash> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE +<Multi_key> <KP_Divide> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE +<Multi_key> <slash> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE +<Multi_key> <KP_Divide> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE +<Multi_key> <slash> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE +<Multi_key> <KP_Divide> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE +<Multi_key> <less> <minus> : "←" U2190 # LEFTWARDS ARROW +<Multi_key> <minus> <greater> : "→" U2192 # RIGHTWARDS ARROW +<Multi_key> <U2203> <U0338> : "∄" U2204 # THERE DOES NOT EXIST +<Multi_key> <braceleft> <braceright> : "∅" U2205 # EMPTY SET +<Multi_key> <U2208> <U0338> : "∉" U2209 # NOT AN ELEMENT OF +<Multi_key> <U220B> <U0338> : "∌" U220C # DOES NOT CONTAIN AS MEMBER +<Multi_key> <U2223> <U0338> : "∤" U2224 # DOES NOT DIVIDE +<Multi_key> <U2225> <U0338> : "∦" U2226 # NOT PARALLEL TO +<Multi_key> <U223C> <U0338> : "≁" U2241 # NOT TILDE +<Multi_key> <U2243> <U0338> : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO +<Multi_key> <approximate> <U0338> : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +<Multi_key> <U2248> <U0338> : "≉" U2249 # NOT ALMOST EQUAL TO +<Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO +<Multi_key> <equal> <slash> : "≠" U2260 # NOT EQUAL TO +<Multi_key> <equal> <U0338> : "≠" U2260 # NOT EQUAL TO +<Multi_key> <KP_Equal> <U0338> : "≠" U2260 # NOT EQUAL TO +<Multi_key> <identical> <U0338> : "≢" U2262 # NOT IDENTICAL TO +<Multi_key> <less> <equal> : "≤" U2264 # LESS-THAN OR EQUAL TO +<Multi_key> <greater> <equal> : "≥" U2265 # GREATER-THAN OR EQUAL TO +<Multi_key> <U224D> <U0338> : "≭" U226D # NOT EQUIVALENT TO +<Multi_key> <less> <U0338> : "≮" U226E # NOT LESS-THAN +<Multi_key> <leftcaret> <U0338> : "≮" U226E # NOT LESS-THAN +<Multi_key> <greater> <U0338> : "≯" U226F # NOT GREATER-THAN +<Multi_key> <rightcaret> <U0338> : "≯" U226F # NOT GREATER-THAN +<Multi_key> <lessthanequal> <U0338> : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO +<Multi_key> <greaterthanequal> <U0338> : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO +<Multi_key> <U2272> <U0338> : "≴" U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO +<Multi_key> <U2273> <U0338> : "≵" U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO +<Multi_key> <U2276> <U0338> : "≸" U2278 # NEITHER LESS-THAN NOR GREATER-THAN +<Multi_key> <U2277> <U0338> : "≹" U2279 # NEITHER GREATER-THAN NOR LESS-THAN +<Multi_key> <U227A> <U0338> : "⊀" U2280 # DOES NOT PRECEDE +<Multi_key> <U227B> <U0338> : "⊁" U2281 # DOES NOT SUCCEED +<Multi_key> <includedin> <U0338> : "⊄" U2284 # NOT A SUBSET OF +<Multi_key> <leftshoe> <U0338> : "⊄" U2284 # NOT A SUBSET OF +<Multi_key> <includes> <U0338> : "⊅" U2285 # NOT A SUPERSET OF +<Multi_key> <rightshoe> <U0338> : "⊅" U2285 # NOT A SUPERSET OF +<Multi_key> <U2286> <U0338> : "⊈" U2288 # NEITHER A SUBSET OF NOR EQUAL TO +<Multi_key> <U2287> <U0338> : "⊉" U2289 # NEITHER A SUPERSET OF NOR EQUAL TO +<Multi_key> <righttack> <U0338> : "⊬" U22AC # DOES NOT PROVE +<Multi_key> <U22A8> <U0338> : "⊭" U22AD # NOT TRUE +<Multi_key> <U22A9> <U0338> : "⊮" U22AE # DOES NOT FORCE +<Multi_key> <U22AB> <U0338> : "⊯" U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +<Multi_key> <U227C> <U0338> : "⋠" U22E0 # DOES NOT PRECEDE OR EQUAL +<Multi_key> <U227D> <U0338> : "⋡" U22E1 # DOES NOT SUCCEED OR EQUAL +<Multi_key> <U2291> <U0338> : "⋢" U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO +<Multi_key> <U2292> <U0338> : "⋣" U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO +<Multi_key> <U22B2> <U0338> : "⋪" U22EA # NOT NORMAL SUBGROUP OF +<Multi_key> <U22B3> <U0338> : "⋫" U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP +<Multi_key> <U22B4> <U0338> : "⋬" U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO +<Multi_key> <U22B5> <U0338> : "⋭" U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +<Multi_key> <d> <i> : "⌀" U2300 # DIAMETER SIGN +<Multi_key> <parenleft> <1> <parenright> : "①" U2460 # CIRCLED DIGIT ONE +<Multi_key> <parenleft> <KP_1> <parenright> : "①" U2460 # CIRCLED DIGIT ONE +<Multi_key> <parenleft> <2> <parenright> : "②" U2461 # CIRCLED DIGIT TWO +<Multi_key> <parenleft> <KP_Space> <parenright> : "②" U2461 # CIRCLED DIGIT TWO +<Multi_key> <parenleft> <KP_2> <parenright> : "②" U2461 # CIRCLED DIGIT TWO +<Multi_key> <parenleft> <3> <parenright> : "③" U2462 # CIRCLED DIGIT THREE +<Multi_key> <parenleft> <KP_3> <parenright> : "③" U2462 # CIRCLED DIGIT THREE +<Multi_key> <parenleft> <4> <parenright> : "④" U2463 # CIRCLED DIGIT FOUR +<Multi_key> <parenleft> <KP_4> <parenright> : "④" U2463 # CIRCLED DIGIT FOUR +<Multi_key> <parenleft> <5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE +<Multi_key> <parenleft> <KP_5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE +<Multi_key> <parenleft> <6> <parenright> : "⑥" U2465 # CIRCLED DIGIT SIX +<Multi_key> <parenleft> <KP_6> <parenright> : "⑥" U2465 # CIRCLED DIGIT SIX +<Multi_key> <parenleft> <7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN +<Multi_key> <parenleft> <KP_7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN +<Multi_key> <parenleft> <8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT +<Multi_key> <parenleft> <KP_8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT +<Multi_key> <parenleft> <9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE +<Multi_key> <parenleft> <KP_9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE +<Multi_key> <parenleft> <1> <0> <parenright> : "⑩" U2469 # CIRCLED NUMBER TEN +<Multi_key> <parenleft> <1> <KP_0> <parenright> : "⑩" U2469 # CIRCLED NUMBER TEN +<Multi_key> <parenleft> <KP_1> <0> <parenright> : "⑩" U2469 # CIRCLED NUMBER TEN +<Multi_key> <parenleft> <KP_1> <KP_0> <parenright> : "⑩" U2469 # CIRCLED NUMBER TEN +<Multi_key> <parenleft> <1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN +<Multi_key> <parenleft> <1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN +<Multi_key> <parenleft> <KP_1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN +<Multi_key> <parenleft> <KP_1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN +<Multi_key> <parenleft> <1> <2> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <1> <KP_Space> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <1> <KP_2> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <KP_1> <2> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <KP_1> <KP_Space> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <KP_1> <KP_2> <parenright> : "⑫" U246B # CIRCLED NUMBER TWELVE +<Multi_key> <parenleft> <1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN +<Multi_key> <parenleft> <1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN +<Multi_key> <parenleft> <KP_1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN +<Multi_key> <parenleft> <KP_1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN +<Multi_key> <parenleft> <1> <4> <parenright> : "⑭" U246D # CIRCLED NUMBER FOURTEEN +<Multi_key> <parenleft> <1> <KP_4> <parenright> : "⑭" U246D # CIRCLED NUMBER FOURTEEN +<Multi_key> <parenleft> <KP_1> <4> <parenright> : "⑭" U246D # CIRCLED NUMBER FOURTEEN +<Multi_key> <parenleft> <KP_1> <KP_4> <parenright> : "⑭" U246D # CIRCLED NUMBER FOURTEEN +<Multi_key> <parenleft> <1> <5> <parenright> : "⑮" U246E # CIRCLED NUMBER FIFTEEN +<Multi_key> <parenleft> <1> <KP_5> <parenright> : "⑮" U246E # CIRCLED NUMBER FIFTEEN +<Multi_key> <parenleft> <KP_1> <5> <parenright> : "⑮" U246E # CIRCLED NUMBER FIFTEEN +<Multi_key> <parenleft> <KP_1> <KP_5> <parenright> : "⑮" U246E # CIRCLED NUMBER FIFTEEN +<Multi_key> <parenleft> <1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN +<Multi_key> <parenleft> <1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN +<Multi_key> <parenleft> <KP_1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN +<Multi_key> <parenleft> <KP_1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN +<Multi_key> <parenleft> <1> <7> <parenright> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN +<Multi_key> <parenleft> <1> <KP_7> <parenright> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN +<Multi_key> <parenleft> <KP_1> <7> <parenright> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN +<Multi_key> <parenleft> <KP_1> <KP_7> <parenright> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN +<Multi_key> <parenleft> <1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN +<Multi_key> <parenleft> <1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN +<Multi_key> <parenleft> <KP_1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN +<Multi_key> <parenleft> <KP_1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN +<Multi_key> <parenleft> <1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN +<Multi_key> <parenleft> <1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN +<Multi_key> <parenleft> <KP_1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN +<Multi_key> <parenleft> <KP_1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN +<Multi_key> <parenleft> <2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <KP_Space> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <KP_Space> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <KP_2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <KP_2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY +<Multi_key> <parenleft> <A> <parenright> : "Ⓐ" U24B6 # CIRCLED LATIN CAPITAL LETTER A +<Multi_key> <parenleft> <B> <parenright> : "Ⓑ" U24B7 # CIRCLED LATIN CAPITAL LETTER B +<Multi_key> <parenleft> <C> <parenright> : "Ⓒ" U24B8 # CIRCLED LATIN CAPITAL LETTER C +<Multi_key> <parenleft> <D> <parenright> : "Ⓓ" U24B9 # CIRCLED LATIN CAPITAL LETTER D +<Multi_key> <parenleft> <E> <parenright> : "Ⓔ" U24BA # CIRCLED LATIN CAPITAL LETTER E +<Multi_key> <parenleft> <F> <parenright> : "Ⓕ" U24BB # CIRCLED LATIN CAPITAL LETTER F +<Multi_key> <parenleft> <G> <parenright> : "Ⓖ" U24BC # CIRCLED LATIN CAPITAL LETTER G +<Multi_key> <parenleft> <H> <parenright> : "Ⓗ" U24BD # CIRCLED LATIN CAPITAL LETTER H +<Multi_key> <parenleft> <I> <parenright> : "Ⓘ" U24BE # CIRCLED LATIN CAPITAL LETTER I +<Multi_key> <parenleft> <J> <parenright> : "Ⓙ" U24BF # CIRCLED LATIN CAPITAL LETTER J +<Multi_key> <parenleft> <K> <parenright> : "Ⓚ" U24C0 # CIRCLED LATIN CAPITAL LETTER K +<Multi_key> <parenleft> <L> <parenright> : "Ⓛ" U24C1 # CIRCLED LATIN CAPITAL LETTER L +<Multi_key> <parenleft> <M> <parenright> : "Ⓜ" U24C2 # CIRCLED LATIN CAPITAL LETTER M +<Multi_key> <parenleft> <N> <parenright> : "Ⓝ" U24C3 # CIRCLED LATIN CAPITAL LETTER N +<Multi_key> <parenleft> <O> <parenright> : "Ⓞ" U24C4 # CIRCLED LATIN CAPITAL LETTER O +<Multi_key> <parenleft> <P> <parenright> : "Ⓟ" U24C5 # CIRCLED LATIN CAPITAL LETTER P +<Multi_key> <parenleft> <Q> <parenright> : "Ⓠ" U24C6 # CIRCLED LATIN CAPITAL LETTER Q +<Multi_key> <parenleft> <R> <parenright> : "Ⓡ" U24C7 # CIRCLED LATIN CAPITAL LETTER R +<Multi_key> <parenleft> <S> <parenright> : "Ⓢ" U24C8 # CIRCLED LATIN CAPITAL LETTER S +<Multi_key> <parenleft> <T> <parenright> : "Ⓣ" U24C9 # CIRCLED LATIN CAPITAL LETTER T +<Multi_key> <parenleft> <U> <parenright> : "Ⓤ" U24CA # CIRCLED LATIN CAPITAL LETTER U +<Multi_key> <parenleft> <V> <parenright> : "Ⓥ" U24CB # CIRCLED LATIN CAPITAL LETTER V +<Multi_key> <parenleft> <W> <parenright> : "Ⓦ" U24CC # CIRCLED LATIN CAPITAL LETTER W +<Multi_key> <parenleft> <X> <parenright> : "Ⓧ" U24CD # CIRCLED LATIN CAPITAL LETTER X +<Multi_key> <parenleft> <Y> <parenright> : "Ⓨ" U24CE # CIRCLED LATIN CAPITAL LETTER Y +<Multi_key> <parenleft> <Z> <parenright> : "Ⓩ" U24CF # CIRCLED LATIN CAPITAL LETTER Z +<Multi_key> <parenleft> <a> <parenright> : "ⓐ" U24D0 # CIRCLED LATIN SMALL LETTER A +<Multi_key> <parenleft> <b> <parenright> : "ⓑ" U24D1 # CIRCLED LATIN SMALL LETTER B +<Multi_key> <parenleft> <c> <parenright> : "ⓒ" U24D2 # CIRCLED LATIN SMALL LETTER C +<Multi_key> <parenleft> <d> <parenright> : "ⓓ" U24D3 # CIRCLED LATIN SMALL LETTER D +<Multi_key> <parenleft> <e> <parenright> : "ⓔ" U24D4 # CIRCLED LATIN SMALL LETTER E +<Multi_key> <parenleft> <f> <parenright> : "ⓕ" U24D5 # CIRCLED LATIN SMALL LETTER F +<Multi_key> <parenleft> <g> <parenright> : "ⓖ" U24D6 # CIRCLED LATIN SMALL LETTER G +<Multi_key> <parenleft> <h> <parenright> : "ⓗ" U24D7 # CIRCLED LATIN SMALL LETTER H +<Multi_key> <parenleft> <i> <parenright> : "ⓘ" U24D8 # CIRCLED LATIN SMALL LETTER I +<Multi_key> <parenleft> <j> <parenright> : "ⓙ" U24D9 # CIRCLED LATIN SMALL LETTER J +<Multi_key> <parenleft> <k> <parenright> : "ⓚ" U24DA # CIRCLED LATIN SMALL LETTER K +<Multi_key> <parenleft> <l> <parenright> : "ⓛ" U24DB # CIRCLED LATIN SMALL LETTER L +<Multi_key> <parenleft> <m> <parenright> : "ⓜ" U24DC # CIRCLED LATIN SMALL LETTER M +<Multi_key> <parenleft> <n> <parenright> : "ⓝ" U24DD # CIRCLED LATIN SMALL LETTER N +<Multi_key> <parenleft> <o> <parenright> : "ⓞ" U24DE # CIRCLED LATIN SMALL LETTER O +<Multi_key> <parenleft> <p> <parenright> : "ⓟ" U24DF # CIRCLED LATIN SMALL LETTER P +<Multi_key> <parenleft> <q> <parenright> : "ⓠ" U24E0 # CIRCLED LATIN SMALL LETTER Q +<Multi_key> <parenleft> <r> <parenright> : "ⓡ" U24E1 # CIRCLED LATIN SMALL LETTER R +<Multi_key> <parenleft> <s> <parenright> : "ⓢ" U24E2 # CIRCLED LATIN SMALL LETTER S +<Multi_key> <parenleft> <t> <parenright> : "ⓣ" U24E3 # CIRCLED LATIN SMALL LETTER T +<Multi_key> <parenleft> <u> <parenright> : "ⓤ" U24E4 # CIRCLED LATIN SMALL LETTER U +<Multi_key> <parenleft> <v> <parenright> : "ⓥ" U24E5 # CIRCLED LATIN SMALL LETTER V +<Multi_key> <parenleft> <w> <parenright> : "ⓦ" U24E6 # CIRCLED LATIN SMALL LETTER W +<Multi_key> <parenleft> <x> <parenright> : "ⓧ" U24E7 # CIRCLED LATIN SMALL LETTER X +<Multi_key> <parenleft> <y> <parenright> : "ⓨ" U24E8 # CIRCLED LATIN SMALL LETTER Y +<Multi_key> <parenleft> <z> <parenright> : "ⓩ" U24E9 # CIRCLED LATIN SMALL LETTER Z +<Multi_key> <parenleft> <0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO +<Multi_key> <parenleft> <KP_0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO +<dead_belowdot> <plus> : "⨥" U2A25 # PLUS SIGN WITH DOT BELOW +<dead_belowtilde> <plus> : "⨦" U2A26 # PLUS SIGN WITH TILDE BELOW +<dead_belowdot> <minus> : "⨪" U2A2A # MINUS SIGN WITH DOT BELOW +<dead_belowdot> <equal> : "⩦" U2A66 # EQUALS SIGN WITH DOT BELOW +<dead_diaeresis> <dead_belowdiaeresis> <equal> : "⩷" U2A77 # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW +<dead_belowdiaeresis> <dead_diaeresis> <equal> : "⩷" U2A77 # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW +<Multi_key> <U2ADD> <U0338> : "⫝̸" U2ADC # FORKING +<dead_belowring> <bar> : "⫰" U2AF0 # VERTICAL LINE WITH CIRCLE BELOW +<dead_voiced_sound> <U304B> : "が" U304C # HIRAGANA LETTER GA +<dead_voiced_sound> <U304D> : "ぎ" U304E # HIRAGANA LETTER GI +<dead_voiced_sound> <U304F> : "ぐ" U3050 # HIRAGANA LETTER GU +<dead_voiced_sound> <U3051> : "げ" U3052 # HIRAGANA LETTER GE +<dead_voiced_sound> <U3053> : "ご" U3054 # HIRAGANA LETTER GO +<dead_voiced_sound> <U3055> : "ざ" U3056 # HIRAGANA LETTER ZA +<dead_voiced_sound> <U3057> : "じ" U3058 # HIRAGANA LETTER ZI +<dead_voiced_sound> <U3059> : "ず" U305A # HIRAGANA LETTER ZU +<dead_voiced_sound> <U305B> : "ぜ" U305C # HIRAGANA LETTER ZE +<dead_voiced_sound> <U305D> : "ぞ" U305E # HIRAGANA LETTER ZO +<dead_voiced_sound> <U305F> : "だ" U3060 # HIRAGANA LETTER DA +<dead_voiced_sound> <U3061> : "ぢ" U3062 # HIRAGANA LETTER DI +<dead_voiced_sound> <U3064> : "づ" U3065 # HIRAGANA LETTER DU +<dead_voiced_sound> <U3066> : "で" U3067 # HIRAGANA LETTER DE +<dead_voiced_sound> <U3068> : "ど" U3069 # HIRAGANA LETTER DO +<dead_voiced_sound> <U306F> : "ば" U3070 # HIRAGANA LETTER BA +<dead_semivoiced_sound> <U306F> : "ぱ" U3071 # HIRAGANA LETTER PA +<dead_voiced_sound> <U3072> : "び" U3073 # HIRAGANA LETTER BI +<dead_semivoiced_sound> <U3072> : "ぴ" U3074 # HIRAGANA LETTER PI +<dead_voiced_sound> <U3075> : "ぶ" U3076 # HIRAGANA LETTER BU +<dead_semivoiced_sound> <U3075> : "ぷ" U3077 # HIRAGANA LETTER PU +<dead_voiced_sound> <U3078> : "べ" U3079 # HIRAGANA LETTER BE +<dead_semivoiced_sound> <U3078> : "ぺ" U307A # HIRAGANA LETTER PE +<dead_voiced_sound> <U307B> : "ぼ" U307C # HIRAGANA LETTER BO +<dead_semivoiced_sound> <U307B> : "ぽ" U307D # HIRAGANA LETTER PO +<dead_voiced_sound> <U3046> : "ゔ" U3094 # HIRAGANA LETTER VU +<dead_voiced_sound> <U309D> : "ゞ" U309E # HIRAGANA VOICED ITERATION MARK +<dead_voiced_sound> <kana_KA> : "ガ" U30AC # KATAKANA LETTER GA +<dead_voiced_sound> <kana_KI> : "ギ" U30AE # KATAKANA LETTER GI +<dead_voiced_sound> <kana_KU> : "グ" U30B0 # KATAKANA LETTER GU +<dead_voiced_sound> <kana_KE> : "ゲ" U30B2 # KATAKANA LETTER GE +<dead_voiced_sound> <kana_KO> : "ゴ" U30B4 # KATAKANA LETTER GO +<dead_voiced_sound> <kana_SA> : "ザ" U30B6 # KATAKANA LETTER ZA +<dead_voiced_sound> <kana_SHI> : "ジ" U30B8 # KATAKANA LETTER ZI +<dead_voiced_sound> <kana_SU> : "ズ" U30BA # KATAKANA LETTER ZU +<dead_voiced_sound> <kana_SE> : "ゼ" U30BC # KATAKANA LETTER ZE +<dead_voiced_sound> <kana_SO> : "ゾ" U30BE # KATAKANA LETTER ZO +<dead_voiced_sound> <kana_TA> : "ダ" U30C0 # KATAKANA LETTER DA +<dead_voiced_sound> <kana_CHI> : "ヂ" U30C2 # KATAKANA LETTER DI +<dead_voiced_sound> <kana_TSU> : "ヅ" U30C5 # KATAKANA LETTER DU +<dead_voiced_sound> <kana_TE> : "デ" U30C7 # KATAKANA LETTER DE +<dead_voiced_sound> <kana_TO> : "ド" U30C9 # KATAKANA LETTER DO +<dead_voiced_sound> <kana_HA> : "バ" U30D0 # KATAKANA LETTER BA +<dead_semivoiced_sound> <kana_HA> : "パ" U30D1 # KATAKANA LETTER PA +<dead_voiced_sound> <kana_HI> : "ビ" U30D3 # KATAKANA LETTER BI +<dead_semivoiced_sound> <kana_HI> : "ピ" U30D4 # KATAKANA LETTER PI +<dead_voiced_sound> <kana_FU> : "ブ" U30D6 # KATAKANA LETTER BU +<dead_semivoiced_sound> <kana_FU> : "プ" U30D7 # KATAKANA LETTER PU +<dead_voiced_sound> <kana_HE> : "ベ" U30D9 # KATAKANA LETTER BE +<dead_semivoiced_sound> <kana_HE> : "ペ" U30DA # KATAKANA LETTER PE +<dead_voiced_sound> <kana_HO> : "ボ" U30DC # KATAKANA LETTER BO +<dead_semivoiced_sound> <kana_HO> : "ポ" U30DD # KATAKANA LETTER PO +<dead_voiced_sound> <kana_U> : "ヴ" U30F4 # KATAKANA LETTER VU +<dead_voiced_sound> <kana_WA> : "ヷ" U30F7 # KATAKANA LETTER VA +<dead_voiced_sound> <U30F0> : "ヸ" U30F8 # KATAKANA LETTER VI +<dead_voiced_sound> <U30F1> : "ヹ" U30F9 # KATAKANA LETTER VE +<dead_voiced_sound> <kana_WO> : "ヺ" U30FA # KATAKANA LETTER VO +<dead_voiced_sound> <U30FD> : "ヾ" U30FE # KATAKANA VOICED ITERATION MARK +<dead_circumflex> <U4E00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK +<Multi_key> <asciicircum> <U4E00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK +<dead_circumflex> <U4E8C> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK +<Multi_key> <asciicircum> <U4E8C> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK +<dead_circumflex> <U4E09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK +<Multi_key> <asciicircum> <U4E09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK +<dead_circumflex> <U56DB> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK +<Multi_key> <asciicircum> <U56DB> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK +<dead_circumflex> <U4E0A> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK +<Multi_key> <asciicircum> <U4E0A> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK +<dead_circumflex> <U4E2D> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK +<Multi_key> <asciicircum> <U4E2D> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK +<dead_circumflex> <U4E0B> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK +<Multi_key> <asciicircum> <U4E0B> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK +<dead_circumflex> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK +<Multi_key> <asciicircum> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK +<dead_circumflex> <U4E59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK +<Multi_key> <asciicircum> <U4E59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK +<dead_circumflex> <U4E19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK +<Multi_key> <asciicircum> <U4E19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK +<dead_circumflex> <U4E01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK +<Multi_key> <asciicircum> <U4E01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK +<dead_circumflex> <U5929> : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK +<Multi_key> <asciicircum> <U5929> : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK +<dead_circumflex> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK +<Multi_key> <asciicircum> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK +<dead_circumflex> <U4EBA> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK +<Multi_key> <asciicircum> <U4EBA> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK +<Multi_key> <parenleft> <2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <KP_Space> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <KP_Space> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <KP_2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <KP_2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE +<Multi_key> <parenleft> <2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_Space> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_Space> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_Space> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <KP_2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO +<Multi_key> <parenleft> <2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <KP_Space> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <KP_Space> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <KP_2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <KP_2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE +<Multi_key> <parenleft> <2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <KP_Space> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <KP_Space> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <KP_2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <KP_2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR +<Multi_key> <parenleft> <2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <KP_Space> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <KP_Space> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <KP_2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <KP_2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE +<Multi_key> <parenleft> <2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <KP_Space> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <KP_Space> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <KP_2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <KP_2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX +<Multi_key> <parenleft> <2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <KP_Space> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <KP_Space> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <KP_2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <KP_2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN +<Multi_key> <parenleft> <2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <KP_Space> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <KP_Space> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <KP_2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <KP_2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT +<Multi_key> <parenleft> <2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <KP_Space> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <KP_Space> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <KP_2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <KP_2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE +<Multi_key> <parenleft> <3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY +<Multi_key> <parenleft> <3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY +<Multi_key> <parenleft> <KP_3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY +<Multi_key> <parenleft> <KP_3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY +<Multi_key> <parenleft> <3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE +<Multi_key> <parenleft> <3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE +<Multi_key> <parenleft> <KP_3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE +<Multi_key> <parenleft> <KP_3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE +<Multi_key> <parenleft> <3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <KP_3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <KP_3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <KP_3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO +<Multi_key> <parenleft> <3> <3> <parenright> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE +<Multi_key> <parenleft> <3> <KP_3> <parenright> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE +<Multi_key> <parenleft> <KP_3> <3> <parenright> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE +<Multi_key> <parenleft> <KP_3> <KP_3> <parenright> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE +<Multi_key> <parenleft> <3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR +<Multi_key> <parenleft> <3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR +<Multi_key> <parenleft> <KP_3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR +<Multi_key> <parenleft> <KP_3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR +<Multi_key> <parenleft> <3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE +<Multi_key> <parenleft> <3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE +<Multi_key> <parenleft> <KP_3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE +<Multi_key> <parenleft> <KP_3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE +<Multi_key> <parenleft> <U1100> <parenright> : "㉠" U3260 # CIRCLED HANGUL KIYEOK +<Multi_key> <parenleft> <U1102> <parenright> : "㉡" U3261 # CIRCLED HANGUL NIEUN +<Multi_key> <parenleft> <U1103> <parenright> : "㉢" U3262 # CIRCLED HANGUL TIKEUT +<Multi_key> <parenleft> <U1105> <parenright> : "㉣" U3263 # CIRCLED HANGUL RIEUL +<Multi_key> <parenleft> <U1106> <parenright> : "㉤" U3264 # CIRCLED HANGUL MIEUM +<Multi_key> <parenleft> <U1107> <parenright> : "㉥" U3265 # CIRCLED HANGUL PIEUP +<Multi_key> <parenleft> <U1109> <parenright> : "㉦" U3266 # CIRCLED HANGUL SIOS +<Multi_key> <parenleft> <U110B> <parenright> : "㉧" U3267 # CIRCLED HANGUL IEUNG +<Multi_key> <parenleft> <U110C> <parenright> : "㉨" U3268 # CIRCLED HANGUL CIEUC +<Multi_key> <parenleft> <U110E> <parenright> : "㉩" U3269 # CIRCLED HANGUL CHIEUCH +<Multi_key> <parenleft> <U110F> <parenright> : "㉪" U326A # CIRCLED HANGUL KHIEUKH +<Multi_key> <parenleft> <U1110> <parenright> : "㉫" U326B # CIRCLED HANGUL THIEUTH +<Multi_key> <parenleft> <U1111> <parenright> : "㉬" U326C # CIRCLED HANGUL PHIEUPH +<Multi_key> <parenleft> <U1112> <parenright> : "㉭" U326D # CIRCLED HANGUL HIEUH +<Multi_key> <parenleft> <U1100> <U1161> <parenright> : "㉮" U326E # CIRCLED HANGUL KIYEOK A +<Multi_key> <parenleft> <U1102> <U1161> <parenright> : "㉯" U326F # CIRCLED HANGUL NIEUN A +<Multi_key> <parenleft> <U1103> <U1161> <parenright> : "㉰" U3270 # CIRCLED HANGUL TIKEUT A +<Multi_key> <parenleft> <U1105> <U1161> <parenright> : "㉱" U3271 # CIRCLED HANGUL RIEUL A +<Multi_key> <parenleft> <U1106> <U1161> <parenright> : "㉲" U3272 # CIRCLED HANGUL MIEUM A +<Multi_key> <parenleft> <U1107> <U1161> <parenright> : "㉳" U3273 # CIRCLED HANGUL PIEUP A +<Multi_key> <parenleft> <U1109> <U1161> <parenright> : "㉴" U3274 # CIRCLED HANGUL SIOS A +<Multi_key> <parenleft> <U110B> <U1161> <parenright> : "㉵" U3275 # CIRCLED HANGUL IEUNG A +<Multi_key> <parenleft> <U110C> <U1161> <parenright> : "㉶" U3276 # CIRCLED HANGUL CIEUC A +<Multi_key> <parenleft> <U110E> <U1161> <parenright> : "㉷" U3277 # CIRCLED HANGUL CHIEUCH A +<Multi_key> <parenleft> <U110F> <U1161> <parenright> : "㉸" U3278 # CIRCLED HANGUL KHIEUKH A +<Multi_key> <parenleft> <U1110> <U1161> <parenright> : "㉹" U3279 # CIRCLED HANGUL THIEUTH A +<Multi_key> <parenleft> <U1111> <U1161> <parenright> : "㉺" U327A # CIRCLED HANGUL PHIEUPH A +<Multi_key> <parenleft> <U1112> <U1161> <parenright> : "㉻" U327B # CIRCLED HANGUL HIEUH A +<Multi_key> <parenleft> <U4E00> <parenright> : "㊀" U3280 # CIRCLED IDEOGRAPH ONE +<Multi_key> <parenleft> <U4E8C> <parenright> : "㊁" U3281 # CIRCLED IDEOGRAPH TWO +<Multi_key> <parenleft> <U4E09> <parenright> : "㊂" U3282 # CIRCLED IDEOGRAPH THREE +<Multi_key> <parenleft> <U56DB> <parenright> : "㊃" U3283 # CIRCLED IDEOGRAPH FOUR +<Multi_key> <parenleft> <U4E94> <parenright> : "㊄" U3284 # CIRCLED IDEOGRAPH FIVE +<Multi_key> <parenleft> <U516D> <parenright> : "㊅" U3285 # CIRCLED IDEOGRAPH SIX +<Multi_key> <parenleft> <U4E03> <parenright> : "㊆" U3286 # CIRCLED IDEOGRAPH SEVEN +<Multi_key> <parenleft> <U516B> <parenright> : "㊇" U3287 # CIRCLED IDEOGRAPH EIGHT +<Multi_key> <parenleft> <U4E5D> <parenright> : "㊈" U3288 # CIRCLED IDEOGRAPH NINE +<Multi_key> <parenleft> <U5341> <parenright> : "㊉" U3289 # CIRCLED IDEOGRAPH TEN +<Multi_key> <parenleft> <U6708> <parenright> : "㊊" U328A # CIRCLED IDEOGRAPH MOON +<Multi_key> <parenleft> <U706B> <parenright> : "㊋" U328B # CIRCLED IDEOGRAPH FIRE +<Multi_key> <parenleft> <U6C34> <parenright> : "㊌" U328C # CIRCLED IDEOGRAPH WATER +<Multi_key> <parenleft> <U6728> <parenright> : "㊍" U328D # CIRCLED IDEOGRAPH WOOD +<Multi_key> <parenleft> <U91D1> <parenright> : "㊎" U328E # CIRCLED IDEOGRAPH METAL +<Multi_key> <parenleft> <U571F> <parenright> : "㊏" U328F # CIRCLED IDEOGRAPH EARTH +<Multi_key> <parenleft> <U65E5> <parenright> : "㊐" U3290 # CIRCLED IDEOGRAPH SUN +<Multi_key> <parenleft> <U682A> <parenright> : "㊑" U3291 # CIRCLED IDEOGRAPH STOCK +<Multi_key> <parenleft> <U6709> <parenright> : "㊒" U3292 # CIRCLED IDEOGRAPH HAVE +<Multi_key> <parenleft> <U793E> <parenright> : "㊓" U3293 # CIRCLED IDEOGRAPH SOCIETY +<Multi_key> <parenleft> <U540D> <parenright> : "㊔" U3294 # CIRCLED IDEOGRAPH NAME +<Multi_key> <parenleft> <U7279> <parenright> : "㊕" U3295 # CIRCLED IDEOGRAPH SPECIAL +<Multi_key> <parenleft> <U8CA1> <parenright> : "㊖" U3296 # CIRCLED IDEOGRAPH FINANCIAL +<Multi_key> <parenleft> <U795D> <parenright> : "㊗" U3297 # CIRCLED IDEOGRAPH CONGRATULATION +<Multi_key> <parenleft> <U52B4> <parenright> : "㊘" U3298 # CIRCLED IDEOGRAPH LABOR +<Multi_key> <parenleft> <U79D8> <parenright> : "㊙" U3299 # CIRCLED IDEOGRAPH SECRET +<Multi_key> <parenleft> <U7537> <parenright> : "㊚" U329A # CIRCLED IDEOGRAPH MALE +<Multi_key> <parenleft> <U5973> <parenright> : "㊛" U329B # CIRCLED IDEOGRAPH FEMALE +<Multi_key> <parenleft> <U9069> <parenright> : "㊜" U329C # CIRCLED IDEOGRAPH SUITABLE +<Multi_key> <parenleft> <U512A> <parenright> : "㊝" U329D # CIRCLED IDEOGRAPH EXCELLENT +<Multi_key> <parenleft> <U5370> <parenright> : "㊞" U329E # CIRCLED IDEOGRAPH PRINT +<Multi_key> <parenleft> <U6CE8> <parenright> : "㊟" U329F # CIRCLED IDEOGRAPH ATTENTION +<Multi_key> <parenleft> <U9805> <parenright> : "㊠" U32A0 # CIRCLED IDEOGRAPH ITEM +<Multi_key> <parenleft> <U4F11> <parenright> : "㊡" U32A1 # CIRCLED IDEOGRAPH REST +<Multi_key> <parenleft> <U5199> <parenright> : "㊢" U32A2 # CIRCLED IDEOGRAPH COPY +<Multi_key> <parenleft> <U6B63> <parenright> : "㊣" U32A3 # CIRCLED IDEOGRAPH CORRECT +<Multi_key> <parenleft> <U4E0A> <parenright> : "㊤" U32A4 # CIRCLED IDEOGRAPH HIGH +<Multi_key> <parenleft> <U4E2D> <parenright> : "㊥" U32A5 # CIRCLED IDEOGRAPH CENTRE +<Multi_key> <parenleft> <U4E0B> <parenright> : "㊦" U32A6 # CIRCLED IDEOGRAPH LOW +<Multi_key> <parenleft> <U5DE6> <parenright> : "㊧" U32A7 # CIRCLED IDEOGRAPH LEFT +<Multi_key> <parenleft> <U53F3> <parenright> : "㊨" U32A8 # CIRCLED IDEOGRAPH RIGHT +<Multi_key> <parenleft> <U533B> <parenright> : "㊩" U32A9 # CIRCLED IDEOGRAPH MEDICINE +<Multi_key> <parenleft> <U5B97> <parenright> : "㊪" U32AA # CIRCLED IDEOGRAPH RELIGION +<Multi_key> <parenleft> <U5B66> <parenright> : "㊫" U32AB # CIRCLED IDEOGRAPH STUDY +<Multi_key> <parenleft> <U76E3> <parenright> : "㊬" U32AC # CIRCLED IDEOGRAPH SUPERVISE +<Multi_key> <parenleft> <U4F01> <parenright> : "㊭" U32AD # CIRCLED IDEOGRAPH ENTERPRISE +<Multi_key> <parenleft> <U8CC7> <parenright> : "㊮" U32AE # CIRCLED IDEOGRAPH RESOURCE +<Multi_key> <parenleft> <U5354> <parenright> : "㊯" U32AF # CIRCLED IDEOGRAPH ALLIANCE +<Multi_key> <parenleft> <U591C> <parenright> : "㊰" U32B0 # CIRCLED IDEOGRAPH NIGHT +<Multi_key> <parenleft> <3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX +<Multi_key> <parenleft> <3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX +<Multi_key> <parenleft> <KP_3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX +<Multi_key> <parenleft> <KP_3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX +<Multi_key> <parenleft> <3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN +<Multi_key> <parenleft> <3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN +<Multi_key> <parenleft> <KP_3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN +<Multi_key> <parenleft> <KP_3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN +<Multi_key> <parenleft> <3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT +<Multi_key> <parenleft> <3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT +<Multi_key> <parenleft> <KP_3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT +<Multi_key> <parenleft> <KP_3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT +<Multi_key> <parenleft> <3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE +<Multi_key> <parenleft> <3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE +<Multi_key> <parenleft> <KP_3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE +<Multi_key> <parenleft> <KP_3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE +<Multi_key> <parenleft> <4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY +<Multi_key> <parenleft> <4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY +<Multi_key> <parenleft> <KP_4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY +<Multi_key> <parenleft> <KP_4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY +<Multi_key> <parenleft> <4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE +<Multi_key> <parenleft> <4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE +<Multi_key> <parenleft> <KP_4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE +<Multi_key> <parenleft> <KP_4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE +<Multi_key> <parenleft> <4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <KP_4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <KP_4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <KP_4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO +<Multi_key> <parenleft> <4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE +<Multi_key> <parenleft> <4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE +<Multi_key> <parenleft> <KP_4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE +<Multi_key> <parenleft> <KP_4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE +<Multi_key> <parenleft> <4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR +<Multi_key> <parenleft> <4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR +<Multi_key> <parenleft> <KP_4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR +<Multi_key> <parenleft> <KP_4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR +<Multi_key> <parenleft> <4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE +<Multi_key> <parenleft> <4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE +<Multi_key> <parenleft> <KP_4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE +<Multi_key> <parenleft> <KP_4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE +<Multi_key> <parenleft> <4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX +<Multi_key> <parenleft> <4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX +<Multi_key> <parenleft> <KP_4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX +<Multi_key> <parenleft> <KP_4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX +<Multi_key> <parenleft> <4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN +<Multi_key> <parenleft> <4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN +<Multi_key> <parenleft> <KP_4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN +<Multi_key> <parenleft> <KP_4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN +<Multi_key> <parenleft> <4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT +<Multi_key> <parenleft> <4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT +<Multi_key> <parenleft> <KP_4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT +<Multi_key> <parenleft> <KP_4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT +<Multi_key> <parenleft> <4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE +<Multi_key> <parenleft> <4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE +<Multi_key> <parenleft> <KP_4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE +<Multi_key> <parenleft> <KP_4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE +<Multi_key> <parenleft> <5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY +<Multi_key> <parenleft> <5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY +<Multi_key> <parenleft> <KP_5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY +<Multi_key> <parenleft> <KP_5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY +<Multi_key> <parenleft> <kana_A> <parenright> : "㋐" U32D0 # CIRCLED KATAKANA A +<Multi_key> <parenleft> <kana_I> <parenright> : "㋑" U32D1 # CIRCLED KATAKANA I +<Multi_key> <parenleft> <kana_U> <parenright> : "㋒" U32D2 # CIRCLED KATAKANA U +<Multi_key> <parenleft> <kana_E> <parenright> : "㋓" U32D3 # CIRCLED KATAKANA E +<Multi_key> <parenleft> <kana_O> <parenright> : "㋔" U32D4 # CIRCLED KATAKANA O +<Multi_key> <parenleft> <kana_KA> <parenright> : "㋕" U32D5 # CIRCLED KATAKANA KA +<Multi_key> <parenleft> <kana_KI> <parenright> : "㋖" U32D6 # CIRCLED KATAKANA KI +<Multi_key> <parenleft> <kana_KU> <parenright> : "㋗" U32D7 # CIRCLED KATAKANA KU +<Multi_key> <parenleft> <kana_KE> <parenright> : "㋘" U32D8 # CIRCLED KATAKANA KE +<Multi_key> <parenleft> <kana_KO> <parenright> : "㋙" U32D9 # CIRCLED KATAKANA KO +<Multi_key> <parenleft> <kana_SA> <parenright> : "㋚" U32DA # CIRCLED KATAKANA SA +<Multi_key> <parenleft> <kana_SHI> <parenright> : "㋛" U32DB # CIRCLED KATAKANA SI +<Multi_key> <parenleft> <kana_SU> <parenright> : "㋜" U32DC # CIRCLED KATAKANA SU +<Multi_key> <parenleft> <kana_SE> <parenright> : "㋝" U32DD # CIRCLED KATAKANA SE +<Multi_key> <parenleft> <kana_SO> <parenright> : "㋞" U32DE # CIRCLED KATAKANA SO +<Multi_key> <parenleft> <kana_TA> <parenright> : "㋟" U32DF # CIRCLED KATAKANA TA +<Multi_key> <parenleft> <kana_CHI> <parenright> : "㋠" U32E0 # CIRCLED KATAKANA TI +<Multi_key> <parenleft> <kana_TSU> <parenright> : "㋡" U32E1 # CIRCLED KATAKANA TU +<Multi_key> <parenleft> <kana_TE> <parenright> : "㋢" U32E2 # CIRCLED KATAKANA TE +<Multi_key> <parenleft> <kana_TO> <parenright> : "㋣" U32E3 # CIRCLED KATAKANA TO +<Multi_key> <parenleft> <kana_NA> <parenright> : "㋤" U32E4 # CIRCLED KATAKANA NA +<Multi_key> <parenleft> <kana_NI> <parenright> : "㋥" U32E5 # CIRCLED KATAKANA NI +<Multi_key> <parenleft> <kana_NU> <parenright> : "㋦" U32E6 # CIRCLED KATAKANA NU +<Multi_key> <parenleft> <kana_NE> <parenright> : "㋧" U32E7 # CIRCLED KATAKANA NE +<Multi_key> <parenleft> <kana_NO> <parenright> : "㋨" U32E8 # CIRCLED KATAKANA NO +<Multi_key> <parenleft> <kana_HA> <parenright> : "㋩" U32E9 # CIRCLED KATAKANA HA +<Multi_key> <parenleft> <kana_HI> <parenright> : "㋪" U32EA # CIRCLED KATAKANA HI +<Multi_key> <parenleft> <kana_FU> <parenright> : "㋫" U32EB # CIRCLED KATAKANA HU +<Multi_key> <parenleft> <kana_HE> <parenright> : "㋬" U32EC # CIRCLED KATAKANA HE +<Multi_key> <parenleft> <kana_HO> <parenright> : "㋭" U32ED # CIRCLED KATAKANA HO +<Multi_key> <parenleft> <kana_MA> <parenright> : "㋮" U32EE # CIRCLED KATAKANA MA +<Multi_key> <parenleft> <kana_MI> <parenright> : "㋯" U32EF # CIRCLED KATAKANA MI +<Multi_key> <parenleft> <kana_MU> <parenright> : "㋰" U32F0 # CIRCLED KATAKANA MU +<Multi_key> <parenleft> <kana_ME> <parenright> : "㋱" U32F1 # CIRCLED KATAKANA ME +<Multi_key> <parenleft> <kana_MO> <parenright> : "㋲" U32F2 # CIRCLED KATAKANA MO +<Multi_key> <parenleft> <kana_YA> <parenright> : "㋳" U32F3 # CIRCLED KATAKANA YA +<Multi_key> <parenleft> <kana_YU> <parenright> : "㋴" U32F4 # CIRCLED KATAKANA YU +<Multi_key> <parenleft> <kana_YO> <parenright> : "㋵" U32F5 # CIRCLED KATAKANA YO +<Multi_key> <parenleft> <kana_RA> <parenright> : "㋶" U32F6 # CIRCLED KATAKANA RA +<Multi_key> <parenleft> <kana_RI> <parenright> : "㋷" U32F7 # CIRCLED KATAKANA RI +<Multi_key> <parenleft> <kana_RU> <parenright> : "㋸" U32F8 # CIRCLED KATAKANA RU +<Multi_key> <parenleft> <kana_RE> <parenright> : "㋹" U32F9 # CIRCLED KATAKANA RE +<Multi_key> <parenleft> <kana_RO> <parenright> : "㋺" U32FA # CIRCLED KATAKANA RO +<Multi_key> <parenleft> <kana_WA> <parenright> : "㋻" U32FB # CIRCLED KATAKANA WA +<Multi_key> <parenleft> <U30F0> <parenright> : "㋼" U32FC # CIRCLED KATAKANA WI +<Multi_key> <parenleft> <U30F1> <parenright> : "㋽" U32FD # CIRCLED KATAKANA WE +<Multi_key> <parenleft> <kana_WO> <parenright> : "㋾" U32FE # CIRCLED KATAKANA WO +<Multi_key> <U05B4> <hebrew_yod> : "יִ" UFB1D # HEBREW LETTER YOD WITH HIRIQ +<Multi_key> <U05B7> <U05F2> : "ײַ" UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH +<Multi_key> <U05C1> <hebrew_shin> : "שׁ" UFB2A # HEBREW LETTER SHIN WITH SHIN DOT +<Multi_key> <U05C2> <hebrew_shin> : "שׂ" UFB2B # HEBREW LETTER SHIN WITH SIN DOT +<Multi_key> <U05C1> <UFB49> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT +<Multi_key> <U05C1> <U05BC> <hebrew_shin> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT +<Multi_key> <U05C2> <UFB49> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT +<Multi_key> <U05C2> <U05BC> <hebrew_shin> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT +<Multi_key> <U05B7> <hebrew_aleph> : "אַ" UFB2E # HEBREW LETTER ALEF WITH PATAH +<Multi_key> <U05B8> <hebrew_aleph> : "אָ" UFB2F # HEBREW LETTER ALEF WITH QAMATS +<Multi_key> <U05BC> <hebrew_aleph> : "אּ" UFB30 # HEBREW LETTER ALEF WITH MAPIQ +<Multi_key> <U05BC> <hebrew_bet> : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH +<Multi_key> <U05BC> <hebrew_gimel> : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH +<Multi_key> <U05BC> <hebrew_dalet> : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH +<Multi_key> <U05BC> <hebrew_he> : "הּ" UFB34 # HEBREW LETTER HE WITH MAPIQ +<Multi_key> <U05BC> <hebrew_waw> : "וּ" UFB35 # HEBREW LETTER VAV WITH DAGESH +<Multi_key> <U05BC> <hebrew_zain> : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH +<Multi_key> <U05BC> <hebrew_tet> : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH +<Multi_key> <U05BC> <hebrew_yod> : "יּ" UFB39 # HEBREW LETTER YOD WITH DAGESH +<Multi_key> <U05BC> <hebrew_finalkaph> : "ךּ" UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH +<Multi_key> <U05BC> <hebrew_kaph> : "כּ" UFB3B # HEBREW LETTER KAF WITH DAGESH +<Multi_key> <U05BC> <hebrew_lamed> : "לּ" UFB3C # HEBREW LETTER LAMED WITH DAGESH +<Multi_key> <U05BC> <hebrew_mem> : "מּ" UFB3E # HEBREW LETTER MEM WITH DAGESH +<Multi_key> <U05BC> <hebrew_nun> : "נּ" UFB40 # HEBREW LETTER NUN WITH DAGESH +<Multi_key> <U05BC> <hebrew_samech> : "סּ" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH +<Multi_key> <U05BC> <hebrew_finalpe> : "ףּ" UFB43 # HEBREW LETTER FINAL PE WITH DAGESH +<Multi_key> <U05BC> <hebrew_pe> : "פּ" UFB44 # HEBREW LETTER PE WITH DAGESH +<Multi_key> <U05BC> <hebrew_zade> : "צּ" UFB46 # HEBREW LETTER TSADI WITH DAGESH +<Multi_key> <U05BC> <hebrew_qoph> : "קּ" UFB47 # HEBREW LETTER QOF WITH DAGESH +<Multi_key> <U05BC> <hebrew_resh> : "רּ" UFB48 # HEBREW LETTER RESH WITH DAGESH +<Multi_key> <U05BC> <hebrew_shin> : "שּ" UFB49 # HEBREW LETTER SHIN WITH DAGESH +<Multi_key> <U05BC> <hebrew_taw> : "תּ" UFB4A # HEBREW LETTER TAV WITH DAGESH +<Multi_key> <U05B9> <hebrew_waw> : "וֹ" UFB4B # HEBREW LETTER VAV WITH HOLAM +<Multi_key> <U05BF> <hebrew_bet> : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE +<Multi_key> <U05BF> <hebrew_kaph> : "כֿ" UFB4D # HEBREW LETTER KAF WITH RAFE +<Multi_key> <U05BF> <hebrew_pe> : "פֿ" UFB4E # HEBREW LETTER PE WITH RAFE +<Multi_key> <U1D157> <U1D165> : "𝅗𝅥" U1D15E # MUSICAL SYMBOL HALF NOTE +<Multi_key> <U1D158> <U1D165> : "𝅘𝅥" U1D15F # MUSICAL SYMBOL QUARTER NOTE +<Multi_key> <U1D15F> <U1D16E> : "𝅘𝅥𝅮" U1D160 # MUSICAL SYMBOL EIGHTH NOTE + +<Multi_key> <U1D15F> <U1D16F> : "𝅘𝅥𝅯" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE + +<Multi_key> <U1D15F> <U1D170> : "𝅘𝅥𝅰" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE + +<Multi_key> <U1D15F> <U1D171> : "𝅘𝅥𝅱" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE + +<Multi_key> <U1D15F> <U1D172> : "𝅘𝅥𝅲" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + +<Multi_key> <U1D1B9> <U1D165> : "𝆹𝅥" U1D1BB # MUSICAL SYMBOL MINIMA +<Multi_key> <U1D1BA> <U1D165> : "𝆺𝅥" U1D1BC # MUSICAL SYMBOL MINIMA BLACK +<Multi_key> <U1D1BB> <U1D16E> : "𝆹𝅥𝅮" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE + +<Multi_key> <U1D1BC> <U1D16E> : "𝆺𝅥𝅮" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK + +<Multi_key> <U1D1BB> <U1D16F> : "𝆹𝅥𝅯" U1D1BF # MUSICAL SYMBOL FUSA WHITE + +<Multi_key> <U1D1BC> <U1D16F> : "𝆺𝅥𝅯" U1D1C0 # MUSICAL SYMBOL FUSA BLACK + + +# +# Khmer digraphs +# + +<U17ff> : "ាំ" +<U17fe> : "ោះ" +<U17fd> : "េះ" +<U17fc> : "ុំ" +<U17fb> : "ុះ" + +# +# Arabic Lam-Alef ligatures +# + +<UFEFB> : "لا" # ARABIC LIGATURE LAM WITH ALEF +<UFEF7> : "لأ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE +<UFEF9> : "لإ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW +<UFEF5> : "لآ" # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE + +# +# French-Dvorak Bépo compositions +# + +<dead_abovedot> <Amacron> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<dead_abovedot> <amacron> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<dead_abovedot> <j> : "ȷ" U0237 # LATIN SMALL LETTER DOTLESS J +<dead_abovedot> <L> : "Ŀ" U013F # LATIN CAPITAL LETTER L WITH MIDDLE DOT +<dead_abovedot> <l> : "ŀ" U0140 # LATIN SMALL LETTER L WITH MIDDLE DOT +<dead_abovedot> <Omacron> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<dead_abovedot> <omacron> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<dead_abovedot> <nobreakspace> : "̇" U0307 # COMBINING DOT ABOVE +<dead_acute> <Sabovedot> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_acute> <sabovedot> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_acute> <V> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <v> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_acute> <nobreakspace> : "́" U0301 # COMBINING ACUTE ACCENT +<dead_belowdot> <Sabovedot> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_belowdot> <sabovedot> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_belowdot> <dead_belowdot> : "̣" U0323 # COMBINING DOT BELOW +<dead_belowdot> <nobreakspace> : "̣" U0323 # COMBINING DOT BELOW +<dead_belowdot> <space> : "̣" U0323 # COMBINING DOT BELOW +<dead_breve> <Aacute> : "Ắ" Abreveacute # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_breve> <Agrave> : "Ằ" Abrevegrave # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_breve> <Ahook> : "Ẳ" Abrevehook # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_breve> <Atilde> : "Ẵ" Abrevetilde # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_breve> <aacute> : "ắ" abreveacute # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_breve> <agrave> : "ằ" abrevegrave # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_breve> <ahook> : "ẳ" abrevehook # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_breve> <atilde> : "ẵ" abrevetilde # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_breve> <nobreakspace> : "̆" U0306 # COMBINING BREVE +<dead_caron> <parenleft> : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS +<dead_caron> <parenright> : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS +<dead_caron> <plus> : "₊" U208A # SUBSCRIPT PLUS SIGN +<dead_caron> <minus> : "₋" U208B # SUBSCRIPT MINUS +<dead_caron> <0> : "₀" zerosubscript # SUBSCRIPT ZERO +<dead_caron> <1> : "₁" onesubscript # SUBSCRIPT ONE +<dead_caron> <2> : "₂" twosubscript # SUBSCRIPT TWO +<dead_caron> <3> : "₃" threesubscript # SUBSCRIPT THREE +<dead_caron> <4> : "₄" foursubscript # SUBSCRIPT FOUR +<dead_caron> <5> : "₅" fivesubscript # SUBSCRIPT FIVE +<dead_caron> <6> : "₆" sixsubscript # SUBSCRIPT SIX +<dead_caron> <7> : "₇" sevensubscript # SUBSCRIPT SEVEN +<dead_caron> <8> : "₈" eightsubscript # SUBSCRIPT EIGHT +<dead_caron> <9> : "₉" ninesubscript # SUBSCRIPT NINE +<dead_caron> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN +<dead_caron> <U01F2> : "Dž" U01C5 # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +<dead_caron> <Sabovedot> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<dead_caron> <sabovedot> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<dead_caron> <V> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <v> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_caron> <nobreakspace> : "̌" U030C # COMBINING CARON +<dead_cedilla> <Cacute> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_cedilla> <ColonSign> : "₵" U20B5 # CEDI SIGN +<dead_cedilla> <cacute> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_cedilla> <cent> : "₵" U20B5 # CEDI SIGN +<dead_cedilla> <U0114> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_cedilla> <U0115> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_cedilla> <nobreakspace> : "̧" U0327 # COMBINING CEDILLA +<dead_circumflex> <minus> : "⁻" U207B # SUPERSCRIPT MINUS +<dead_circumflex> <Aacute> : "Ấ" Acircumflexacute # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <Agrave> : "Ầ" Acircumflexgrave # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <Ahook> : "Ẩ" Acircumflexhook # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <Atilde> : "Ẫ" Acircumflextilde # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <aacute> : "ấ" acircumflexacute # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <agrave> : "ầ" acircumflexgrave # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <ahook> : "ẩ" acircumflexhook # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <atilde> : "ẫ" acircumflextilde # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <Eacute> : "Ế" Ecircumflexacute # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <Egrave> : "Ề" Ecircumflexgrave # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <Ehook> : "Ể" Ecircumflexhook # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <Etilde> : "Ễ" Ecircumflextilde # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <eacute> : "ế" ecircumflexacute # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <egrave> : "ề" ecircumflexgrave # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <ehook> : "ể" ecircumflexhook # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <etilde> : "ễ" ecircumflextilde # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <Oacute> : "Ố" Ocircumflexacute # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <Ograve> : "Ồ" Ocircumflexgrave # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <Ohook> : "Ổ" Ocircumflexhook # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <Otilde> : "Ỗ" Ocircumflextilde # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <oacute> : "ố" ocircumflexacute # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <ograve> : "ồ" ocircumflexgrave # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <ohook> : "ổ" ocircumflexhook # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <otilde> : "ỗ" ocircumflextilde # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <nobreakspace> : "̂" U0302 # COMBINING CIRCUMFLEX ACCENT +<dead_belowcomma> <S> : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW +<dead_belowcomma> <s> : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW +<dead_belowcomma> <T> : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW +<dead_belowcomma> <t> : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW +<dead_belowcomma> <dead_belowcomma> : "," comma # COMMA +<dead_belowcomma> <nobreakspace> : "̦" U0326 # COMBINING COMMA BELOW +<dead_belowcomma> <space> : "," comma # COMMA +<dead_currency> <A> : "₳" U20B3 # AUSTRAL SIGN +<dead_currency> <a> : "؋" U060B # AFGHANI SIGN +<dead_currency> <B> : "₱" U20B1 # PESO SIGN +<dead_currency> <b> : "฿" Thai_baht # THAI CURRENCY SYMBOL BAHT +<dead_currency> <Ccedilla> : "₵" U20B5 # CEDI SIGN +<dead_currency> <C> : "₡" ColonSign # COLON SIGN +<dead_currency> <ccedilla> : "₵" U20B5 # CEDI SIGN +<dead_currency> <c> : "¢" cent # CENT SIGN +<dead_currency> <D> : "₯" U20AF # DRACHMA SIGN +<dead_currency> <d> : "₫" DongSign # DONG SIGN +<dead_currency> <E> : "₠" EcuSign # EURO-CURRENCY SIGN +<dead_currency> <e> : "€" EuroSign # EURO SIGN +<dead_currency> <F> : "₣" FFrancSign # FRENCH FRANC SIGN +<dead_currency> <f> : "ƒ" function # LATIN SMALL LETTER F WITH HOOK +<dead_currency> <G> : "₲" U20B2 # GUARANI SIGN +<dead_currency> <g> : "₲" U20B2 # GUARANI SIGN +<dead_currency> <H> : "₴" U20B4 # HRYVNIA SIGN +<dead_currency> <h> : "₴" U20B4 # HRYVNIA SIGN +<dead_currency> <I> : "៛" U17DB # KHMER CURRENCY SYMBOL RIEL +<dead_currency> <i> : "﷼" UFDFC # RIAL SIGN +<dead_currency> <K> : "₭" U20AD # KIP SIGN +<dead_currency> <k> : "₭" U20AD # KIP SIGN +<dead_currency> <L> : "₤" LiraSign # LIRA SIGN +<dead_currency> <l> : "£" sterling # POUND SIGN +<dead_currency> <M> : "ℳ" U2133 # SCRIPT CAPITAL M +<dead_currency> <m> : "₥" MillSign # MILL SIGN +<dead_currency> <N> : "₦" NairaSign # NAIRA SIGN +<dead_currency> <n> : "₦" NairaSign # NAIRA SIGN +<dead_currency> <O> : "૱" U0AF1 # GUJARATI RUPEE SIGN +<dead_currency> <o> : "௹" U0BF9 # TAMIL RUPEE SIGN +<dead_currency> <P> : "₧" PesetaSign # PESETA SIGN +<dead_currency> <p> : "₰" U20B0 # GERMAN PENNY SIGN +<dead_currency> <r> : "₢" CruzeiroSign # CRUZEIRO SIGN +<dead_currency> <R> : "₨" RupeeSign # RUPEE SIGN +<dead_currency> <S> : "$" dollar # DOLLAR SIGN +<dead_currency> <s> : "₪" NewSheqelSign # NEW SHEQEL SIGN +<dead_currency> <T> : "₮" U20AE # TUGRIK SIGN +<dead_currency> <t> : "৳" U09F3 # BENGALI RUPEE SIGN +<dead_currency> <THORN> : "৲" U09F2 # BENGALI RUPEE MARK +<dead_currency> <thorn> : "৲" U09F2 # BENGALI RUPEE MARK +<dead_currency> <U> : "圓" U5713 # YUAN / WEN +<dead_currency> <u> : "元" U5143 # YUAN / WEN +<dead_currency> <W> : "₩" WonSign # WON SIGN +<dead_currency> <w> : "₩" WonSign # WON SIGN +<dead_currency> <Y> : "円" U5186 # YEN +<dead_currency> <y> : "¥" yen # YEN SIGN +<dead_currency> <dead_currency> : "¤" currency # CURRENCY SIGN +<dead_currency> <nobreakspace> : "¤" currency # CURRENCY SIGN +<dead_currency> <space> : "¤" currency # CURRENCY SIGN +<dead_diaeresis> <Amacron> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<dead_diaeresis> <amacron> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<dead_diaeresis> <Iacute> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<dead_diaeresis> <iacute> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<dead_diaeresis> <Omacron> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<dead_diaeresis> <omacron> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<dead_diaeresis> <Uacute> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_diaeresis> <U01D3> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_diaeresis> <Ugrave> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_diaeresis> <uacute> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_diaeresis> <U01D4> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_diaeresis> <ugrave> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_diaeresis> <nobreakspace> : "̈" U0308 # COMBINING DIAERESIS +<dead_doubleacute> <nobreakspace> : "̋" U030B # COMBINING DOUBLE ACUTE ACCENT +<dead_grave> <V> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <v> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_grave> <nobreakspace> : "̀" U0300 # COMBINING GRAVE ACCENT +<dead_greek> <A> : "Α" U0391 # GREEK CAPITAL LETTER ALPHA +<dead_greek> <a> : "α" U03B1 # GREEK SMALL LETTER ALPHA +<dead_greek> <B> : "Β" U0392 # GREEK CAPITAL LETTER BETA +<dead_greek> <b> : "β" U03B2 # GREEK SMALL LETTER BETA +<dead_greek> <D> : "Δ" U0394 # GREEK CAPITAL LETTER DELTA +<dead_greek> <d> : "δ" U03B4 # GREEK SMALL LETTER DELTA +<dead_greek> <E> : "Ε" U0395 # GREEK CAPITAL LETTER EPSILON +<dead_greek> <e> : "ε" U03B5 # GREEK SMALL LETTER EPSILON +<dead_greek> <F> : "Φ" U03A6 # GREEK CAPITAL LETTER PHI +<dead_greek> <f> : "φ" U03C6 # GREEK SMALL LETTER PHI +<dead_greek> <G> : "Γ" U0393 # GREEK CAPITAL LETTER GAMMA +<dead_greek> <g> : "γ" U03B3 # GREEK SMALL LETTER GAMMA +<dead_greek> <H> : "Η" U0397 # GREEK CAPITAL LETTER ETA +<dead_greek> <h> : "η" U03B7 # GREEK SMALL LETTER ETA +<dead_greek> <I> : "Ι" U0399 # GREEK CAPITAL LETTER IOTA +<dead_greek> <i> : "ι" U03B9 # GREEK SMALL LETTER IOTA +<dead_greek> <J> : "Θ" U0398 # GREEK CAPITAL LETTER THETA +<dead_greek> <j> : "θ" U03B8 # GREEK SMALL LETTER THETA +<dead_greek> <K> : "Κ" U039A # GREEK CAPITAL LETTER KAPPA +<dead_greek> <k> : "κ" U03BA # GREEK SMALL LETTER KAPPA +<dead_greek> <L> : "Λ" U039B # GREEK CAPITAL LETTER LAMDA +<dead_greek> <l> : "λ" U03BB # GREEK SMALL LETTER LAMDA +<dead_greek> <M> : "Μ" U039C # GREEK CAPITAL LETTER MU +<dead_greek> <m> : "μ" U03BC # GREEK SMALL LETTER MU +<dead_greek> <N> : "Ν" U039D # GREEK CAPITAL LETTER NU +<dead_greek> <n> : "ν" U03BD # GREEK SMALL LETTER NU +<dead_greek> <O> : "Ο" U039F # GREEK CAPITAL LETTER OMICRON +<dead_greek> <o> : "ο" U03BF # GREEK SMALL LETTER OMICRON +<dead_greek> <P> : "Π" U03A0 # GREEK CAPITAL LETTER PI +<dead_greek> <p> : "π" U03C0 # GREEK SMALL LETTER PI +<dead_greek> <Q> : "Χ" U03A7 # GREEK CAPITAL LETTER CHI +<dead_greek> <q> : "χ" U03C7 # GREEK SMALL LETTER CHI +<dead_greek> <R> : "Ρ" U03A1 # GREEK CAPITAL LETTER RHO +<dead_greek> <r> : "ρ" U03C1 # GREEK SMALL LETTER RHO +<dead_greek> <S> : "Σ" U03A3 # GREEK CAPITAL LETTER SIGMA +<dead_greek> <s> : "σ" U03C3 # GREEK SMALL LETTER SIGMA +<dead_greek> <T> : "Τ" U03A4 # GREEK CAPITAL LETTER TAU +<dead_greek> <t> : "τ" U03C4 # GREEK SMALL LETTER TAU +<dead_greek> <U> : "Υ" U03A5 # GREEK CAPITAL LETTER UPSILON +<dead_greek> <u> : "υ" U03C5 # GREEK SMALL LETTER UPSILON +<dead_greek> <W> : "Ω" U03A9 # GREEK CAPITAL LETTER OMEGA +<dead_greek> <w> : "ω" U03C9 # GREEK SMALL LETTER OMEGA +<dead_greek> <X> : "Ξ" U039E # GREEK CAPITAL LETTER XI +<dead_greek> <x> : "ξ" U03BE # GREEK SMALL LETTER XI +<dead_greek> <Y> : "Ψ" U03A8 # GREEK CAPITAL LETTER PSI +<dead_greek> <y> : "ψ" U03C8 # GREEK SMALL LETTER PSI +<dead_greek> <Z> : "Ζ" U0396 # GREEK CAPITAL LETTER ZETA +<dead_greek> <z> : "ζ" U03B6 # GREEK SMALL LETTER ZETA +<dead_greek> <dead_greek> : "µ" U00B5 # MICRO SIGN +<dead_greek> <nobreakspace> : "µ" U00B5 # MICRO SIGN +<dead_greek> <space> : "µ" U00B5 # MICRO SIGN +<dead_hook> <B> : "Ɓ" U0181 # LATIN CAPITAL LETTER B WITH HOOK +<dead_hook> <b> : "ɓ" U0253 # LATIN SMALL LETTER B WITH HOOK +<dead_hook> <C> : "Ƈ" U0187 # LATIN CAPITAL LETTER C WITH HOOK +<dead_hook> <c> : "ƈ" U0188 # LATIN SMALL LETTER C WITH HOOK +<dead_hook> <D> : "Ɗ" U018A # LATIN CAPITAL LETTER D WITH HOOK +<dead_hook> <d> : "ɗ" U0257 # LATIN SMALL LETTER D WITH HOOK +<dead_hook> <U0256> : "ᶑ" U1D91 # LATIN SMALL LETTER D WITH HOOK AND TAIL +<dead_hook> <F> : "Ƒ" U0191 # LATIN CAPITAL LETTER F WITH HOOK +<dead_hook> <f> : "ƒ" function # LATIN SMALL LETTER F WITH HOOK +<dead_hook> <G> : "Ɠ" U0193 # LATIN CAPITAL LETTER G WITH HOOK +<dead_hook> <g> : "ɠ" U0260 # LATIN SMALL LETTER G WITH HOOK +<dead_hook> <h> : "ɦ" U0266 # LATIN SMALL LETTER H WITH HOOK +<dead_hook> <U025F> : "ʄ" U0284 # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK +<dead_hook> <K> : "Ƙ" U0198 # LATIN CAPITAL LETTER K WITH HOOK +<dead_hook> <k> : "ƙ" U0199 # LATIN SMALL LETTER K WITH HOOK +<dead_hook> <M> : "Ɱ" U2C6E # LATIN CAPITAL LETTER M WITH HOOK +<dead_hook> <m> : "ɱ" U0271 # LATIN SMALL LETTER M WITH HOOK +<dead_hook> <N> : "Ɲ" U019D # LATIN CAPITAL LETTER N WITH LEFT HOOK +<dead_hook> <n> : "ɲ" U0272 # LATIN SMALL LETTER N WITH LEFT HOOK +<dead_hook> <P> : "Ƥ" U01A4 # LATIN CAPITAL LETTER P WITH HOOK +<dead_hook> <p> : "ƥ" U01A5 # LATIN SMALL LETTER P WITH HOOK +<dead_hook> <q> : "ʠ" U02A0 # LATIN SMALL LETTER Q WITH HOOK +<dead_hook> <U025C> : "ɝ" U025D # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK +<dead_hook> <r> : "ɼ" U027C # LATIN SMALL LETTER R WITH LONG LEG +<dead_hook> <s> : "ʂ" U0282 # LATIN SMALL LETTER S WITH HOOK +<dead_hook> <schwa> : "ɚ" U025A # LATIN SMALL LETTER SCHWA WITH HOOK +<dead_hook> <T> : "Ƭ" U01AC # LATIN CAPITAL LETTER T WITH HOOK +<dead_hook> <t> : "ƭ" U01AD # LATIN SMALL LETTER T WITH HOOK +<dead_hook> <U0279> : "ɻ" U027B # LATIN SMALL LETTER TURNED R WITH HOOK +<dead_hook> <V> : "Ʋ" U01B2 # LATIN CAPITAL LETTER V WITH HOOK +<dead_hook> <v> : "ʋ" U028B # LATIN SMALL LETTER V WITH HOOK +<dead_hook> <W> : "Ⱳ" U2C72 # LATIN CAPITAL LETTER W WITH HOOK +<dead_hook> <w> : "ⱳ" U2C73 # LATIN SMALL LETTER W WITH HOOK +<dead_hook> <Z> : "Ȥ" U0224 # LATIN CAPITAL LETTER Z WITH HOOK +<dead_hook> <z> : "ȥ" U0225 # LATIN SMALL LETTER Z WITH HOOK +<dead_hook> <dead_hook> : "̉" U0309 # COMBINING HOOK ABOVE +<dead_hook> <nobreakspace> : "̉" U0309 # COMBINING HOOK ABOVE +<dead_hook> <space> : "̉" U0309 # COMBINING HOOK ABOVE +<dead_horn> <Oacute> : "Ớ" Ohornacute # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<dead_horn> <Obelowdot> : "Ợ" Ohornbelowdot # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<dead_horn> <Ograve> : "Ờ" Ohorngrave # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<dead_horn> <Ohook> : "Ở" Ohornhook # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<dead_horn> <Otilde> : "Ỡ" Ohorntilde # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<dead_horn> <oacute> : "ớ" ohornacute # LATIN SMALL LETTER O WITH HORN AND ACUTE +<dead_horn> <obelowdot> : "ợ" ohornbelowdot # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<dead_horn> <ograve> : "ờ" ohorngrave # LATIN SMALL LETTER O WITH HORN AND GRAVE +<dead_horn> <ohook> : "ở" ohornhook # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<dead_horn> <otilde> : "ỡ" ohorntilde # LATIN SMALL LETTER O WITH HORN AND TILDE +<dead_horn> <Uacute> : "Ứ" Uhornacute # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<dead_horn> <Ubelowdot> : "Ự" Uhornbelowdot # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<dead_horn> <Ugrave> : "Ừ" Uhorngrave # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<dead_horn> <Uhook> : "Ử" Uhornhook # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<dead_horn> <Utilde> : "Ữ" Uhorntilde # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<dead_horn> <uacute> : "ứ" uhornacute # LATIN SMALL LETTER U WITH HORN AND ACUTE +<dead_horn> <ubelowdot> : "ự" uhornbelowdot # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<dead_horn> <ugrave> : "ừ" uhorngrave # LATIN SMALL LETTER U WITH HORN AND GRAVE +<dead_horn> <uhook> : "ử" uhornhook # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<dead_horn> <utilde> : "ữ" uhorntilde # LATIN SMALL LETTER U WITH HORN AND TILDE +<dead_horn> <dead_horn> : "̛" U031B # COMBINING HORN +<dead_horn> <nobreakspace> : "̛" U031B # COMBINING HORN +<dead_horn> <space> : "̛" U031B # COMBINING HORN +<dead_macron> <Eacute> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_macron> <Egrave> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_macron> <eacute> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_macron> <egrave> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_macron> <Oacute> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_macron> <Ograve> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_macron> <oacute> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_macron> <ograve> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_macron> <V> : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <v> : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +<dead_macron> <nobreakspace> : "̄" U0304 # COMBINING MACRON +<dead_ogonek> <Omacron> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<dead_ogonek> <omacron> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<dead_ogonek> <nobreakspace> : "̨" U0328 # COMBINING OGONEK +<dead_abovering> <Aacute> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<dead_abovering> <aacute> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<dead_abovering> <nobreakspace> : "̊" U030A # COMBINING RING ABOVE +<dead_stroke> <2> : "ƻ" U01BB # LATIN LETTER TWO WITH STROKE +<dead_stroke> <equal> : "≠" notequal # NOT EQUAL TO +<dead_stroke> <A> : "Ⱥ" U023A # LATIN CAPITAL LETTER A WITH STROKE +<dead_stroke> <a> : "ⱥ" U2C65 # LATIN SMALL LETTER A WITH STROKE +<dead_stroke> <B> : "Ƀ" U0243 # LATIN CAPITAL LETTER B WITH STROKE +<dead_stroke> <C> : "Ȼ" U023B # LATIN CAPITAL LETTER C WITH STROKE +<dead_stroke> <c> : "ȼ" U023C # LATIN SMALL LETTER C WITH STROKE +<dead_stroke> <E> : "Ɇ" U0246 # LATIN CAPITAL LETTER E WITH STROKE +<dead_stroke> <e> : "ɇ" U0247 # LATIN SMALL LETTER E WITH STROKE +<dead_stroke> <greater> : "≯" U226F # NOT GREATER-THAN +<dead_stroke> <greaterthanequal> : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO +<dead_stroke> <J> : "Ɉ" U0248 # LATIN CAPITAL LETTER J WITH STROKE +<dead_stroke> <j> : "ɉ" U0249 # LATIN SMALL LETTER J WITH STROKE +<dead_stroke> <U0269> : "ᵼ" U1D7C # LATIN SMALL LETTER IOTA WITH STROKE +<dead_stroke> <U0237> : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE +<dead_stroke> <less> : "≮" U226E # NOT LESS-THAN +<dead_stroke> <lessthanequal> : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO +<dead_stroke> <Oacute> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +<dead_stroke> <oacute> : "ǿ" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +<dead_stroke> <P> : "Ᵽ" U2C63 # LATIN CAPITAL LETTER P WITH STROKE +<dead_stroke> <p> : "ᵽ" U1D7D # LATIN SMALL LETTER P WITH STROKE +<dead_stroke> <R> : "Ɍ" U024C # LATIN CAPITAL LETTER R WITH STROKE +<dead_stroke> <r> : "ɍ" U024D # LATIN SMALL LETTER R WITH STROKE +<dead_stroke> <U> : "Ʉ" U0244 # LATIN CAPITAL LETTER U BAR +<dead_stroke> <u> : "ʉ" U0289 # LATIN SMALL LETTER U BAR +<dead_stroke> <Y> : "Ɏ" U024E # LATIN CAPITAL LETTER Y WITH STROKE +<dead_stroke> <y> : "ɏ" U024F # LATIN SMALL LETTER Y WITH STROKE +<dead_stroke> <dead_stroke> : "/" slash # SOLIDUS +<dead_stroke> <nobreakspace> : "̸" U0338 # COMBINING LONG SOLIDUS OVERLAY +<dead_stroke> <space> : "/" slash # SOLIDUS +<dead_tilde> <Oacute> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<dead_tilde> <Odiaeresis> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<dead_tilde> <Omacron> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<dead_tilde> <oacute> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<dead_tilde> <odiaeresis> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<dead_tilde> <omacron> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<dead_tilde> <Uacute> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<dead_tilde> <uacute> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<dead_tilde> <equal> : "≃" similarequal # ASYMPTOTICALLY EQUAL TO +<dead_tilde> <less> : "≲" U2272 # LESS-THAN OR EQUIVALENT TO +<dead_tilde> <greater> : "≳" U2273 # GREATER-THAN OR EQUIVALENT TO +<dead_tilde> <nobreakspace> : "̃" U0303 # COMBINING TILDE +<dead_acute> <dead_abovedot> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +<dead_acute> <dead_abovedot> <s> : "ṥ" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +<dead_belowdot> <dead_abovedot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_belowdot> <dead_abovedot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +<dead_caron> <dead_abovedot> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +<dead_caron> <dead_abovedot> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +<dead_abovedot> <dead_macron> <A> : "Ǡ" U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +<dead_abovedot> <dead_macron> <a> : "ǡ" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +<dead_abovedot> <dead_macron> <O> : "Ȱ" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +<dead_abovedot> <dead_macron> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +<dead_abovedot> <dead_stroke> <j> : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE +<dead_stroke> <dead_abovedot> <j> : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE +<dead_breve> <dead_acute> <A> : "Ắ" Abreveacute # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +<dead_breve> <dead_acute> <a> : "ắ" abreveacute # LATIN SMALL LETTER A WITH BREVE AND ACUTE +<dead_cedilla> <dead_acute> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +<dead_cedilla> <dead_acute> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +<dead_circumflex> <dead_acute> <A> : "Ấ" Acircumflexacute # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <dead_acute> <a> : "ấ" acircumflexacute # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <dead_acute> <E> : "Ế" Ecircumflexacute # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <dead_acute> <e> : "ế" ecircumflexacute # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <dead_acute> <O> : "Ố" Ocircumflexacute # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_circumflex> <dead_acute> <o> : "ố" ocircumflexacute # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +<dead_diaeresis> <dead_acute> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +<dead_diaeresis> <dead_acute> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +<dead_diaeresis> <dead_acute> <U> : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +<dead_diaeresis> <dead_acute> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +<dead_horn> <dead_acute> <O> : "Ớ" Ohornacute # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +<dead_horn> <dead_acute> <o> : "ớ" ohornacute # LATIN SMALL LETTER O WITH HORN AND ACUTE +<dead_horn> <dead_acute> <U> : "Ứ" Uhornacute # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +<dead_horn> <dead_acute> <u> : "ứ" uhornacute # LATIN SMALL LETTER U WITH HORN AND ACUTE +<dead_macron> <dead_acute> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +<dead_macron> <dead_acute> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE +<dead_macron> <dead_acute> <O> : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +<dead_macron> <dead_acute> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +<dead_abovering> <dead_acute> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +<dead_abovering> <dead_acute> <a> : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +<dead_tilde> <dead_acute> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +<dead_tilde> <dead_acute> <o> : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE +<dead_tilde> <dead_acute> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +<dead_tilde> <dead_acute> <u> : "ṹ" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE +<dead_belowdot> <dead_breve> <A> : "Ặ" Abrevebelowdot # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +<dead_belowdot> <dead_breve> <a> : "ặ" abrevebelowdot # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +<dead_belowdot> <dead_circumflex> <A> : "Ậ" Acircumflexbelowdot # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <dead_circumflex> <a> : "ậ" acircumflexbelowdot # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <dead_circumflex> <E> : "Ệ" Ecircumflexbelowdot # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <dead_circumflex> <e> : "ệ" ecircumflexbelowdot # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <dead_circumflex> <O> : "Ộ" Ocircumflexbelowdot # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_belowdot> <dead_circumflex> <o> : "ộ" ocircumflexbelowdot # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +<dead_horn> <dead_belowdot> <O> : "Ợ" Ohornbelowdot # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +<dead_horn> <dead_belowdot> <o> : "ợ" ohornbelowdot # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +<dead_horn> <dead_belowdot> <U> : "Ự" Uhornbelowdot # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +<dead_horn> <dead_belowdot> <u> : "ự" uhornbelowdot # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +<dead_belowdot> <dead_macron> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +<dead_belowdot> <dead_macron> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +<dead_belowdot> <dead_macron> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +<dead_belowdot> <dead_macron> <r> : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +<dead_cedilla> <dead_breve> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +<dead_cedilla> <dead_breve> <e> : "ḝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +<dead_breve> <dead_grave> <A> : "Ằ" Abrevegrave # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +<dead_breve> <dead_grave> <a> : "ằ" abrevegrave # LATIN SMALL LETTER A WITH BREVE AND GRAVE +<dead_breve> <dead_hook> <A> : "Ẳ" Abrevehook # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +<dead_breve> <dead_hook> <a> : "ẳ" abrevehook # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +<dead_breve> <dead_tilde> <A> : "Ẵ" Abrevetilde # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +<dead_breve> <dead_tilde> <a> : "ẵ" abrevetilde # LATIN SMALL LETTER A WITH BREVE AND TILDE +<dead_diaeresis> <dead_caron> <U> : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +<dead_diaeresis> <dead_caron> <u> : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +<dead_cedilla> <dead_currency> <C> : "₵" U20B5 # CEDI SIGN +<dead_currency> <dead_cedilla> <C> : "₵" U20B5 # CEDI SIGN +<dead_cedilla> <dead_currency> <c> : "₵" U20B5 # CEDI SIGN +<dead_currency> <dead_cedilla> <c> : "₵" U20B5 # CEDI SIGN +<dead_circumflex> <dead_grave> <A> : "Ầ" Acircumflexgrave # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_grave> <a> : "ầ" acircumflexgrave # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_grave> <E> : "Ề" Ecircumflexgrave # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_grave> <e> : "ề" ecircumflexgrave # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_grave> <O> : "Ồ" Ocircumflexgrave # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_grave> <o> : "ồ" ocircumflexgrave # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +<dead_circumflex> <dead_hook> <A> : "Ẩ" Acircumflexhook # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_hook> <a> : "ẩ" acircumflexhook # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_hook> <E> : "Ể" Ecircumflexhook # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_hook> <e> : "ể" ecircumflexhook # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_hook> <O> : "Ổ" Ocircumflexhook # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_hook> <o> : "ổ" ocircumflexhook # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +<dead_circumflex> <dead_tilde> <A> : "Ẫ" Acircumflextilde # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <dead_tilde> <a> : "ẫ" acircumflextilde # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <dead_tilde> <E> : "Ễ" Ecircumflextilde # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <dead_tilde> <e> : "ễ" ecircumflextilde # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <dead_tilde> <O> : "Ỗ" Ocircumflextilde # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_circumflex> <dead_tilde> <o> : "ỗ" ocircumflextilde # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +<dead_diaeresis> <dead_grave> <U> : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +<dead_diaeresis> <dead_grave> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +<dead_diaeresis> <dead_macron> <A> : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +<dead_diaeresis> <dead_macron> <a> : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +<dead_diaeresis> <dead_macron> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +<dead_diaeresis> <dead_macron> <o> : "ȫ" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +<dead_tilde> <dead_diaeresis> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +<dead_tilde> <dead_diaeresis> <o> : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +<dead_horn> <dead_grave> <O> : "Ờ" Ohorngrave # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +<dead_horn> <dead_grave> <o> : "ờ" ohorngrave # LATIN SMALL LETTER O WITH HORN AND GRAVE +<dead_horn> <dead_grave> <U> : "Ừ" Uhorngrave # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +<dead_horn> <dead_grave> <u> : "ừ" uhorngrave # LATIN SMALL LETTER U WITH HORN AND GRAVE +<dead_macron> <dead_grave> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +<dead_macron> <dead_grave> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE +<dead_macron> <dead_grave> <O> : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +<dead_macron> <dead_grave> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE +<dead_horn> <dead_hook> <O> : "Ở" Ohornhook # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +<dead_horn> <dead_hook> <o> : "ở" ohornhook # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +<dead_horn> <dead_hook> <U> : "Ử" Uhornhook # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +<dead_horn> <dead_hook> <u> : "ử" uhornhook # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +<dead_horn> <dead_tilde> <O> : "Ỡ" Ohorntilde # LATIN CAPITAL LETTER O WITH HORN AND TILDE +<dead_horn> <dead_tilde> <o> : "ỡ" ohorntilde # LATIN SMALL LETTER O WITH HORN AND TILDE +<dead_horn> <dead_tilde> <U> : "Ữ" Uhorntilde # LATIN CAPITAL LETTER U WITH HORN AND TILDE +<dead_horn> <dead_tilde> <u> : "ữ" uhorntilde # LATIN SMALL LETTER U WITH HORN AND TILDE +<dead_ogonek> <dead_macron> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +<dead_ogonek> <dead_macron> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON +<dead_tilde> <dead_macron> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +<dead_tilde> <dead_macron> <o> : "ȭ" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON +<dead_greek> <dead_hook> <U> : "ϒ" U03D2 # GREEK UPSILON WITH HOOK SYMBOL +<dead_hook> <dead_greek> <U> : "ϒ" U03D2 # GREEK UPSILON WITH HOOK SYMBOL +<dead_greek> <dead_macron> <A> : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON +<dead_macron> <dead_greek> <A> : "Ᾱ" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON +<dead_greek> <dead_macron> <a> : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON +<dead_macron> <dead_greek> <a> : "ᾱ" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON +<dead_greek> <dead_macron> <I> : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON +<dead_macron> <dead_greek> <I> : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON +<dead_greek> <dead_macron> <i> : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON +<dead_macron> <dead_greek> <i> : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON +<dead_greek> <dead_macron> <U> : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON +<dead_macron> <dead_greek> <U> : "Ῡ" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON +<dead_greek> <dead_macron> <u> : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON +<dead_macron> <dead_greek> <u> : "ῡ" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON +<dead_greek> <dead_stroke> <r> : "ϼ" U03FC # GREEK RHO WITH STROKE SYMBOL +<dead_stroke> <dead_greek> <r> : "ϼ" U03FC # GREEK RHO WITH STROKE SYMBOL + +# +# Cyrillic NFDs +# + +<dead_doublegrave> <Cyrillic_a> : "а̏" # CYRILLIC SMALL LETTER A WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_a> : "а̏" # CYRILLIC SMALL LETTER A WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_a> : "а̑" # CYRILLIC SMALL LETTER A WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_a> : "а̀" # CYRILLIC SMALL LETTER A WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_a> : "а̀" # CYRILLIC SMALL LETTER A WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_a> : "а́" # CYRILLIC SMALL LETTER A WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_a> : "а́" # CYRILLIC SMALL LETTER A WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_a> : "а́" # CYRILLIC SMALL LETTER A WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_a> : "а̄" # CYRILLIC SMALL LETTER A WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_a> : "а̄" # CYRILLIC SMALL LETTER A WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_a> : "а̄" # CYRILLIC SMALL LETTER A WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_a> : "а̂" # CYRILLIC SMALL LETTER A WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_a> : "а̂" # CYRILLIC SMALL LETTER A WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_A> : "А̏" # CYRILLIC CAPITAL LETTER A WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_A> : "А̏" # CYRILLIC CAPITAL LETTER A WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_A> : "А̑" # CYRILLIC CAPITAL LETTER A WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_A> : "А̀" # CYRILLIC CAPITAL LETTER A WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_A> : "А̀" # CYRILLIC CAPITAL LETTER A WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_A> : "А́" # CYRILLIC CAPITAL LETTER A WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_A> : "А́" # CYRILLIC CAPITAL LETTER A WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_A> : "А́" # CYRILLIC CAPITAL LETTER A WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_A> : "А̄" # CYRILLIC CAPITAL LETTER A WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_A> : "А̄" # CYRILLIC CAPITAL LETTER A WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_A> : "А̄" # CYRILLIC CAPITAL LETTER A WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_A> : "А̂" # CYRILLIC CAPITAL LETTER A WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_A> : "А̂" # CYRILLIC CAPITAL LETTER A WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_ie> : "е̏" # CYRILLIC SMALL LETTER IE WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_ie> : "е̏" # CYRILLIC SMALL LETTER IE WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_ie> : "е̑" # CYRILLIC SMALL LETTER IE WITH COMBINING INVERTED BREVE + +<dead_acute> <Cyrillic_ie> : "е́" # CYRILLIC SMALL LETTER IE WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_ie> : "е́" # CYRILLIC SMALL LETTER IE WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_ie> : "е́" # CYRILLIC SMALL LETTER IE WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_ie> : "е̄" # CYRILLIC SMALL LETTER IE WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_ie> : "е̄" # CYRILLIC SMALL LETTER IE WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_ie> : "е̄" # CYRILLIC SMALL LETTER IE WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_ie> : "е̂" # CYRILLIC SMALL LETTER IE WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_ie> : "е̂" # CYRILLIC SMALL LETTER IE WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_IE> : "Е̏" # CYRILLIC CAPITAL LETTER IE WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_IE> : "Е̏" # CYRILLIC CAPITAL LETTER IE WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_IE> : "Е̑" # CYRILLIC CAPITAL LETTER IE WITH COMBINING INVERTED BREVE + +<dead_acute> <Cyrillic_IE> : "Е́" # CYRILLIC CAPITAL LETTER IE WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_IE> : "Е́" # CYRILLIC CAPITAL LETTER IE WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_IE> : "Е́" # CYRILLIC CAPITAL LETTER IE WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_IE> : "Е̄" # CYRILLIC CAPITAL LETTER IE WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_IE> : "Е̄" # CYRILLIC CAPITAL LETTER IE WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_IE> : "Е̄" # CYRILLIC CAPITAL LETTER IE WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_IE> : "Е̂" # CYRILLIC CAPITAL LETTER IE WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_IE> : "Е̂" # CYRILLIC CAPITAL LETTER IE WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_i> : "и̏" # CYRILLIC SMALL LETTER I WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_i> : "и̏" # CYRILLIC SMALL LETTER I WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_i> : "и̑" # CYRILLIC SMALL LETTER I WITH COMBINING INVERTED BREVE + +<dead_acute> <Cyrillic_i> : "и́" # CYRILLIC SMALL LETTER I WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_i> : "и́" # CYRILLIC SMALL LETTER I WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_i> : "и́" # CYRILLIC SMALL LETTER I WITH COMBINING ACUTE ACCENT + +<dead_circumflex> <Cyrillic_i> : "и̂" # CYRILLIC SMALL LETTER I WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_i> : "и̂" # CYRILLIC SMALL LETTER I WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_I> : "И̏" # CYRILLIC CAPITAL LETTER I WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_I> : "И̏" # CYRILLIC CAPITAL LETTER I WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_I> : "И̑" # CYRILLIC CAPITAL LETTER I WITH COMBINING INVERTED BREVE + +<dead_acute> <Cyrillic_I> : "И́" # CYRILLIC CAPITAL LETTER I WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_I> : "И́" # CYRILLIC CAPITAL LETTER I WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_I> : "И́" # CYRILLIC CAPITAL LETTER I WITH COMBINING ACUTE ACCENT + +<dead_circumflex> <Cyrillic_I> : "И̂" # CYRILLIC CAPITAL LETTER I WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_I> : "И̂" # CYRILLIC CAPITAL LETTER I WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_o> : "о̏" # CYRILLIC SMALL LETTER O WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_o> : "о̏" # CYRILLIC SMALL LETTER O WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_o> : "о̑" # CYRILLIC SMALL LETTER O WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_o> : "о̀" # CYRILLIC SMALL LETTER O WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_o> : "о̀" # CYRILLIC SMALL LETTER O WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_o> : "о́" # CYRILLIC SMALL LETTER O WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_o> : "о́" # CYRILLIC SMALL LETTER O WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_o> : "о́" # CYRILLIC SMALL LETTER O WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_o> : "о̄" # CYRILLIC SMALL LETTER O WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_o> : "о̄" # CYRILLIC SMALL LETTER O WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_o> : "о̄" # CYRILLIC SMALL LETTER O WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_o> : "о̂" # CYRILLIC SMALL LETTER O WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_o> : "о̂" # CYRILLIC SMALL LETTER O WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_O> : "О̏" # CYRILLIC CAPITAL LETTER O WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_O> : "О̏" # CYRILLIC CAPITAL LETTER O WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_O> : "О̑" # CYRILLIC CAPITAL LETTER O WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_O> : "О̀" # CYRILLIC CAPITAL LETTER O WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_O> : "О̀" # CYRILLIC CAPITAL LETTER O WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_O> : "О́" # CYRILLIC CAPITAL LETTER O WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_O> : "О́" # CYRILLIC CAPITAL LETTER O WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_O> : "О́" # CYRILLIC CAPITAL LETTER O WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_O> : "О̄" # CYRILLIC CAPITAL LETTER O WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_O> : "О̄" # CYRILLIC CAPITAL LETTER O WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_O> : "О̄" # CYRILLIC CAPITAL LETTER O WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_O> : "О̂" # CYRILLIC CAPITAL LETTER O WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_O> : "О̂" # CYRILLIC CAPITAL LETTER O WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_u> : "у̏" # CYRILLIC SMALL LETTER U WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_u> : "у̏" # CYRILLIC SMALL LETTER U WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_u> : "у̑" # CYRILLIC SMALL LETTER U WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_u> : "у̀" # CYRILLIC SMALL LETTER U WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_u> : "у̀" # CYRILLIC SMALL LETTER U WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_u> : "у́" # CYRILLIC SMALL LETTER U WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_u> : "у́" # CYRILLIC SMALL LETTER U WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_u> : "у́" # CYRILLIC SMALL LETTER U WITH COMBINING ACUTE ACCENT + +<dead_circumflex> <Cyrillic_u> : "у̂" # CYRILLIC SMALL LETTER U WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_u> : "у̂" # CYRILLIC SMALL LETTER U WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_U> : "У̏" # CYRILLIC CAPITAL LETTER U WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_U> : "У̏" # CYRILLIC CAPITAL LETTER U WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_U> : "У̑" # CYRILLIC CAPITAL LETTER U WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_U> : "У̀" # CYRILLIC CAPITAL LETTER U WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_U> : "У̀" # CYRILLIC CAPITAL LETTER U WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_U> : "У́" # CYRILLIC CAPITAL LETTER U WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_U> : "У́" # CYRILLIC CAPITAL LETTER U WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_U> : "У́" # CYRILLIC CAPITAL LETTER U WITH COMBINING ACUTE ACCENT + +<dead_circumflex> <Cyrillic_U> : "У̂" # CYRILLIC CAPITAL LETTER U WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_U> : "У̂" # CYRILLIC CAPITAL LETTER U WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_er> : "р̏" # CYRILLIC SMALL LETTER ER WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_er> : "р̏" # CYRILLIC SMALL LETTER ER WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_er> : "р̑" # CYRILLIC SMALL LETTER ER WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_er> : "р̀" # CYRILLIC SMALL LETTER ER WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_er> : "р̀" # CYRILLIC SMALL LETTER ER WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_er> : "р́" # CYRILLIC SMALL LETTER ER WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_er> : "р́" # CYRILLIC SMALL LETTER ER WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_er> : "р́" # CYRILLIC SMALL LETTER ER WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_er> : "р̄" # CYRILLIC SMALL LETTER ER WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_er> : "р̄" # CYRILLIC SMALL LETTER ER WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_er> : "р̄" # CYRILLIC SMALL LETTER ER WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_er> : "р̂" # CYRILLIC SMALL LETTER ER WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_er> : "р̂" # CYRILLIC SMALL LETTER ER WITH COMBINING CIRCUMFLEX ACCENT + +<dead_doublegrave> <Cyrillic_ER> : "Р̏" # CYRILLIC CAPITAL LETTER ER WITH COMBINING DOUBLE GRAVE ACCENT +<Multi_key> <grave> <grave> <Cyrillic_ER> : "Р̏" # CYRILLIC CAPITAL LETTER ER WITH COMBINING DOUBLE GRAVE ACCENT + +<dead_invertedbreve> <Cyrillic_ER> : "Р̑" # CYRILLIC CAPITAL LETTER ER WITH COMBINING INVERTED BREVE + +<dead_grave> <Cyrillic_ER> : "Р̀" # CYRILLIC CAPITAL LETTER ER WITH COMBINING GRAVE ACCENT +<Multi_key> <grave> <Cyrillic_ER> : "Р̀" # CYRILLIC CAPITAL LETTER ER WITH COMBINING GRAVE ACCENT + +<dead_acute> <Cyrillic_ER> : "Р́" # CYRILLIC CAPITAL LETTER ER WITH COMBINING ACUTE ACCENT +<Multi_key> <acute> <Cyrillic_ER> : "Р́" # CYRILLIC CAPITAL LETTER ER WITH COMBINING ACUTE ACCENT +<Multi_key> <apostrophe> <Cyrillic_ER> : "Р́" # CYRILLIC CAPITAL LETTER ER WITH COMBINING ACUTE ACCENT + +<dead_macron> <Cyrillic_ER> : "Р̄" # CYRILLIC CAPITAL LETTER ER WITH COMBINING MACRON +<Multi_key> <macron> <Cyrillic_ER> : "Р̄" # CYRILLIC CAPITAL LETTER ER WITH COMBINING MACRON +<Multi_key> <underscore> <Cyrillic_ER> : "Р̄" # CYRILLIC CAPITAL LETTER ER WITH COMBINING MACRON + +<dead_circumflex> <Cyrillic_ER> : "Р̂" # CYRILLIC CAPITAL LETTER ER WITH COMBINING CIRCUMFLEX ACCENT +<Multi_key> <asciicircum> <Cyrillic_ER> : "Р̂" # CYRILLIC CAPITAL LETTER ER WITH COMBINING CIRCUMFLEX ACCENT + +<Multi_key> <backslash> <o> <slash> : "🙌" # PERSON RAISING BOTH HANDS IN CELEBRATION + +# APL support Geoff Streeter 2012-01-04 + +# APL was initially an overstruck language. The original APL terminal was an IBM golfball +# with a specially designed golfball. This meant that characters could be overstruck to +# produce other characters. This gave APL a richness of primitives which is still powerful +# today. Overstrikes were always independent of order. + +# APLs have extended this into a number of dialects. Let us try to support lots of them. +# Together with some that have not been used yet. Some traditional ones are not included. + +# Characters from "Mathematical Operators" + +<Multi_key> <v> <slash> : "√" U221a # v / SQUARE ROOT +<Multi_key> <slash> <v> : "√" U221a # / v SQUARE ROOT +<Multi_key> <8> <8> : "∞" U221e # 8 8 INFINITY +<Multi_key> <equal> <underscore> : "≡" U2261 # = _ IDENTICAL TO +<Multi_key> <underscore> <U2260> : "≢" U2262 # _ ≠ NOT IDENTICAL TO +<Multi_key> <U2260> <underscore> : "≢" U2262 # ≠ _ NOT IDENTICAL TO +<Multi_key> <less> <underscore> : "≤" U2264 # < _ LESS-THAN OR EQUAL TO +<Multi_key> <underscore> <less> : "≤" U2264 # _ < LESS-THAN OR EQUAL TO +<Multi_key> <greater> <underscore> : "≥" U2265 # > _ GREATER-THAN OR EQUAL TO +<Multi_key> <underscore> <greater> : "≥" U2265 # _ > GREATER-THAN OR EQUAL TO +<Multi_key> <underscore> <U2282> : "⊆" U2286 # _ ⊂ SUBSET OF OR EQUAL TO +<Multi_key> <U2282> <underscore> : "⊆" U2286 # ⊂ _ SUBSET OF OR EQUAL TO +<Multi_key> <underscore> <U2283> : "⊇" U2287 # _ ⊃ SUPERSET OF OR EQUAL TO +<Multi_key> <U2283> <underscore> : "⊇" U2287 # ⊃ _ SUPERSET OF OR EQUAL TO +<Multi_key> <U25cb> <minus> : "⊖" U2296 # ○ - CIRCLED MINUS +<Multi_key> <minus> <U25cb> : "⊖" U2296 # - ○ CIRCLED MINUS +<Multi_key> <U25cb> <period> : "⊙" U2299 # ○ - CIRCLED DOT +<Multi_key> <period> <U25cb> : "⊙" U2299 # - ○ CIRCLED DOT +<Multi_key> <less> <greater> : "⋄" U22c4 # < > DIAMOND OPERATOR +<Multi_key> <greater> <less> : "⋄" U22c4 # > < DIAMOND OPERATOR +<Multi_key> <U2227> <U2228> : "⋄" U22c4 # ∧ ∨ DIAMOND OPERATOR +<Multi_key> <U2228> <U2227> : "⋄" U22c4 # ∨ ∧ DIAMOND OPERATOR +<Multi_key> <colon> <period> : "∴" therefore # THEREFORE +<Multi_key> <period> <colon> : "∵" because # BECAUSE + +# Characters from "Miscellaneous Technical" + +<Multi_key> <U22a5> <U22a4> : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM +<Multi_key> <U22a4> <U22a5> : "⌶" U2336 # ⊥ ⊤ APL FUNCTIONAL SYMBOL I-BEAM +<Multi_key> <bracketleft> <bracketright> : "⌷" U2337 # [ ] APL FUNCTIONAL SYMBOL SQUISH QUAD +<Multi_key> <bracketright> <bracketleft> : "⌷" U2337 # ] [ APL FUNCTIONAL SYMBOL SQUISH QUAD +<Multi_key> <U2395> <equal> : "⌸" U2338 # ⎕ = APL FUNCTIONAL SYMBOL QUAD EQUAL +<Multi_key> <equal> <U2395> : "⌸" U2338 # = ⎕ APL FUNCTIONAL SYMBOL QUAD EQUAL +<Multi_key> <U2395> <division> : "⌹" U2339 # ⎕ ÷ APL FUNCTIONAL SYMBOL QUAD DIVIDE +<Multi_key> <division> <U2395> : "⌹" U2339 # ÷ ⎕ APL FUNCTIONAL SYMBOL QUAD DIVIDE +<Multi_key> <U2395> <U22c4> : "⌺" U233a # ⎕ ⋄ APL FUNCTIONAL SYMBOL QUAD DIAMOND +<Multi_key> <U22c4> <U2395> : "⌺" U233a # ⋄ ⎕ APL FUNCTIONAL SYMBOL QUAD DIAMOND +<Multi_key> <U2395> <U2218> : "⌻" U233b # ⎕ ∘ APL FUNCTIONAL SYMBOL QUAD JOT +<Multi_key> <U2218> <U2395> : "⌻" U233b # ∘ ⎕ APL FUNCTIONAL SYMBOL QUAD JOT +<Multi_key> <U2395> <U25cb> : "⌼" U233c # ⎕ ○ APL FUNCTIONAL SYMBOL QUAD CIRCLE +<Multi_key> <U25cb> <U2395> : "⌼" U233c # ○ ⎕ APL FUNCTIONAL SYMBOL QUAD CIRCLE +<Multi_key> <U25cb> <bar> : "⌽" U233d # ○ | APL FUNCTIONAL SYMBOL CIRCLE STILE +<Multi_key> <bar> <U25cb> : "⌽" U233d # | ○ APL FUNCTIONAL SYMBOL CIRCLE STILE +<Multi_key> <U25cb> <U2218> : "⌾" U233e # ○ ∘ APL FUNCTIONAL SYMBOL CIRCLE JOT +<Multi_key> <U2218> <U25cb> : "⌾" U233e # ∘ ○ APL FUNCTIONAL SYMBOL CIRCLE JOT +<Multi_key> <slash> <minus> : "⌿" U233f # / - APL FUNCTIONAL SYMBOL SLASH BAR +<Multi_key> <minus> <slash> : "⌿" U233f # - / APL FUNCTIONAL SYMBOL SLASH BAR +<Multi_key> <backslash> <minus> : "⍀" U2340 # \ - APL FUNCTIONAL SYMBOL BACKSLASH BAR +<Multi_key> <minus> <backslash> : "⍀" U2340 # - \ APL FUNCTIONAL SYMBOL BACKSLASH BAR +<Multi_key> <slash> <U2395> : "⍁" U2341 # / ⎕ APL FUNCTIONAL SYMBOL QUAD SLASH +<Multi_key> <U2395> <slash> : "⍁" U2341 # ⎕ / APL FUNCTIONAL SYMBOL QUAD SLASH +<Multi_key> <backslash> <U2395> : "⍂" U2342 # \ ⎕ APL FUNCTIONAL SYMBOL QUAD BACKSLASH +<Multi_key> <U2395> <backslash> : "⍂" U2342 # ⎕ \ APL FUNCTIONAL SYMBOL QUAD BACKSLASH +<Multi_key> <less> <U2395> : "⍃" U2343 # < ⎕ APL FUNCTIONAL SYMBOL QUAD LESS-THAN +<Multi_key> <U2395> <less> : "⍃" U2343 # ⎕ < APL FUNCTIONAL SYMBOL QUAD LESS-THAN +<Multi_key> <greater> <U2395> : "⍄" U2344 # > ⎕ APL FUNCTIONAL SYMBOL QUAD GREATER-THAN +<Multi_key> <U2395> <greater> : "⍄" U2344 # ⎕ > APL FUNCTIONAL SYMBOL QUAD GREATER-THAN +<Multi_key> <U2190> <bar> : "⍅" U2345 # ← | APL FUNCTIONAL SYMBOL LEFTWARDS VANE +<Multi_key> <bar> <U2190> : "⍅" U2345 # | ← APL FUNCTIONAL SYMBOL LEFTWARDS VANE +<Multi_key> <U2192> <bar> : "⍆" U2346 # → | APL FUNCTIONAL SYMBOL RIGHTWARDS VANE +<Multi_key> <bar> <U2192> : "⍆" U2346 # | → APL FUNCTIONAL SYMBOL RIGHTWARDS VANE +<Multi_key> <U2190> <U2395> : "⍇" U2347 # ← ⎕ APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW +<Multi_key> <U2395> <U2190> : "⍇" U2347 # ⎕ ← APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW +<Multi_key> <U2192> <U2395> : "⍈" U2348 # → ⎕ APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW +<Multi_key> <U2395> <U2192> : "⍈" U2348 # ⎕ → APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW +<Multi_key> <U25cb> <backslash> : "⍉" U2349 # ○ \ APL FUNCTIONAL SYMBOL CIRCLE SLOPE +<Multi_key> <backslash> <U25cb> : "⍉" U2349 # \ ○ APL FUNCTIONAL SYMBOL CIRCLE SLOPE +<Multi_key> <underscore> <U22a5> : "⍊" U234a # _ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR +<Multi_key> <U22a5> <underscore> : "⍊" U234a # ⊥ _ APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR +<Multi_key> <U2206> <bar> : "⍋" U234b # ∆ | APL FUNCTIONAL SYMBOL DELTA STILE +<Multi_key> <bar> <U2206> : "⍋" U234b # | ∆ APL FUNCTIONAL SYMBOL DELTA STILE +<Multi_key> <U2228> <U2395> : "⍌" U234c # ∨ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWN CARET +<Multi_key> <U2395> <U2228> : "⍌" U234c # ⎕ ∨ APL FUNCTIONAL SYMBOL QUAD DOWN CARET +<Multi_key> <U2206> <U2395> : "⍍" U234d # ∆ ⎕ APL FUNCTIONAL SYMBOL QUAD DELTA +<Multi_key> <U2395> <U2206> : "⍍" U234d # ⎕ ∆ APL FUNCTIONAL SYMBOL QUAD DELTA +<Multi_key> <U2218> <U22a5> : "⍎" U234e # ∘ ⊥ APL FUNCTIONAL SYMBOL DOWN TACK JOT +<Multi_key> <U22a5> <U2218> : "⍎" U234e # ⊥ ∘ APL FUNCTIONAL SYMBOL DOWN TACK JOT +<Multi_key> <U2191> <minus> : "⍏" U234f # ↑ - APL FUNCTIONAL SYMBOL UPWARDS VANE +<Multi_key> <minus> <U2191> : "⍏" U234f # - ↑ APL FUNCTIONAL SYMBOL UPWARDS VANE +<Multi_key> <U2191> <U2395> : "⍐" U2350 # ↑ ⎕ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW +<Multi_key> <U2395> <U2191> : "⍐" U2350 # ⎕ ↑ APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW +# I cannot get anything to work with <macron>. Given that no extant APLs use ⍑ I will just leave the lines +# in place. +<Multi_key> <macron> <U22a4> : "⍑" U2351 # ¯ ⊤ APL FUNCTIONAL SYMBOL UP TACK OVERBAR +<Multi_key> <U22a4> <macron> : "⍑" U2351 # ⊤ ¯ APL FUNCTIONAL SYMBOL UP TACK OVERBAR +<Multi_key> <U2207> <bar> : "⍒" U2352 # ∇ | APL FUNCTIONAL SYMBOL DEL STILE +<Multi_key> <bar> <U2207> : "⍒" U2352 # | ∇ APL FUNCTIONAL SYMBOL DEL STILE +<Multi_key> <U2227> <U2395> : "⍓" U2353 # ∧ ⎕ APL FUNCTIONAL SYMBOL QUAD UP CARET +<Multi_key> <U2395> <U2227> : "⍓" U2353 # ⎕ ∧ APL FUNCTIONAL SYMBOL QUAD UP CARET +<Multi_key> <U2207> <U2395> : "⍔" U2354 # ∇ ⎕ APL FUNCTIONAL SYMBOL QUAD DEL +<Multi_key> <U2395> <U2207> : "⍔" U2354 # ⎕ ∇ APL FUNCTIONAL SYMBOL QUAD DEL +<Multi_key> <U2218> <U22a4> : "⍕" U2355 # ∘ ⊤ APL FUNCTIONAL SYMBOL UP TACK JOT +<Multi_key> <U22a4> <U2218> : "⍕" U2355 # ⊤ ∘ APL FUNCTIONAL SYMBOL UP TACK JOT +<Multi_key> <U2193> <minus> : "⍖" U2356 # ↓ - APL FUNCTIONAL SYMBOL DOWNWARDS VANE +<Multi_key> <minus> <U2193> : "⍖" U2356 # - ↓ APL FUNCTIONAL SYMBOL DOWNWARDS VANE +<Multi_key> <U2193> <U2395> : "⍗" U2357 # ↓ ⎕ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW +<Multi_key> <U2395> <U2193> : "⍗" U2357 # ⎕ ↓ APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW +# This line clashes with the <apostrophe> <underscore> <E> (and similar) that appear to be there to provide +# a work around for the problems with <macron>. Or to cope with keyboards that do not have <macron> (more likely). +# All APL keyboards have <macron>, it is used as the -ve sign for numbers. +# I do not know of an extant APL using ⍘ +<Multi_key> <underscore> <apostrophe> : "⍘" U2358 # _ ' APL FUNCTIONAL SYMBOL QUOTE UNDERBAR +<Multi_key> <U2206> <underscore> : "⍙" U2359 # ∆ _ APL FUNCTIONAL SYMBOL DELTA UNDERBAR +<Multi_key> <underscore> <U2206> : "⍙" U2359 # _ ∆ APL FUNCTIONAL SYMBOL DELTA UNDERBAR +<Multi_key> <U22c4> <underscore> : "⍚" U235a # ⋄ _ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR +<Multi_key> <underscore> <U22c4> : "⍚" U235a # _ ⋄ APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR +<Multi_key> <U2218> <underscore> : "⍛" U235b # ∘ _ APL FUNCTIONAL SYMBOL JOT UNDERBAR +<Multi_key> <underscore> <U2218> : "⍛" U235b # _ ∘ APL FUNCTIONAL SYMBOL JOT UNDERBAR +<Multi_key> <U25cb> <underscore> : "⍜" U235c # ○ _ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR +<Multi_key> <underscore> <U25cb> : "⍜" U235c # _ ○ APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR +<Multi_key> <U2218> <U2229> : "⍝" U235d # ∘ ∩ APL FUNCTIONAL SYMBOL UP SHOE JOT +<Multi_key> <U2229> <U2218> : "⍝" U235d # ∩ ∘ APL FUNCTIONAL SYMBOL UP SHOE JOT +<Multi_key> <U2395> <apostrophe> : "⍞" U235e # * ¨ APL FUNCTIONAL SYMBOL QUOTE QUAD +<Multi_key> <apostrophe> <U2395> : "⍞" U235e # ¨ * APL FUNCTIONAL SYMBOL QUOTE QUAD +<Multi_key> <U25cb> <asterisk> : "⍟" U235f # ○ * APL FUNCTIONAL SYMBOL CIRCLE STAR +<Multi_key> <asterisk> <U25cb> : "⍟" U235f # * ○ APL FUNCTIONAL SYMBOL CIRCLE STAR +<Multi_key> <colon> <U2395> : "⍠" U2360 # : ⎕ APL FUNCTIONAL SYMBOL QUAD COLON +<Multi_key> <U2395> <colon> : "⍠" U2360 # ⎕ : APL FUNCTIONAL SYMBOL QUAD COLON +<Multi_key> <diaeresis> <U22a4> : "⍡" U2361 # ¨ ⊤ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS +<Multi_key> <U22a4> <diaeresis> : "⍡" U2361 # ⊤ ¨ APL FUNCTIONAL SYMBOL UP TACK DIAERESIS +<Multi_key> <diaeresis> <U2207> : "⍢" U2362 # ¨ ∇ APL FUNCTIONAL SYMBOL DEL DIAERESIS +<Multi_key> <U2207> <diaeresis> : "⍢" U2362 # ∇ ¨ APL FUNCTIONAL SYMBOL DEL DIAERESIS +<Multi_key> <asterisk> <diaeresis> : "⍣" U2363 # * ¨ APL FUNCTIONAL SYMBOL STAR DIAERESIS +<Multi_key> <diaeresis> <asterisk> : "⍣" U2363 # ¨ * APL FUNCTIONAL SYMBOL STAR DIAERESIS +<Multi_key> <U2218> <diaeresis> : "⍤" U2364 # ∘ ¨ APL FUNCTIONAL SYMBOL JOT DIAERESIS +<Multi_key> <diaeresis> <U2218> : "⍤" U2364 # ¨ ∘ APL FUNCTIONAL SYMBOL JOT DIAERESIS +<Multi_key> <U25cb> <diaeresis> : "⍥" U2365 # ○ ¨ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS +<Multi_key> <diaeresis> <U25cb> : "⍥" U2365 # ¨ ○ APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS +<Multi_key> <U222a> <bar> : "⍦" U2366 # ∪ | APL FUNCTIONAL SYMBOL DOWN SHOE STILE +<Multi_key> <bar> <U222a> : "⍦" U2366 # | ∪ APL FUNCTIONAL SYMBOL DOWN SHOE STILE +<Multi_key> <U2282> <bar> : "⍧" U2367 # ⊂ | APL FUNCTIONAL SYMBOL LEFT SHOE STILE +<Multi_key> <bar> <U2282> : "⍧" U2367 # | ⊂ APL FUNCTIONAL SYMBOL LEFT SHOE STILE +<Multi_key> <asciitilde> <diaeresis> : "⍨" U2368 # ~ ¨ APL FUNCTIONAL SYMBOL TILDE DIAERESIS +<Multi_key> <diaeresis> <greater> : "⍩" U2369 # ¨ > APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS +<Multi_key> <greater> <diaeresis> : "⍩" U2369 # > ¨ APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS +<Multi_key> <U2207> <asciitilde> : "⍫" U236b # ∇ ~ APL FUNCTIONAL SYMBOL DEL TILDE +<Multi_key> <asciitilde> <U2207> : "⍫" U236b # ~ ∇ APL FUNCTIONAL SYMBOL DEL TILDE +<Multi_key> <0> <asciitilde> : "⍬" U236c # 0 ~ APL FUNCTIONAL SYMBOL ZILDE +<Multi_key> <asciitilde> <0> : "⍬" U236c # ~ 0 APL FUNCTIONAL SYMBOL ZILDE +<Multi_key> <bar> <asciitilde> : "⍭" U236d # | ~ APL FUNCTIONAL SYMBOL STILE TILDE +<Multi_key> <asciitilde> <bar> : "⍭" U236d # ~ | APL FUNCTIONAL SYMBOL STILE TILDE +# This line does not work. It clashes with +# <underscore> <semicolon> <O> for Ǭ and +# <underscore> <semicolon> <o> for ǭ. +# Given that no extant APLs use ⍮ I will just leave the line in place. +<Multi_key> <semicolon> <underscore> : "⍮" U236e # ; _ APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR +<Multi_key> <U2260> <U2395> : "⍯" U236f # ≠ ⎕ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL +<Multi_key> <U2395> <U2260> : "⍯" U236f # ⎕ ≠ APL FUNCTIONAL SYMBOL QUAD NOT EQUAL +<Multi_key> <question> <U2395> : "⍰" U2370 # ? ⎕ APL FUNCTIONAL SYMBOL QUAD QUESTION +<Multi_key> <U2395> <question> : "⍰" U2370 # ⎕ ? APL FUNCTIONAL SYMBOL QUAD QUESTION +<Multi_key> <U2228> <asciitilde> : "⍱" U2371 # ∨ ~ APL FUNCTIONAL SYMBOL DOWN CARET TILDE +<Multi_key> <asciitilde> <U2228> : "⍱" U2371 # ~ ∨ APL FUNCTIONAL SYMBOL DOWN CARET TILDE +<Multi_key> <U2227> <asciitilde> : "⍲" U2372 # ∧ ~ APL FUNCTIONAL SYMBOL UP CARET TILDE +<Multi_key> <asciitilde> <U2227> : "⍲" U2372 # ~ ∧ APL FUNCTIONAL SYMBOL UP CARET TILDE +<Multi_key> <U237a> <underscore> : "⍶" U2376 # ⍺ _ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR +<Multi_key> <underscore> <U237a> : "⍶" U2376 # _ ⍺ APL FUNCTIONAL SYMBOL ALPHA UNDERBAR +<Multi_key> <U220a> <underscore> : "⍷" U2377 # ∊ _ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR +<Multi_key> <underscore> <U220a> : "⍷" U2377 # _ ∊ APL FUNCTIONAL SYMBOL EPSILON UNDERBAR +<Multi_key> <U2373> <underscore> : "⍸" U2378 # ⍳ _ APL FUNCTIONAL SYMBOL IOTA UNDERBAR +<Multi_key> <underscore> <U2373> : "⍸" U2378 # _ ⍳ APL FUNCTIONAL SYMBOL IOTA UNDERBAR +<Multi_key> <U2375> <underscore> : "⍹" U2379 # ⍵ _ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR +<Multi_key> <underscore> <U2375> : "⍹" U2379 # _ ⍵ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR diff --git a/test/data/locale/locale.alias b/test/data/locale/locale.alias new file mode 100644 index 0000000..03cd99c --- /dev/null +++ b/test/data/locale/locale.alias @@ -0,0 +1,2482 @@ +# +# This file contains alias names of locales. +# Each alias name is described within one line. +# The first word is the alias name (simplified locale name), +# the second word is the full locale name. +# +# +POSIX C +POSIX-UTF2 C +C_C.C C +C.en C +C.ASCII C +C.iso88591 en_US.ISO8859-1 +Cextend en_US.ISO8859-1 +Cextend.en en_US.ISO8859-1 +English_United-States.437 C +C.UTF-8 en_US.UTF-8 +# a3 is not an ISO 639 language code, but in Cyrillic, "Z" looks like "3". +a3 az_AZ.KOI8-C +a3_AZ az_AZ.KOI8-C +a3_AZ.koi8c az_AZ.KOI8-C +a3_AZ.KOI-C az_AZ.KOI8-C +a3_AZ.UTF-8 az_AZ.UTF-8 +af af_ZA.ISO8859-1 +af_ZA af_ZA.ISO8859-1 +af_ZA.iso88591 af_ZA.ISO8859-1 +af_ZA.ISO-8859-1 af_ZA.ISO8859-1 +af_ZA.utf8 af_ZA.UTF-8 +am am_ET.UTF-8 +am_ET am_ET.UTF-8 +ar ar_AA.ISO8859-6 +ar_AA ar_AA.ISO8859-6 +AR_AA ar_AA.ISO8859-6 +Ar_AA ar_AA.ISO8859-6 +AR_AA.UTF-8 ar_AA.UTF-8 +ar_AA.iso88596 ar_AA.ISO8859-6 +ar_AA.ISO-8859-6 ar_AA.ISO8859-6 +ar_AE ar_AE.ISO8859-6 +ar_AE.iso88596 ar_AE.ISO8859-6 +ar_AE.ISO-8859-6 ar_AE.ISO8859-6 +ar_AE.utf8 ar_AE.UTF-8 +ar_BH ar_BH.ISO8859-6 +ar_BH.iso88596 ar_BH.ISO8859-6 +ar_BH.ISO-8859-6 ar_BH.ISO8859-6 +ar_BH.utf8 ar_BH.UTF-8 +ar_DZ ar_DZ.ISO8859-6 +ar_DZ.iso88596 ar_DZ.ISO8859-6 +ar_DZ.ISO-8859-6 ar_DZ.ISO8859-6 +ar_DZ.utf8 ar_DZ.UTF-8 +ar_EG ar_EG.ISO8859-6 +ar_EG.iso88596 ar_EG.ISO8859-6 +ar_EG.ISO-8859-6 ar_EG.ISO8859-6 +ar_EG.utf8 ar_EG.UTF-8 +ar_IN ar_IN.UTF-8 +ar_IN.utf8 ar_IN.UTF-8 +ar_IQ ar_IQ.ISO8859-6 +ar_IQ.iso88596 ar_IQ.ISO8859-6 +ar_IQ.ISO-8859-6 ar_IQ.ISO8859-6 +ar_IQ.utf8 ar_IQ.UTF-8 +ar_JO ar_JO.ISO8859-6 +ar_JO.iso88596 ar_JO.ISO8859-6 +ar_JO.ISO-8859-6 ar_JO.ISO8859-6 +ar_JO.utf8 ar_JO.UTF-8 +ar_KW ar_KW.ISO8859-6 +ar_KW.iso88596 ar_KW.ISO8859-6 +ar_KW.ISO-8859-6 ar_KW.ISO8859-6 +ar_KW.utf8 ar_KW.UTF-8 +ar_LB ar_LB.ISO8859-6 +ar_LB.iso88596 ar_LB.ISO8859-6 +ar_LB.ISO-8859-6 ar_LB.ISO8859-6 +ar_LB.utf8 ar_LB.UTF-8 +ar_LY ar_LY.ISO8859-6 +ar_LY.iso88596 ar_LY.ISO8859-6 +ar_LY.ISO-8859-6 ar_LY.ISO8859-6 +ar_LY.utf8 ar_LY.UTF-8 +ar_MA ar_MA.ISO8859-6 +ar_MA.iso88596 ar_MA.ISO8859-6 +ar_MA.ISO-8859-6 ar_MA.ISO8859-6 +ar_MA.utf8 ar_MA.UTF-8 +ar_OM ar_OM.ISO8859-6 +ar_OM.iso88596 ar_OM.ISO8859-6 +ar_OM.ISO-8859-6 ar_OM.ISO8859-6 +ar_OM.utf8 ar_OM.UTF-8 +ar_QA ar_QA.ISO8859-6 +ar_QA.iso88596 ar_QA.ISO8859-6 +ar_QA.ISO-8859-6 ar_QA.ISO8859-6 +ar_QA.utf8 ar_QA.UTF-8 +ar_SA ar_SA.ISO8859-6 +ar_SA.iso88596 ar_SA.ISO8859-6 +ar_SA.ISO-8859-6 ar_SA.ISO8859-6 +ar_SA.utf8 ar_SA.UTF-8 +ar_SD ar_SD.ISO8859-6 +ar_SD.iso88596 ar_SD.ISO8859-6 +ar_SD.ISO-8859-6 ar_SD.ISO8859-6 +ar_SD.utf8 ar_SD.UTF-8 +ar_SY ar_SY.ISO8859-6 +ar_SY.iso88596 ar_SY.ISO8859-6 +ar_SY.ISO-8859-6 ar_SY.ISO8859-6 +ar_SY.utf8 ar_SY.UTF-8 +ar_TN ar_TN.ISO8859-6 +ar_TN.iso88596 ar_TN.ISO8859-6 +ar_TN.ISO-8859-6 ar_TN.ISO8859-6 +ar_TN.utf8 ar_TN.UTF-8 +as as_IN.UTF-8 +as_IN as_IN.UTF-8 +as_IN.utf8 as_IN.UTF-8 +ar_YE ar_YE.ISO8859-6 +ar_YE.iso88596 ar_YE.ISO8859-6 +ar_YE.ISO-8859-6 ar_YE.ISO8859-6 +ar_YE.utf8 ar_YE.UTF-8 +az az_AZ.ISO8859-9E +az_AZ az_AZ.ISO8859-9E +az_AZ.iso88599e az_AZ.ISO8859-9E +be be_BY.CP1251 +be@latin be_BY.UTF-8@latin +be_BY be_BY.CP1251 +be_BY@latin be_BY.UTF-8@latin +be_BY.cp1251 be_BY.CP1251 +be_BY.microsoftcp1251 be_BY.CP1251 +be_BY.microsoft-cp1251 be_BY.CP1251 +be_BY.MICROSOFT-CP1251 be_BY.CP1251 +be_BY.utf8 be_BY.UTF-8 +be_BY.utf8@latin be_BY.UTF-8@latin +bg bg_BG.CP1251 +bg_BG bg_BG.CP1251 +bg_BG.cp1251 bg_BG.CP1251 +bg_BG.microsoftcp1251 bg_BG.CP1251 +bg_BG.microsoft-cp1251 bg_BG.CP1251 +bg_BG.MICROSOFT-CP1251 bg_BG.CP1251 +bg_BG.iso88595 bg_BG.ISO8859-5 +bg_BG.ISO-8859-5 bg_BG.ISO8859-5 +bg_BG.koi8r bg_BG.KOI8-R +be_BG.utf8 bg_BG.UTF-8 +bn_IN bn_IN.UTF-8 +bn_IN.utf8 bn_IN.UTF-8 +bo_IN bo_IN.UTF-8 +bo_IN.utf8 bo_IN.UTF-8 +br br_FR.ISO8859-1 +br_FR br_FR.ISO8859-1 +br_FR.iso88591 br_FR.ISO8859-1 +br_FR.ISO-8859-1 br_FR.ISO8859-1 +br_FR.iso885914 br_FR.ISO8859-14 +br_FR.ISO-8859-14 br_FR.ISO8859-14 +br_FR.iso885915 br_FR.ISO8859-15 +br_FR.ISO-8859-15 br_FR.ISO8859-15 +br_FR.ISO-8859-15@euro br_FR.ISO8859-15 +br_FR@euro br_FR.ISO8859-15 +br_FR.UTF-8@euro br_FR.UTF-8 +bs bs_BA.ISO8859-2 +bs_BA bs_BA.ISO8859-2 +bs_BA.iso88592 bs_BA.ISO8859-2 +bs_BA.ISO-8859-2 bs_BA.ISO8859-2 +bs_BA.ISO_8859-2 bs_BA.ISO8859-2 +ca ca_ES.ISO8859-1 +ca_AD ca_AD.ISO8859-1 +ca_AD@euro ca_AD.ISO8859-15 +ca_AD.iso88591 ca_AD.ISO8859-1 +ca_AD.ISO-8859-1 ca_AD.ISO8859-1 +ca_AD.iso885915 ca_AD.ISO8859-15 +ca_AD.utf8 ca_AD.UTF-8 +ca_AD.ISO-8859-15 ca_AD.ISO8859-15 +ca_AD.ISO-8859-15@euro ca_AD.ISO8859-15 +ca_AD.UTF-8@euro ca_AD.UTF-8 +ca_ES ca_ES.ISO8859-1 +ca_ES@euro ca_ES.ISO8859-15 +ca_ES.iso88591 ca_ES.ISO8859-1 +ca_ES.ISO-8859-1 ca_ES.ISO8859-1 +ca_ES.iso885915 ca_ES.ISO8859-15 +ca_ES.utf8 ca_ES.UTF-8 +ca_ES.ISO-8859-15 ca_ES.ISO8859-15 +ca_ES.ISO-8859-15@euro ca_ES.ISO8859-15 +ca_ES.UTF-8@euro ca_ES.UTF-8 +ca_FR ca_FR.ISO8859-1 +ca_FR@euro ca_FR.ISO8859-15 +ca_FR.iso88591 ca_FR.ISO8859-1 +ca_FR.ISO-8859-1 ca_FR.ISO8859-1 +ca_FR.iso885915 ca_FR.ISO8859-15 +ca_FR.utf8 ca_FR.UTF-8 +ca_FR.ISO-8859-15 ca_FR.ISO8859-15 +ca_FR.ISO-8859-15@euro ca_FR.ISO8859-15 +ca_FR.UTF-8@euro ca_FR.UTF-8 +ca_IT ca_IT.ISO8859-1 +ca_IT@euro ca_IT.ISO8859-15 +ca_IT.iso88591 ca_IT.ISO8859-1 +ca_IT.ISO-8859-1 ca_IT.ISO8859-1 +ca_IT.iso885915 ca_IT.ISO8859-15 +ca_IT.utf8 ca_IT.UTF-8 +ca_IT.ISO-8859-15 ca_IT.ISO8859-15 +ca_IT.ISO-8859-15@euro ca_IT.ISO8859-15 +ca_IT.UTF-8@euro ca_IT.UTF-8 +cs cs_CZ.ISO8859-2 +cs_CS cs_CZ.ISO8859-2 +cs_CS.ISO8859-2 cs_CZ.ISO8859-2 +cs_CZ cs_CZ.ISO8859-2 +cs_CZ.iso88592 cs_CZ.ISO8859-2 +cs_CS.iso8859-2 cs_CZ.ISO8859-2 +cs_CZ.ISO-8859-2 cs_CZ.ISO8859-2 +cs_CZ.ISO_8859-2 cs_CZ.ISO8859-2 +cs_CZ.utf8 cs_CZ.UTF-8 +cy cy_GB.ISO8859-1 +cy_GB cy_GB.ISO8859-1 +cy_GB.iso88591 cy_GB.ISO8859-1 +cy_GB.ISO-8859-1 cy_GB.ISO8859-1 +cy_GB.iso885914 cy_GB.ISO8859-14 +cy_GB.ISO-8859-14 cy_GB.ISO8859-14 +cy_GB.iso885915 cy_GB.ISO8859-15 +cy_GB.ISO-8859-15 cy_GB.ISO8859-15 +da da_DK.ISO8859-1 +da.ISO8859-15 da_DK.ISO8859-15 +da_DK da_DK.ISO8859-1 +DA_DK da_DK.ISO8859-1 +da_DK.88591 da_DK.ISO8859-1 +da_DK.88591.en da_DK.ISO8859-1 +da_DK.iso88591 da_DK.ISO8859-1 +da_DK.ISO-8859-1 da_DK.ISO8859-1 +da_DK.ISO_8859-1 da_DK.ISO8859-1 +da_DK.iso885915 da_DK.ISO8859-15 +da_DK.ISO-8859-15 da_DK.ISO8859-15 +da_DK.8859-15 da_DK.ISO8859-15 +da_DK.utf8 da_DK.UTF-8 +DA_DK.UTF-8 da_DK.UTF-8 +de de_DE.ISO8859-1 +de.ISO8859-15 de_DE.ISO8859-15 +de_AT de_AT.ISO8859-1 +de_AT@euro de_AT.ISO8859-15 +de_AT.iso88591 de_AT.ISO8859-1 +de_AT.ISO-8859-1 de_AT.ISO8859-1 +de_AT.ISO_8859-1 de_AT.ISO8859-1 +de_AT.iso885915 de_AT.ISO8859-15 +de_AT.ISO-8859-15 de_AT.ISO8859-15 +de_AT.ISO-8859-15@euro de_AT.ISO8859-15 +de_AT.UTF-8@euro de_AT.UTF-8 +de_AT.utf8 de_AT.UTF-8 +de_BE de_BE.ISO8859-1 +de_BE@euro de_BE.ISO8859-15 +de_BE.iso88591 de_BE.ISO8859-1 +de_BE.ISO_8859-1 de_BE.ISO8859-1 +de_BE.ISO-8859-1 de_BE.ISO8859-1 +de_BE.iso885915 de_BE.ISO8859-15 +de_BE.ISO_8859-15 de_BE.ISO8859-15 +de_BE.ISO-8859-15 de_BE.ISO8859-15 +de_BE.ISO-8859-15@euro de_BE.ISO8859-15 +de_BE.UTF-8@euro de_BE.UTF-8 +de_CH de_CH.ISO8859-1 +de_CH.iso88591 de_CH.ISO8859-1 +de_CH.ISO_8859-1 de_CH.ISO8859-1 +de_CH.ISO-8859-1 de_CH.ISO8859-1 +de_CH.iso885915 de_CH.ISO8859-15 +de_CH.ISO_8859-15 de_CH.ISO8859-15 +de_CH.ISO-8859-15 de_CH.ISO8859-15 +de_CH.utf8 de_CH.UTF-8 +de_DE de_DE.ISO8859-1 +de_DE@euro de_DE.ISO8859-15 +de_DE.88591 de_DE.ISO8859-1 +de_DE.88591.en de_DE.ISO8859-1 +de_DE.iso88591 de_DE.ISO8859-1 +de_DE.ISO-8859-1 de_DE.ISO8859-1 +de_DE.ISO_8859-1 de_DE.ISO8859-1 +de_DE.iso885915 de_DE.ISO8859-15 +de_DE.ISO-8859-15 de_DE.ISO8859-15 +de_DE.ISO_8859-15 de_DE.ISO8859-15 +de_DE.8859-15 de_DE.ISO8859-15 +de_DE.8859-15@euro de_DE.ISO8859-15 +de_DE.ISO-8859-15@euro de_DE.ISO8859-15 +de_DE.UTF-8@euro de_DE.UTF-8 +de_DE.utf8 de_DE.UTF-8 +de_IT de_IT.UTF-8 +de_IT.utf8 de_IT.UTF-8 +de_LI de_LI.ISO8859-1 +de_LI.iso88591 de_LI.ISO8859-1 +de_LI.ISO_8859-1 de_LI.ISO8859-1 +de_LI.ISO-8859-1 de_LI.ISO8859-1 +de_LI.iso885915 de_LI.ISO8859-15 +de_LI.ISO_8859-15 de_LI.ISO8859-15 +de_LI.ISO-8859-15 de_LI.ISO8859-15 +de_LI.utf8 de_LI.UTF-8 +de_LU de_LU.ISO8859-1 +de_LU@euro de_LU.ISO8859-15 +de_LU.iso88591 de_LU.ISO8859-1 +de_LU.ISO_8859-1 de_LU.ISO8859-1 +de_LU.ISO-8859-1 de_LU.ISO8859-1 +de_LU.iso885915 de_LU.ISO8859-15 +de_LU.ISO_8859-15 de_LU.ISO8859-15 +de_LU.ISO-8859-15 de_LU.ISO8859-15 +de_LU.ISO-8859-15@euro de_LU.ISO8859-15 +de_LU.UTF-8@euro de_LU.UTF-8 +de_LU.utf8 de_LU.UTF-8 +GER_DE.8859 de_DE.ISO8859-1 +GER_DE.8859.in de_DE.ISO8859-1 +ee ee_EE.ISO8859-4 +ee_EE ee_EE.ISO8859-4 +ee_EE.iso88594 ee_EE.ISO8859-4 +el el_GR.ISO8859-7 +el_GR el_GR.ISO8859-7 +el_GR.iso88597 el_GR.ISO8859-7 +el_GR.ISO-8859-7 el_GR.ISO8859-7 +el_GR@euro el_GR.ISO8859-15 +el_GR.utf8 el_GR.UTF-8 +en en_US.ISO8859-1 +en.ISO-8859-1 en_US.ISO8859-1 +en_AU en_AU.ISO8859-1 +en_AU.iso88591 en_AU.ISO8859-1 +en_AU.ISO-8859-1 en_AU.ISO8859-1 +en_AU.ISO_8859-1 en_AU.ISO8859-1 +en_AU.utf8 en_AU.UTF-8 +en_BE en_BE.ISO8859-1 +en_BE@euro en_BE.ISO8859-15 +en_BE.utf8 en_BE.UTF-8 +en_BW en_BW.ISO8859-1 +en_BW.utf8 en_BW.UTF-8 +en_BW.iso88591 en_BW.ISO8859-1 +en_BW.ISO-8859-1 en_BW.ISO8859-1 +en_CA en_CA.ISO8859-1 +en_CA.iso88591 en_CA.ISO8859-1 +en_CA.ISO-8859-1 en_CA.ISO8859-1 +en_CA.ISO_8859-1 en_CA.ISO8859-1 +en_CA.utf8 en_CA.UTF-8 +en_DL.utf8 en_DL.UTF-8 +en_GB en_GB.ISO8859-1 +en_GB.88591 en_GB.ISO8859-1 +en_GB.88591.en en_GB.ISO8859-1 +en_GB.iso88591 en_GB.ISO8859-1 +en_GB.ISO-8859-1 en_GB.ISO8859-1 +en_GB.ISO_8859-1 en_GB.ISO8859-1 +en_GB.iso885915 en_GB.ISO8859-15 +en_GB.ISO-8859-15 en_GB.ISO8859-15 +en_GB.utf8 en_GB.UTF-8 +en_UK en_GB.ISO8859-1 +ENG_GB.8859 en_GB.ISO8859-1 +ENG_GB.8859.in en_GB.ISO8859-1 +en_HK en_HK.ISO8859-1 +en_HK.iso88591 en_HK.ISO8859-1 +en_HK.ISO-8859-1 en_HK.ISO8859-1 +en_HK.utf8 en_HK.UTF-8 +en_IE en_IE.ISO8859-1 +en_IE.iso88591 en_IE.ISO8859-1 +en_IE.ISO-8859-1 en_IE.ISO8859-1 +en_IE.iso885915 en_IE.ISO8859-15 +en_IE.ISO-8859-15 en_IE.ISO8859-15 +en_IE.ISO-8859-15@euro en_IE.ISO8859-15 +en_IE@euro en_IE.ISO8859-15 +en_IE.UTF-8@euro en_IE.UTF-8 +en_IE.utf8 en_IE.UTF-8 +en_IN.utf8 en_IN.UTF-8 +en_IN en_IN.ISO8859-1 +en_NZ en_NZ.ISO8859-1 +en_NZ.iso88591 en_NZ.ISO8859-1 +en_NZ.ISO-8859-1 en_NZ.ISO8859-1 +en_NZ.utf8 en_NZ.UTF-8 +en_PH en_PH.ISO8859-1 +en_PH.utf8 en_PH.UTF-8 +en_PH.iso88591 en_PH.ISO8859-1 +en_PH.ISO-8859-1 en_PH.ISO8859-1 +en_SG en_SG.ISO8859-1 +en_SG.utf8 en_SG.UTF-8 +en_SG.iso88591 en_SG.ISO8859-1 +en_SG.ISO-8859-1 en_SG.ISO8859-1 +en_US en_US.ISO8859-1 +EN_US en_US.ISO8859-1 +en_US.88591 en_US.ISO8859-1 +en_US.88591.en en_US.ISO8859-1 +en_US.iso88591 en_US.ISO8859-1 +en_US.ISO-8859-1 en_US.ISO8859-1 +en_US.ISO_8859-1 en_US.ISO8859-1 +en_US.iso885915 en_US.ISO8859-15 +en_US.ISO-8859-15 en_US.ISO8859-15 +en_US.8859-15 en_US.ISO8859-15 +en_US.ISO8859-15@euro en_US.ISO8859-15 +en_US.utf8 en_US.UTF-8 +EN_US.UTF-8 en_US.UTF-8 +en_ZA en_ZA.ISO8859-1 +en_ZA.88591 en_ZA.ISO8859-1 +en_ZA.88591.en en_ZA.ISO8859-1 +en_ZA.iso88591 en_ZA.ISO8859-1 +en_ZA.ISO-8859-1 en_ZA.ISO8859-1 +en_ZA.ISO_8859-1 en_ZA.ISO8859-1 +en_ZA.iso885915 en_ZA.ISO8859-15 +en_ZA.ISO-8859-15 en_ZA.ISO8859-15 +en_ZA.utf8 en_ZA.UTF-8 +en_ZW en_ZW.ISO8859-1 +en_ZW.utf8 en_ZS.UTF-8 +en_ZW.iso88591 en_ZW.ISO8859-1 +en_ZW.ISO-8859-1 en_ZW.ISO8859-1 +eo eo_XX.ISO8859-3 +eo_EO eo_EO.ISO8859-3 +eo_XX eo_XX.ISO8859-3 +es es_ES.ISO8859-1 +es.UTF-8 es_ES.UTF-8 +es_AR es_AR.ISO8859-1 +es_AR.iso88591 es_AR.ISO8859-1 +es_AR.ISO-8859-1 es_AR.ISO8859-1 +es_AR.utf8 es_AR.UTF-8 +es_BO es_BO.ISO8859-1 +es_BO.iso88591 es_BO.ISO8859-1 +es_BO.ISO-8859-1 es_BO.ISO8859-1 +es_BO.utf8 es_BO.UTF-8 +es_CL es_CL.ISO8859-1 +es_CL.iso88591 es_CL.ISO8859-1 +es_CL.ISO-8859-1 es_CL.ISO8859-1 +es_CL.utf8 es_CL.UTF-8 +es_CO es_CO.ISO8859-1 +es_CO.iso88591 es_CO.ISO8859-1 +es_CO.ISO-8859-1 es_CO.ISO8859-1 +es_CO.utf8 es_CO.UTF-8 +es_CR es_CR.ISO8859-1 +es_CR.iso88591 es_CR.ISO8859-1 +es_CR.ISO-8859-1 es_CR.ISO8859-1 +es_CR.utf8 es_CR.UTF-8 +es_DO es_DO.ISO8859-1 +es_DO.iso88591 es_DO.ISO8859-1 +es_DO.ISO-8859-1 es_DO.ISO8859-1 +es_DO.utf8 es_DO.UTF-8 +es_EC es_EC.ISO8859-1 +es_EC.iso88591 es_EC.ISO8859-1 +es_EC.ISO-8859-1 es_EC.ISO8859-1 +es_EC.utf8 es_EC.UTF-8 +es_ES es_ES.ISO8859-1 +es_ES.88591 es_ES.ISO8859-1 +es_ES.88591.en es_ES.ISO8859-1 +es_ES.iso88591 es_ES.ISO8859-1 +es_ES.ISO-8859-1 es_ES.ISO8859-1 +es_ES.ISO_8859-1 es_ES.ISO8859-1 +es_ES.iso885915 es_ES.ISO8859-15 +es_ES.ISO-8859-15 es_ES.ISO8859-15 +es_ES.ISO-8859-15@euro es_ES.ISO8859-15 +es_ES@euro es_ES.ISO8859-15 +es_ES.UTF-8@euro es_ES.UTF-8 +es_ES.utf8 es_ES.UTF-8 +es_GT es_GT.ISO8859-1 +es_GT.iso88591 es_GT.ISO8859-1 +es_GT.ISO-8859-1 es_GT.ISO8859-1 +es_GT.utf8 es_GT.UTF-8 +es_HN es_HN.ISO8859-1 +es_HN.iso88591 es_HN.ISO8859-1 +es_HN.ISO-8859-1 es_HN.ISO8859-1 +es_HN.utf8 es_HN.UTF-8 +es_MX es_MX.ISO8859-1 +es_MX.iso88591 es_MX.ISO8859-1 +es_MX.ISO-8859-1 es_MX.ISO8859-1 +es_MX.utf8 es_MX.UTF-8 +es_NI es_NI.ISO8859-1 +es_NI.iso88591 es_NI.ISO8859-1 +es_NI.ISO-8859-1 es_NI.ISO8859-1 +es_NI.utf8 es_NI.UTF-8 +es_PA es_PA.ISO8859-1 +es_PA.iso88591 es_PA.ISO8859-1 +es_PA.ISO-8859-1 es_PA.ISO8859-1 +es_PA.iso885915 es_PA.ISO8859-15 +es_PA.utf8 es_PA.UTF-8 +es_PE es_PE.ISO8859-1 +es_PE.iso88591 es_PE.ISO8859-1 +es_PE.ISO-8859-1 es_PE.ISO8859-1 +es_PE.iso885915 es_PE.ISO8859-15 +es_PE.utf8 es_PE.UTF-8 +es_PR es_PR.ISO8859-1 +es_PR.iso88591 es_PR.ISO8859-1 +es_PR.ISO-8859-1 es_PR.ISO8859-1 +es_PR.utf8 es_PR.UTF-8 +es_PY es_PY.ISO8859-1 +es_PY.iso88591 es_PY.ISO8859-1 +es_PY.ISO-8859-1 es_PY.ISO8859-1 +es_PY.iso885915 es_PY.ISO8859-15 +es_PY.utf8 es_PY.UTF-8 +es_SV es_SV.ISO8859-1 +es_SV.iso88591 es_SV.ISO8859-1 +es_SV.ISO-8859-1 es_SV.ISO8859-1 +es_SV.iso885915 es_SV.ISO8859-15 +es_SV.utf8 es_SV.UTF-8 +es_US es_US.ISO8859-1 +es_US.iso88591 es_US.ISO8859-1 +es_US.ISO-8859-1 es_US.ISO8859-1 +es_UY es_UY.ISO8859-1 +es_UY.iso88591 es_UY.ISO8859-1 +es_UY.ISO-8859-1 es_UY.ISO8859-1 +es_UY.iso885915 es_UY.ISO8859-15 +es_UY.utf8 es_UY.UTF-8 +es_VE es_VE.ISO8859-1 +es_VE.iso88591 es_VE.ISO8859-1 +es_VE.ISO-8859-1 es_VE.ISO8859-1 +es_VE.iso885915 es_VE.ISO8859-15 +es_VE.utf8 es_VE.UTF-8 +# According to Estonian local standards, ISO8859-4 is not a recommended +# charset. EVS8:2000 specifies ISO8859-15 as the base charset. +et et_EE.ISO8859-15 +et_EE et_EE.ISO8859-15 +et_EE.iso88591 et_EE.ISO8859-1 +et_EE.ISO-8859-1 et_EE.ISO8859-1 +et_EE.iso88594 et_EE.ISO8859-4 +et_EE.ISO-8859-4 et_EE.ISO8859-4 +et_EE.iso885913 et_EE.ISO8859-13 +et_EE.ISO-8859-13 et_EE.ISO8859-13 +et_EE.iso885915 et_EE.ISO8859-15 +et_EE.ISO-8859-15 et_EE.ISO8859-15 +et_EE.utf8 et_EE.UTF-8 +eu eu_ES.ISO8859-1 +eu_ES eu_ES.ISO8859-1 +eu_ES.iso88591 eu_ES.ISO8859-1 +eu_ES.ISO-8859-1 eu_ES.ISO8859-1 +eu_ES.iso885915 eu_ES.ISO8859-15 +eu_ES.ISO-8859-15 eu_ES.ISO8859-15 +eu_ES.ISO-8859-15@euro eu_ES.ISO8859-15 +eu_ES@euro eu_ES.ISO8859-15 +eu_ES.UTF-8@euro eu_ES.UTF-8 +fa fa_IR.UTF-8 +fa_IR fa_IR.UTF-8 +fa_IR.isiri3342 fa_IR.ISIRI-3342 +fa_IR.utf8 fa_IR.UTF-8 +fi fi_FI.ISO8859-15 +fi.ISO8859-15 fi_FI.ISO8859-15 +fi_FI fi_FI.ISO8859-15 +fi_FI.88591 fi_FI.ISO8859-1 +fi_FI.88591.en fi_FI.ISO8859-1 +fi_FI.iso88591 fi_FI.ISO8859-1 +fi_FI.ISO-8859-1 fi_FI.ISO8859-1 +fi_FI.ISO_8859-1 fi_FI.ISO8859-1 +fi_FI.iso885915 fi_FI.ISO8859-15 +fi_FI.ISO-8859-15 fi_FI.ISO8859-15 +fi_FI.ISO-8859-15@euro fi_FI.ISO8859-15 +fi_FI@euro fi_FI.ISO8859-15 +fi_FI.utf8 fi_FI.UTF-8 +fi_FI.UTF-8@euro fi_FI.UTF-8 +fo fo_FO.ISO8859-1 +fo_FO fo_FO.ISO8859-1 +fo_FO.iso88591 fo_FO.ISO8859-1 +fo_FO.ISO-8859-1 fo_FO.ISO8859-1 +fo_FO.iso885915 fo_FO.ISO8859-15 +fo_FO.ISO-8859-15 fo_FO.ISO8859-15 +fo_FO.utf8 fo_FO.UTF-8 +fr fr_FR.ISO8859-1 +fr.ISO8859-15 fr_FR.ISO8859-15 +fr.UTF-8 fr_FR.UTF-8 +fr_BE fr_BE.ISO8859-1 +fr_BE.88591 fr_BE.ISO8859-1 +fr_BE.88591.en fr_BE.ISO8859-1 +fr_BE.ISO-8859-1 fr_BE.ISO8859-1 +fr_BE.ISO_8859-1 fr_BE.ISO8859-1 +fr_BE.iso885915 fr_BE.ISO8859-15 +fr_BE.ISO-8859-15 fr_BE.ISO8859-15 +fr_BE.ISO-8859-15@euro fr_BE.ISO8859-15 +fr_BE@euro fr_BE.ISO8859-15 +fr_BE.utf8 fr_BE.UTF-8 +fr_BE.UTF-8@euro fr_BE.UTF-8 +fr_CA fr_CA.ISO8859-1 +fr_CA.88591 fr_CA.ISO8859-1 +fr_CA.88591.en fr_CA.ISO8859-1 +fr_CA.iso88591 fr_CA.ISO8859-1 +fr_CA.ISO-8859-1 fr_CA.ISO8859-1 +fr_CA.ISO_8859-1 fr_CA.ISO8859-1 +fr_CA.iso885915 fr_CA.ISO8859-15 +fr_CA.ISO-8859-15 fr_CA.ISO8859-15 +fr_CA.utf8 fr_CA.UTF-8 +fr_CH fr_CH.ISO8859-1 +fr_CH.88591 fr_CH.ISO8859-1 +fr_CH.88591.en fr_CH.ISO8859-1 +fr_CH.ISO-8859-1 fr_CH.ISO8859-1 +fr_CH.ISO_8859-1 fr_CH.ISO8859-1 +fr_CH.iso885915 fr_CH.ISO8859-15 +fr_CH.ISO-8859-15 fr_CH.ISO8859-15 +fr_CH.utf8 fr_CH.UTF-8 +fr_FR fr_FR.ISO8859-1 +fr_FR.88591 fr_FR.ISO8859-1 +fr_FR.88591.en fr_FR.ISO8859-1 +fr_FR.iso88591 fr_FR.ISO8859-1 +fr_FR.ISO-8859-1 fr_FR.ISO8859-1 +fr_FR.ISO_8859-1 fr_FR.ISO8859-1 +fr_FR.iso885915 fr_FR.ISO8859-15 +fr_FR.ISO-8859-15 fr_FR.ISO8859-15 +fr_FR.ISO-8859-15@euro fr_FR.ISO8859-15 +fr_FR@euro fr_FR.ISO8859-15 +fr_FR.UTF-8@euro fr_FR.UTF-8 +fr_FR.utf8 fr_FR.UTF-8 +fr_LU fr_LU.ISO8859-1 +fr_LU.88591 fr_LU.ISO8859-1 +fr_LU.88591.en fr_LU.ISO8859-1 +fr_LU.iso88591 fr_LU.ISO8859-1 +fr_LU.ISO-8859-1 fr_LU.ISO8859-1 +fr_LU.ISO_8859-1 fr_LU.ISO8859-1 +fr_LU.iso885915 fr_LU.ISO8859-15 +fr_LU.ISO-8859-15 fr_LU.ISO8859-15 +fr_LU.ISO-8859-15@euro fr_LU.ISO8859-15 +fr_LU@euro fr_LU.ISO8859-15 +fr_LU.UTF-8@euro fr_LU.UTF-8 +fr_LU.utf8 fr_LU.UTF-8 +FRE_FR.8859 fr_FR.ISO8859-1 +FRE_FR.8859.in fr_FR.ISO8859-1 +ga ga_IE.ISO8859-1 +ga_IE ga_IE.ISO8859-1 +ga_IE.iso88591 ga_IE.ISO8859-1 +ga_IE.ISO-8859-1 ga_IE.ISO8859-1 +ga_IE.iso885914 ga_IE.ISO8859-14 +ga_IE.ISO-8859-14 ga_IE.ISO8859-14 +ga_IE.iso885915 ga_IE.ISO8859-15 +ga_IE.ISO-8859-15 ga_IE.ISO8859-15 +ga_IE.ISO-8859-15@euro ga_IE.ISO8859-15 +ga_IE@euro ga_IE.ISO8859-15 +ga_IE.UTF-8@euro ga_IE.UTF-8 +ga_IE.utf8 ga_IE.UTF-8 +gd gd_GB.ISO8859-1 +gd_GB gd_GB.ISO8859-1 +gd_GB.iso88591 gd_GB.ISO8859-1 +gd_GB.ISO-8859-1 gd_GB.ISO8859-1 +gd_GB.iso885914 gd_GB.ISO8859-14 +gd_GB.ISO-8859-14 gd_GB.ISO8859-14 +gd_GB.iso885915 gd_GB.ISO8859-15 +gd_GB.ISO-8859-15 gd_GB.ISO8859-15 +gl gl_ES.ISO8859-1 +gl_ES gl_ES.ISO8859-1 +gl_ES.iso88591 gl_ES.ISO8859-1 +gl_ES.ISO-8859-1 gl_ES.ISO8859-1 +gl_ES.iso885915 gl_ES.ISO8859-15 +gl_ES.ISO-8859-15 gl_ES.ISO8859-15 +gl_ES.ISO-8859-15@euro gl_ES.ISO8859-15 +gl_ES@euro gl_ES.ISO8859-15 +gl_ES.UTF-8@euro gl_ES.UTF-8 +gl_ES.utf8 gl_ES.UTF-8 +gu_IN gu_IN.UTF-8 +gu_IN.utf8 gu_IN.UTF-8 +gv gv_GB.ISO8859-1 +gv_GB gv_GB.ISO8859-1 +gv_GB.iso88591 gv_GB.ISO8859-1 +gv_GB.ISO-8859-1 gv_GB.ISO8859-1 +gv_GB.iso885914 gv_GB.ISO8859-14 +gv_GB.ISO-8859-14 gv_GB.ISO8859-14 +gv_GB.iso885915 gv_GB.ISO8859-15 +gv_GB.ISO-8859-15 gv_GB.ISO8859-15 +he he_IL.ISO8859-8 +he_IL he_IL.ISO8859-8 +HE_IL he_IL.ISO8859-8 +he_IL.iso88598 he_IL.ISO8859-8 +he_IL.ISO-8859-8 he_IL.ISO8859-8 +he_IL.cp1255 he_IL.CP1255 +he_IL.microsoftcp1255 he_IL.CP1255 +he_IL.microsoft-cp1255 he_IL.CP1255 +he_IL.MICROSOFT-CP1255 he_IL.CP1255 +he_IL.utf8 he_IL.UTF-8 +HE_IL.UTF-8 he_IL.UTF-8 +hi hi_IN.ISCII-DEV +hi_IN hi_IN.ISCII-DEV +HI_IN hi_IN.ISCII-DEV +hi_IN.isciidev hi_IN.ISCII-DEV +hi_IN.utf8 hi_IN.UTF-8 +HI_IN.UTF-8 hi_IN.UTF-8 +hne hne_IN.UTF-8 +hne_IN hne_IN.UTF-8 +hne_IN.utf8 hne_IN.UTF-8 +hr hr_HR.ISO8859-2 +hr_HR hr_HR.ISO8859-2 +hr_HR.iso88592 hr_HR.ISO8859-2 +hr_HR.ISO-8859-2 hr_HR.ISO8859-2 +hr_HR.ISO_8859-2 hr_HR.ISO8859-2 +hr_HR.utf8 hr_HR.UTF-8 +hu hu_HU.ISO8859-2 +hu_HU hu_HU.ISO8859-2 +hu_HU.iso88592 hu_HU.ISO8859-2 +hu_HU.ISO-8859-2 hu_HU.ISO8859-2 +hu_HU.utf8 hu_HU.UTF-8 +ia ia.UTF-8 +ia.utf8 ia.UTF-8 +ie ie.UTF-8 +ie.utf8 ie.UTF-8 +is is_IS.ISO8859-1 +is_IS is_IS.ISO8859-1 +is_IS.iso88591 is_IS.ISO8859-1 +is_IS.ISO-8859-1 is_IS.ISO8859-1 +is_IS.ISO_8859-1 is_IS.ISO8859-1 +is_IS.iso885915 is_IS.ISO8859-15 +is_IS.ISO-8859-15 is_IS.ISO8859-15 +is_IS.utf8 is_IS.UTF-8 +it it_IT.ISO8859-1 +it.ISO8859-15 it_IT.ISO8859-15 +it.UTF-8 it_IT.UTF-8 +it_CH it_CH.ISO8859-1 +it_CH.iso88591 it_CH.ISO8859-1 +it_CH.ISO_8859-1 it_CH.ISO8859-1 +it_CH.ISO-8859-1 it_CH.ISO8859-1 +it_CH.iso885915 it_CH.ISO8859-15 +it_CH.utf8 it_CH.UTF-8 +it_IT it_IT.ISO8859-1 +it_IT.88591 it_IT.ISO8859-1 +it_IT.88591.en it_IT.ISO8859-1 +it_IT.iso88591 it_IT.ISO8859-1 +it_IT.ISO-8859-1 it_IT.ISO8859-1 +it_IT.ISO_8859-1 it_IT.ISO8859-1 +it_IT.iso885915 it_IT.ISO8859-15 +it_IT.ISO-8859-15 it_IT.ISO8859-15 +it_IT.ISO-8859-15@euro it_IT.ISO8859-15 +it_IT@euro it_IT.ISO8859-15 +it_IT.utf8 it_IT.UTF-8 +it_IT.UTF-8@euro it_IT.UTF-8 +# NUNACOM is an encoding for the Inuktitut syllabics +# we have little else on this encoding. +iu iu_CA.NUNACOM-8 +iu_CA iu_CA.NUNACOM-8 +iu_CA.nunacom8 iu_CA.NUNACOM-8 +ja_JP ja_JP.eucJP +ja ja_JP.eucJP +ja.JIS ja_JP.JIS7 +ja.SJIS ja_JP.SJIS +ja_JP.ujis ja_JP.eucJP +Jp_JP ja_JP.eucJP +ja_JP.AJEC ja_JP.eucJP +ja_JP.EUC ja_JP.eucJP +ja_JP.EUC-JP ja_JP.eucJP +ja_JP.EUC_JP ja_JP.eucJP +ja_JP.eucjp ja_JP.eucJP +ja_JP.ISO-2022-JP ja_JP.JIS7 +ja_JP.JIS ja_JP.JIS7 +ja_JP.jis7 ja_JP.JIS7 +ja_JP.mscode ja_JP.SJIS +ja_JP.PCK ja_JP.SJIS +ja_JP.sjis ja_JP.SJIS +ja_JP.utf8 ja_JP.UTF-8 +JA_JP.utf8 ja_JP.UTF-8 +ka ka_GE.GEORGIAN-ACADEMY +ka_GE ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianacademy ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianrs ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianps ka_GE.GEORGIAN-PS +kl kl_GL.ISO8859-1 +kl_GL kl_GL.ISO8859-1 +kl_GL.iso88591 kl_GL.ISO8859-1 +kl_GL.ISO-8859-1 kl_GL.ISO8859-1 +kl_GL.iso885915 kl_GL.ISO8859-15 +kl_GL.utf8 kl_GL.UTF-8 +km_KH km_KH.UTF-8 +km_KH.utf8 km_KH.UTF-8 +kn kn_IN.UTF-8 +kn_IN kn_IN.UTF-8 +kn_IN.utf8 kn_IN.UTF-8 +ko ko_KR.eucKR +ko.UTF-8 ko_KR.UTF-8 +ko_KR ko_KR.eucKR +KO_KR ko_KR.eucKR +ko_KR.EUC ko_KR.eucKR +ko_KR.EUC-KR ko_KR.eucKR +ko_KR.euc ko_KR.eucKR +ko_KR.euckr ko_KR.eucKR +ko_KR.utf8 ko_KR.UTF-8 +KO_KR.UTF-8 ko_KR.UTF-8 +ks ks_IN.UTF-8 +ks_IN ks_IN.UTF-8 +ks_IN.utf8 ks_IN.UTF-8 +ks_IN@devanagari ks_IN.UTF-8@devanagari +ks_IN.utf8@devanagari ks_IN.UTF-8@devanagari +kw kw_GB.ISO8859-1 +kw_GB kw_GB.ISO8859-1 +kw_GB.iso88591 kw_GB.ISO8859-1 +kw_GB.ISO-8859-1 kw_GB.ISO8859-1 +kw_GB.iso885914 kw_GB.ISO8859-14 +kw_GB.ISO-8859-14 kw_GB.ISO8859-14 +kw_GB.iso885915 kw_GB.ISO8859-15 +kw_GB.ISO-8859-15 kw_GB.ISO8859-15 +ky ky_KG.UTF-8 +ky_KG ky_KG.UTF-8 +ky_KG.utf8 ky_KG.UTF-8 +lo lo_LA.MULELAO-1 +lo_LA lo_LA.MULELAO-1 +lo_LA.cp1133 lo_LA.IBM-CP1133 +lo_LA.ibmcp1133 lo_LA.IBM-CP1133 +lo_LA.mulelao1 lo_LA.MULELAO-1 +lt lt_LT.ISO8859-13 +lt_LT lt_LT.ISO8859-13 +lt_LT.iso88594 lt_LT.ISO8859-4 +lt_LT.ISO-8859-4 lt_LT.ISO8859-4 +lt_LT.ISO_8859-4 lt_LT.ISO8859-4 +lt_LT.iso885913 lt_LT.ISO8859-13 +lt_LT.ISO-8859-13 lt_LT.ISO8859-13 +lt_LT.ISO_8859-13 lt_LT.ISO8859-13 +lt_LT.utf8 lt_LT.UTF-8 +lv lv_LV.ISO8859-13 +lv_LV lv_LV.ISO8859-13 +lv_LV.iso88594 lv_LV.ISO8859-4 +lv_LV.ISO-8859-4 lv_LV.ISO8859-4 +lv_LV.iso885913 lv_LV.ISO8859-13 +lv_LV.ISO-8859-13 lv_LV.ISO8859-13 +lv_LV.ISO_8859-13 lv_LV.ISO8859-13 +lv_LV.utf8 lv_LV.UTF-8 +mai mai_IN.UTF-8 +mai_IN mai_IN.UTF-8 +mai_IN.utf8 mai_IN.UTF-8 +mi mi_NZ.ISO8859-1 +mi_NZ mi_NZ.ISO8859-1 +mi_NZ.iso88591 mi_NZ.ISO8859-1 +mk mk_MK.ISO8859-5 +mk_MK mk_MK.ISO8859-5 +mk_MK.iso88595 mk_MK.ISO8859-5 +mk_MK.ISO-8859-5 mk_MK.ISO8859-5 +mk_MK.cp1251 mk_MK.CP1251 +mk_MK.microsoftcp1251 mk_MK.CP1251 +mk_MK.microsoft-cp1251 mk_MK.CP1251 +mk_MK.MICROSOFT-CP1251 mk_MK.CP1251 +mk_MK.utf8 mk_MK.UTF-8 +ml ml_IN.UTF-8 +ml_IN ml_IN.UTF-8 +ml_IN.utf8 ml_IN.UTF-8 +mr mr_IN.UTF-8 +mr_IN mr_IN.UTF-8 +mr_IN.utf8 mr_IN.UTF-8 +ms ms_MY.ISO8859-1 +ms_MY ms_MY.ISO8859-1 +ms_MY.iso88591 ms_MY.ISO8859-1 +ms_MY.ISO-8859-1 ms_MY.ISO8859-1 +mt mt_MT.ISO8859-3 +mt_MT mt_MT.ISO8859-3 +mt_MT.ISO-8859-3 mt_MT.ISO8859-3 +nb nb_NO.ISO8859-1 +nb_NO nb_NO.ISO8859-1 +nb_NO.88591 nb_NO.ISO8859-1 +nb_NO.iso88591 nb_NO.ISO8859-1 +nb_NO.ISO-8859-1 nb_NO.ISO8859-1 +nb_NO.iso885915 nb_NO.ISO8859-15 +nb_NO.ISO-8859-15 nb_NO.ISO8859-15 +nb_NO.utf8 nb_NO.UTF-8 +ne_NP ne_NP.UTF-8 +ne_NP.utf8 ne_NP.UTF-8 +nl nl_NL.ISO8859-1 +nl.ISO8859-15 nl_NL.ISO8859-15 +nl_BE nl_BE.ISO8859-1 +nl_BE.88591 nl_BE.ISO8859-1 +nl_BE.88591.en nl_BE.ISO8859-1 +nl_BE.iso88591 nl_BE.ISO8859-1 +nl_BE.ISO-8859-1 nl_BE.ISO8859-1 +nl_BE.ISO_8859-1 nl_BE.ISO8859-1 +nl_BE.iso885915 nl_BE.ISO8859-15 +nl_BE.ISO-8859-15 nl_BE.ISO8859-15 +nl_BE.ISO-8859-15@euro nl_BE.ISO8859-15 +nl_BE@euro nl_BE.ISO8859-15 +nl_BE.utf8 nl_BE.UTF-8 +nl_BE.UTF-8@euro nl_BE.UTF-8 +nl_NL nl_NL.ISO8859-1 +nl_NL.88591 nl_NL.ISO8859-1 +nl_NL.88591.en nl_NL.ISO8859-1 +nl_NL.iso88591 nl_NL.ISO8859-1 +nl_NL.ISO-8859-1 nl_NL.ISO8859-1 +nl_NL.ISO_8859-1 nl_NL.ISO8859-1 +nl_NL.iso885915 nl_NL.ISO8859-15 +nl_NL.ISO-8859-15 nl_NL.ISO8859-15 +nl_NL.ISO-8859-15@euro nl_NL.ISO8859-15 +nl_NL@euro nl_NL.ISO8859-15 +nl_NL.utf8 nl_NL.UTF-8 +nl_NL.UTF-8@euro nl_NL.UTF-8 +nn nn_NO.ISO8859-1 +nn_NO nn_NO.ISO8859-1 +nn_NO.88591 nn_NO.ISO8859-1 +nn_NO.ISO-8859-1 nn_NO.ISO8859-1 +nn_NO.ISO_8859-1 nn_NO.ISO8859-1 +nn_NO.iso885915 nn_NO.ISO8859-15 +nn_NO.ISO-8859-15 nn_NO.ISO8859-15 +nn_NO.utf8 nn_NO.UTF-8 +no no_NO.ISO8859-1 +no_NO no_NO.ISO8859-1 +no_NO.88591 no_NO.ISO8859-1 +no_NO.88591.en no_NO.ISO8859-1 +no_NO.iso88591 no_NO.ISO8859-1 +no_NO.ISO-8859-1 no_NO.ISO8859-1 +no_NO.ISO8859-1@bokmal no_NO.ISO8859-1 +no_NO.ISO8859-1@nynorsk no_NO.ISO8859-1 +no_NO.iso885915 no_NO.ISO8859-15 +no_NO.ISO-8859-15 no_NO.ISO8859-15 +no_NO.utf8 no_NO.UTF-8 +nr nr_ZA.ISO8859-1 +nr_ZA nr_ZA.ISO8859-1 +nr_ZA.iso88591 nr_ZA.ISO8859-1 +nr_ZA.utf8 nr_ZA.UTF-8 +nso nso_ZA.ISO8859-15 +nso_ZA nso_ZA.ISO8859-15 +nso_ZA.iso885915 nso_ZA.ISO8859-15 +nso_ZA.utf8 nso_ZA.UTF-8 +ny ny_NO.ISO8859-1 +ny_NO ny_NO.ISO8859-1 +ny_NO.88591 ny_NO.ISO8859-1 +ny_NO.ISO_8859-1 ny_NO.ISO8859-1 +ny_NO.iso885915 ny_NO.ISO8859-15 +no@nynorsk ny_NO.ISO8859-1 +nynorsk nn_NO.ISO8859-1 +oc oc_FR.ISO8859-1 +oc_FR oc_FR.ISO8859-1 +oc_FR.iso88591 oc_FR.ISO8859-1 +oc_FR.ISO-8859-1 oc_FR.ISO8859-1 +oc_FR.iso885915 oc_FR.ISO8859-15 +oc_FR.ISO-8859-15 oc_FR.ISO8859-15 +oc_FR@euro oc_FR.ISO8859-15 +or or_IN.UTF-8 +or_IN or_IN.UTF-8 +or_IN.utf8 or_IN.UTF-8 +pa pa_IN.UTF-8 +pa_IN pa_IN.UTF-8 +pa_IN.utf8 pa_IN.UTF-8 +pa_PK.utf8 pa_PK.UTF-8 +pd pd_US.ISO8859-1 +pd_DE pd_DE.ISO8859-1 +pd_US pd_US.ISO8859-1 +pd_DE.iso88591 pd_DE.ISO8859-1 +pd_US.iso88591 pd_US.ISO8859-1 +pd_DE.iso885915 pd_DE.ISO8859-15 +pd_US.iso885915 pd_US.ISO8859-15 +ph ph_PH.ISO8859-1 +ph_PH ph_PH.ISO8859-1 +ph_PH.iso88591 ph_PH.ISO8859-1 +pl pl_PL.ISO8859-2 +pl.UTF-8 pl_PL.UTF-8 +pl_PL pl_PL.ISO8859-2 +pl_PL.iso88592 pl_PL.ISO8859-2 +pl_PL.ISO-8859-2 pl_PL.ISO8859-2 +pl_PL.utf8 pl_PL.UTF-8 +pp pp_AN.ISO8859-1 +pp_AN pp_AN.ISO8859-1 +pp_AN.iso88591 pp_AN.ISO8859-1 +pt pt_PT.ISO8859-1 +pt.ISO8859-15 pt_PT.ISO8859-15 +pt_BR pt_BR.ISO8859-1 +pt_BR.88591 pt_BR.ISO8859-1 +pt_BR.88591.en pt_BR.ISO8859-1 +pt_BR.iso88591 pt_BR.ISO8859-1 +pt_BR.ISO-8859-1 pt_BR.ISO8859-1 +pt_BR.ISO_8859-1 pt_BR.ISO8859-1 +pt_BR.iso885915 pt_BR.ISO8859-15 +pt_BR.utf8 pt_BR.UTF-8 +pt_PT pt_PT.ISO8859-1 +pt_PT.88591 pt_PT.ISO8859-1 +pt_PT.88591.en pt_PT.ISO8859-1 +pt_PT.iso88591 pt_PT.ISO8859-1 +pt_PT.ISO-8859-1 pt_PT.ISO8859-1 +pt_PT.ISO_8859-1 pt_PT.ISO8859-1 +pt_PT.iso885915 pt_PT.ISO8859-15 +pt_PT.ISO-8859-15 pt_PT.ISO8859-15 +pt_PT.ISO-8859-15@euro pt_PT.ISO8859-15 +pt_PT@euro pt_PT.ISO8859-15 +pt_PT.utf8 pt_PT.UTF-8 +pt_PT.UTF-8@euro pt_PT.UTF-8 +ro ro_RO.ISO8859-2 +ro_RO ro_RO.ISO8859-2 +ro_RO.iso88592 ro_RO.ISO8859-2 +ro_RO.ISO-8859-2 ro_RO.ISO8859-2 +ro_RO.utf8 ro_RO.UTF-8 +ru ru_RU.UTF-8 +ru.koi8-r ru_RU.KOI8-R +ru.UTF-8 ru_RU.UTF-8 +ru_RU ru_RU.UTF-8 +ru_RU.utf8 ru_RU.UTF-8 +ru_RU.iso88595 ru_RU.ISO8859-5 +ru_RU.ISO-8859-5 ru_RU.ISO8859-5 +ru_RU.koi8r ru_RU.KOI8-R +ru_RU.cp1251 ru_RU.CP1251 +ru_RU.microsoftcp1251 ru_RU.CP1251 +ru_RU.microsoft-cp1251 ru_RU.CP1251 +ru_RU.MICROSOFT-CP1251 ru_RU.CP1251 +ru_UA ru_UA.KOI8-U +ru_UA.koi8u ru_UA.KOI8-U +ru_UA.cp1251 ru_UA.CP1251 +ru_UA.microsoftcp1251 ru_UA.CP1251 +ru_UA.microsoft-cp1251 ru_UA.CP1251 +ru_UA.MICROSOFT-CP1251 ru_UA.CP1251 +rw rw_RW.ISO8859-1 +rw_RW rw_RW.ISO8859-1 +rw_RW.iso8859-1 rw_RW.ISO8859-1 +rw_RW.ISO-8859-1 rw_RW.ISO8859-1 +rw_RW.utf8 rw_RW.UTF-8 +sd sd_IN.UTF-8 +sd_IN.utf8 sd_IN.UTF-8 +sd@devanagari sd_IN.UTF-8@devanagari +sd_IN@devanagari sd_IN.UTF-8@devanagari +sd_IN.utf8@devanagari sd_IN.UTF-8@devanagari +se_NO se_NO.UTF-8 +se_NO.utf8 se_NO.UTF-8 +si si_LK.UTF-8 +si_LK si_LK.UTF-8 +sk sk_SK.ISO8859-2 +sk_SK sk_SK.ISO8859-2 +sk_SK.iso88592 sk_SK.ISO8859-2 +sk_SK.ISO-8859-2 sk_SK.ISO8859-2 +sk_SK.utf8 sk_SK.UTF-8 +sl sl_SI.ISO8859-2 +sl_SI sl_SI.ISO8859-2 +sl_SI.iso88592 sl_SI.ISO8859-2 +sl_SI.ISO-8859-2 sl_SI.ISO8859-2 +sl_SI.utf8 sl_SI.UTF-8 +sq sq_AL.ISO8859-2 +sq_AL sq_AL.ISO8859-2 +sq_AL.iso88592 sq_AL.ISO8859-2 +sq_AL.ISO-8859-2 sq_AL.ISO8859-2 +sq_AL.utf8 sq_AL.UTF-8 +sr sr_RS.UTF-8 +sr@cyrillic sr_RS.UTF-8 +sr@latin sr_RS.UTF-8@latin +sr@Latn sr_RS.UTF-8@latin +sr_RS sr_RS.UTF-8 +sr_RS@latin sr_RS.UTF-8@latin +sr_RS@Latn sr_RS.UTF-8@latin +sr_RS.UTF-8@Latn sr_RS.UTF-8@latin +sr_RS.utf8 sr_RS.UTF-8 +sr_ME sr_ME.UTF-8 +sr_ME.utf8 sr_ME.UTF-8 +ss ss_ZA.ISO8859-1 +ss_ZA ss_ZA.ISO8859-1 +ss_ZA.iso88591 ss_ZA.ISO8859-1 +ss_ZA.utf8 ss_ZA.UTF-8 +st st_ZA.ISO8859-1 +st_ZA st_ZA.ISO8859-1 +st_ZA.iso88591 st_ZA.ISO8859-1 +st_ZA.utf8 st_ZA.UTF-8 +sv sv_SE.ISO8859-1 +sv.ISO8859-15 sv_SE.ISO8859-15 +sv.UTF-8 sv_SE.UTF-8 +sv_FI sv_FI.ISO8859-1 +sv_FI.iso88591 sv_FI.ISO8859-1 +sv_FI.ISO-8859-1 sv_FI.ISO8859-1 +sv_FI.iso885915 sv_FI.ISO8859-15 +sv_FI.ISO-8859-15 sv_FI.ISO8859-15 +sv_FI.ISO-8859-15@euro sv_FI.ISO8859-15 +sv_FI@euro sv_FI.ISO8859-15 +sv_FI.UTF-8@euro sv_FI.UTF-8 +sv_FI.utf8 sv_FI.UTF-8 +sv_SE sv_SE.ISO8859-1 +sv_SE.88591 sv_SE.ISO8859-1 +sv_SE.88591.en sv_SE.ISO8859-1 +sv_SE.iso88591 sv_SE.ISO8859-1 +sv_SE.ISO-8859-1 sv_SE.ISO8859-1 +sv_SE.ISO_8859-1 sv_SE.ISO8859-1 +sv_SE.iso885915 sv_SE.ISO8859-15 +sv_SE.ISO-8859-15 sv_SE.ISO8859-15 +sv_SE@euro sv_SE.ISO8859-15 +sv_SE.utf8 sv_SE.UTF-8 +ta ta_IN.TSCII-0 +ta_IN ta_IN.TSCII-0 +ta_IN.tscii ta_IN.TSCII-0 +ta_IN.tscii0 ta_IN.TSCII-0 +te te_IN.UTF-8 +te.UTF-8 te_IN.UTF-8 +te_IN.utf8 te_IN.UTF-8 +tg tg_TJ.KOI8-C +tg_TJ tg_TJ.KOI8-C +tg_TJ.koi8c tg_TJ.KOI8-C +th th_TH.ISO8859-11 +th_TH th_TH.ISO8859-11 +th_TH.ISO-8859-11 th_TH.ISO8859-11 +th_TH.tis620 th_TH.TIS620 +th_TH.TIS-620 th_TH.TIS620 +th_TH.TACTIS th_TH.TIS620 +th_TH.utf8 th_TH.UTF-8 +tl tl_PH.ISO8859-1 +tl_PH tl_PH.ISO8859-1 +tl_PH.iso88591 tl_PH.ISO8859-1 +tl_PH.ISO-8859-1 tl_PH.ISO8859-1 +tn tn_ZA.ISO8859-15 +tn_ZA tn_ZA.ISO8859-15 +tn_ZA.iso8859-15 tn_ZA.ISO8859-15 +tn_ZA.utf8 tn_ZA.UTF-8 +tr tr_TR.ISO8859-9 +tr_TR tr_TR.ISO8859-9 +TR_TR tr_TR.ISO8859-9 +tr_TR.iso88599 tr_TR.ISO8859-9 +tr_TR.ISO-8859-9 tr_TR.ISO8859-9 +tr_TR.utf8 tr_TR.UTF-8 +TR_TR.utf8 tr_TR.UTF-8 +ts ts_ZA.ISO8859-1 +ts_ZA ts_ZA.ISO8859-1 +ts_ZA.iso88591 ts_ZA.ISO8859-1 +ts_ZA.utf8 ts_ZA.UTF-8 +tt tt_RU.TATAR-CYR +tt_RU tt_RU.TATAR-CYR +tt_RU.tatarcyr tt_RU.TATAR-CYR +tt_RU.koi8c tt_RU.KOI8-C +uk uk_UA.KOI8-U +uk_UA uk_UA.KOI8-U +uk_UA.iso88595 uk_UA.ISO8859-5 +uk_UA.koi8u uk_UA.KOI8-U +uk_UA.cp1251 uk_UA.CP1251 +uk_UA.microsoftcp1251 uk_UA.CP1251 +uk_UA.microsoft-cp1251 uk_UA.CP1251 +uk_UA.MICROSOFT-CP1251 uk_UA.CP1251 +uk_UA.utf8 uk_UA.UTF-8 +ur ur_IN.UTF-8 +ur_IN ur_IN.UTF-8 +ur_IN.utf8 ur_IN.UTF-8 +ur ur_PK.CP1256 +ur_PK ur_PK.CP1256 +ur_PK.cp1256 ur_PK.CP1256 +ur_PK.microsoftcp1256 ur_PK.CP1256 +ur_PK.microsoft-cp1256 ur_PK.CP1256 +ur_PK.MICROSOFT-CP1256 ur_PK.CP1256 +uz uz_UZ.UTF-8 +uz_UZ uz_UZ.UTF-8 +uz_UZ.ISO-8859-1 uz_UZ.ISO8859-1 +uz_UZ@cyrillic uz_UZ.UTF-8 +uz_UZ.UTF-8@cyrillic uz_UZ.UTF-8 +ve ve_ZA.UTF-8 +ve_ZA ve_ZA.UTF-8 +ve_ZA.utf8 ve_ZA.UTF-8 +vi vi_VN.TCVN +vi_VN vi_VN.TCVN +Vi_VN vi_VN.TCVN +VI_VN vi_VN.TCVN +vi_VN.tcvn vi_VN.TCVN +vi_VN.tcvn5712 vi_VN.TCVN +vi_VN.viscii vi_VN.VISCII +vi_VN.viscii111 vi_VN.VISCII +vi_VN.utf8 vi_VN.UTF-8 +VI_VN.UTF-8 vi_VN.UTF-8 +wa wa_BE.ISO8859-1 +wa_BE wa_BE.ISO8859-1 +wa_BE.iso88591 wa_BE.ISO8859-1 +wa_BE.ISO-8859-1 wa_BE.ISO8859-1 +wa_BE.iso885915 wa_BE.ISO8859-15 +wa_BE.ISO-8859-15 wa_BE.ISO8859-15 +wa_BE.ISO-8859-15@euro wa_BE.ISO8859-15 +wa_BE@euro wa_BE.ISO8859-15 +xh xh_ZA.ISO8859-1 +xh_ZA xh_ZA.ISO8859-1 +xh_ZA.iso88591 xh_ZA.ISO8859-1 +xh_ZA.utf8 xh_ZA.UTF-8 +yi yi_US.CP1255 +yi_US yi_US.CP1255 +yi_US.cp1255 yi_US.CP1255 +yi_US.microsoftcp1255 yi_US.CP1255 +yi_US.microsoft-cp1255 yi_US.CP1255 +yi_US.MICROSOFT-CP1255 yi_US.CP1255 +zh_CN zh_CN.gb2312 +zh_CN.Big5 zh_TW.big5 +zh_CN.EUC zh_CN.eucCN +zh_CN.GB2312 zh_CN.gb2312 +zh_CN.GBK zh_CN.gbk +zh_CN.GB18030 zh_CN.gb18030 +zh_CN.big5 zh_TW.big5 +zh_CN.euc zh_CN.eucCN +zh_CN.utf8 zh_CN.UTF-8 +ZH_CN.UTF-8 zh_CN.UTF-8 +zh_HK zh_HK.big5hkscs +zh_HK.BIG5HK zh_HK.big5hkscs +zh_HK.Big5hkscs zh_HK.big5hkscs +zh_HK.Big5-hkscs zh_HK.big5hkscs +zh_HK.Big5_hkscs zh_HK.big5hkscs +zh_HK.Big5HKSCS zh_HK.big5hkscs +zh_HK.BIG5-HKSCS zh_HK.big5hkscs +zh_HK.BIG5_HKSCS zh_HK.big5hkscs +zh_HK.Big5-HKSCS zh_HK.big5hkscs +zh_HK.big5-hkscs zh_HK.big5hkscs +zh_HK.Big5-HKSCS zh_HK.big5hkscs +zh_HK.Big5HKSCS zh_HK.big5hkscs +zh_HK.Big5 zh_HK.big5 +zh_HK.utf8 zh_HK.UTF-8 +ZH_HK.UTF-8 zh_HK.UTF-8 +ZH_SG.UTF-8 zh_SG.UTF-8 +zh_TW zh_TW.big5 +zh_TW.Big5 zh_TW.big5 +zh_TW.BIG5 zh_TW.big5 +Zh_TW.big5 zh_TW.big5 +zh_TW.EUC zh_TW.eucTW +zh_TW.EUC-TW zh_TW.eucTW +zh_TW.utf8 zh_TW.UTF-8 +ZH_TW.UTF-8 zh_TW.UTF-8 +zu zu_ZA.ISO8859-1 +zu_ZA zu_ZA.ISO8859-1 +zu_ZA.iso88591 zu_ZA.ISO8859-1 +zu_ZA.utf8 zu_ZA.UTF-8 +# The following locale names are used in SCO 3.0 +english_uk.8859 en_GB.ISO8859-1 +english_us.8859 en_US.ISO8859-1 +english_us.ascii en_US.ISO8859-1 +french_france.8859 fr_FR.ISO8859-1 +german_germany.8859 de_DE.ISO8859-1 +portuguese_brazil.8859 pt_BR.ISO8859-1 +spanish_spain.8859 es_ES.ISO8859-1 +# The following locale names are used in HPUX 9.x +american.iso88591 en_US.ISO8859-1 +arabic.iso88596 ar_AA.ISO8859-6 +bokmal nb_NO.ISO8859-1 +bokml nb_NO.ISO8859-1 +bulgarian bg_BG.CP1251 +c-french.iso88591 fr_CA.ISO8859-1 +catalan ca_ES.ISO8859-1 +chinese-s zh_CN.eucCN +chinese-t zh_TW.eucTW +croatian hr_HR.ISO8859-2 +czech cs_CZ.ISO8859-2 +danish da_DK.ISO8859-1 +dansk da_DK.ISO8859-1 +danish.iso88591 da_DK.ISO8859-1 +deutsch de_DE.ISO8859-1 +dutch nl_NL.ISO8859-1 +dutch.iso88591 nl_BE.ISO8859-1 +eesti et_EE.ISO8859-1 +english.iso88591 en_EN.ISO8859-1 +estonian et_EE.ISO8859-1 +finnish fi_FI.ISO8859-1 +finnish.iso88591 fi_FI.ISO8859-1 +franais fr_FR.ISO8859-1 +french fr_FR.ISO8859-1 +french.iso88591 fr_CH.ISO8859-1 +galego gl_ES.ISO8859-1 +galician gl_ES.ISO8859-1 +german de_DE.ISO8859-1 +german.iso88591 de_CH.ISO8859-1 +greek el_GR.ISO8859-7 +greek.iso88597 el_GR.ISO8859-7 +hebrew he_IL.ISO8859-8 +hebrew.iso88598 he_IL.ISO8859-8 +hrvatski hr_HR.ISO8859-2 +hungarian hu_HU.ISO8859-2 +icelandic.iso88591 is_IS.ISO8859-1 +icelandic is_IS.ISO8859-1 +italian it_IT.ISO8859-1 +italian.iso88591 it_IT.ISO8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +lithuanian lt_LT.ISO8859-13 +norwegian no_NO.ISO8859-1 +norwegian.iso88591 no_NO.ISO8859-1 +polish pl_PL.ISO8859-2 +portuguese pt_PT.ISO8859-1 +portuguese.iso88591 pt_PT.ISO8859-1 +romanian ro_RO.ISO8859-2 +rumanian ro_RO.ISO8859-2 +russian ru_RU.ISO8859-5 +serbocroatian sr_RS.UTF-8@latin +sinhala si_LK.UTF-8 +slovak sk_SK.ISO8859-2 +slovene sl_SI.ISO8859-2 +slovenian sl_SI.ISO8859-2 +spanish es_ES.ISO8859-1 +spanish.iso88591 es_ES.ISO8859-1 +swedish sv_SE.ISO8859-1 +swedish.iso88591 sv_SE.ISO8859-1 +turkish tr_TR.ISO8859-9 +turkish.iso88599 tr_TR.ISO8859-9 +thai th_TH.ISO8859-11 +univ.utf8 en_US.UTF-8 +# Digital Unix utf +universal.utf8@ucs4 en_US.UTF-8 +# Solaris and SunOS have iso_8859_1 and iso_8859_15 LC_CTYPES +# to augment LANG=C +iso_8859_1 en_US.ISO8859-1 +iso_8859_15 en_US.ISO8859-15 +# Other miscellaneous locale names +ISO8859-1 en_US.ISO8859-1 +ISO-8859-1 en_US.ISO8859-1 +japan ja_JP.eucJP +Japanese-EUC ja_JP.eucJP +# +# This file contains alias names of locales. +# Each alias name is described within one line. +# The first word is the alias name (simplified locale name), +# the second word is the full locale name. +# +# +POSIX: C +POSIX-UTF2: C +C_C.C: C +C.en: C +C.ASCII: C +C.iso88591: en_US.ISO8859-1 +Cextend: en_US.ISO8859-1 +Cextend.en: en_US.ISO8859-1 +English_United-States.437: C +C.UTF-8: en_US.UTF-8 +# a3 is not an ISO 639 language code, but in Cyrillic, "Z" looks like "3". +a3: az_AZ.KOI8-C +a3_AZ: az_AZ.KOI8-C +a3_AZ.koi8c: az_AZ.KOI8-C +a3_AZ.KOI-C: az_AZ.KOI8-C +a3_AZ.UTF-8: az_AZ.UTF-8 +af: af_ZA.ISO8859-1 +af_ZA: af_ZA.ISO8859-1 +af_ZA.iso88591: af_ZA.ISO8859-1 +af_ZA.ISO-8859-1: af_ZA.ISO8859-1 +af_ZA.utf8: af_ZA.UTF-8 +am: am_ET.UTF-8 +am_ET: am_ET.UTF-8 +ar: ar_AA.ISO8859-6 +ar_AA: ar_AA.ISO8859-6 +AR_AA: ar_AA.ISO8859-6 +Ar_AA: ar_AA.ISO8859-6 +AR_AA.UTF-8: ar_AA.UTF-8 +ar_AA.iso88596: ar_AA.ISO8859-6 +ar_AA.ISO-8859-6: ar_AA.ISO8859-6 +ar_AE: ar_AE.ISO8859-6 +ar_AE.iso88596: ar_AE.ISO8859-6 +ar_AE.ISO-8859-6: ar_AE.ISO8859-6 +ar_AE.utf8: ar_AE.UTF-8 +ar_BH: ar_BH.ISO8859-6 +ar_BH.iso88596: ar_BH.ISO8859-6 +ar_BH.ISO-8859-6: ar_BH.ISO8859-6 +ar_BH.utf8: ar_BH.UTF-8 +ar_DZ: ar_DZ.ISO8859-6 +ar_DZ.iso88596: ar_DZ.ISO8859-6 +ar_DZ.ISO-8859-6: ar_DZ.ISO8859-6 +ar_DZ.utf8: ar_DZ.UTF-8 +ar_EG: ar_EG.ISO8859-6 +ar_EG.iso88596: ar_EG.ISO8859-6 +ar_EG.ISO-8859-6: ar_EG.ISO8859-6 +ar_EG.utf8: ar_EG.UTF-8 +ar_IN: ar_IN.UTF-8 +ar_IN.utf8: ar_IN.UTF-8 +ar_IQ: ar_IQ.ISO8859-6 +ar_IQ.iso88596: ar_IQ.ISO8859-6 +ar_IQ.ISO-8859-6: ar_IQ.ISO8859-6 +ar_IQ.utf8: ar_IQ.UTF-8 +ar_JO: ar_JO.ISO8859-6 +ar_JO.iso88596: ar_JO.ISO8859-6 +ar_JO.ISO-8859-6: ar_JO.ISO8859-6 +ar_JO.utf8: ar_JO.UTF-8 +ar_KW: ar_KW.ISO8859-6 +ar_KW.iso88596: ar_KW.ISO8859-6 +ar_KW.ISO-8859-6: ar_KW.ISO8859-6 +ar_KW.utf8: ar_KW.UTF-8 +ar_LB: ar_LB.ISO8859-6 +ar_LB.iso88596: ar_LB.ISO8859-6 +ar_LB.ISO-8859-6: ar_LB.ISO8859-6 +ar_LB.utf8: ar_LB.UTF-8 +ar_LY: ar_LY.ISO8859-6 +ar_LY.iso88596: ar_LY.ISO8859-6 +ar_LY.ISO-8859-6: ar_LY.ISO8859-6 +ar_LY.utf8: ar_LY.UTF-8 +ar_MA: ar_MA.ISO8859-6 +ar_MA.iso88596: ar_MA.ISO8859-6 +ar_MA.ISO-8859-6: ar_MA.ISO8859-6 +ar_MA.utf8: ar_MA.UTF-8 +ar_OM: ar_OM.ISO8859-6 +ar_OM.iso88596: ar_OM.ISO8859-6 +ar_OM.ISO-8859-6: ar_OM.ISO8859-6 +ar_OM.utf8: ar_OM.UTF-8 +ar_QA: ar_QA.ISO8859-6 +ar_QA.iso88596: ar_QA.ISO8859-6 +ar_QA.ISO-8859-6: ar_QA.ISO8859-6 +ar_QA.utf8: ar_QA.UTF-8 +ar_SA: ar_SA.ISO8859-6 +ar_SA.iso88596: ar_SA.ISO8859-6 +ar_SA.ISO-8859-6: ar_SA.ISO8859-6 +ar_SA.utf8: ar_SA.UTF-8 +ar_SD: ar_SD.ISO8859-6 +ar_SD.iso88596: ar_SD.ISO8859-6 +ar_SD.ISO-8859-6: ar_SD.ISO8859-6 +ar_SD.utf8: ar_SD.UTF-8 +ar_SY: ar_SY.ISO8859-6 +ar_SY.iso88596: ar_SY.ISO8859-6 +ar_SY.ISO-8859-6: ar_SY.ISO8859-6 +ar_SY.utf8: ar_SY.UTF-8 +ar_TN: ar_TN.ISO8859-6 +ar_TN.iso88596: ar_TN.ISO8859-6 +ar_TN.ISO-8859-6: ar_TN.ISO8859-6 +ar_TN.utf8: ar_TN.UTF-8 +as: as_IN.UTF-8 +as_IN: as_IN.UTF-8 +as_IN.utf8: as_IN.UTF-8 +ar_YE: ar_YE.ISO8859-6 +ar_YE.iso88596: ar_YE.ISO8859-6 +ar_YE.ISO-8859-6: ar_YE.ISO8859-6 +ar_YE.utf8: ar_YE.UTF-8 +az: az_AZ.ISO8859-9E +az_AZ: az_AZ.ISO8859-9E +az_AZ.iso88599e: az_AZ.ISO8859-9E +be: be_BY.CP1251 +be@latin: be_BY.UTF-8@latin +be_BY: be_BY.CP1251 +be_BY@latin: be_BY.UTF-8@latin +be_BY.cp1251: be_BY.CP1251 +be_BY.microsoftcp1251: be_BY.CP1251 +be_BY.microsoft-cp1251: be_BY.CP1251 +be_BY.MICROSOFT-CP1251: be_BY.CP1251 +be_BY.utf8: be_BY.UTF-8 +be_BY.utf8@latin: be_BY.UTF-8@latin +bg: bg_BG.CP1251 +bg_BG: bg_BG.CP1251 +bg_BG.cp1251: bg_BG.CP1251 +bg_BG.microsoftcp1251: bg_BG.CP1251 +bg_BG.microsoft-cp1251: bg_BG.CP1251 +bg_BG.MICROSOFT-CP1251: bg_BG.CP1251 +bg_BG.iso88595: bg_BG.ISO8859-5 +bg_BG.ISO-8859-5: bg_BG.ISO8859-5 +bg_BG.koi8r: bg_BG.KOI8-R +be_BG.utf8: bg_BG.UTF-8 +bn_IN: bn_IN.UTF-8 +bn_IN.utf8: bn_IN.UTF-8 +bo_IN: bo_IN.UTF-8 +bo_IN.utf8: bo_IN.UTF-8 +br: br_FR.ISO8859-1 +br_FR: br_FR.ISO8859-1 +br_FR.iso88591: br_FR.ISO8859-1 +br_FR.ISO-8859-1: br_FR.ISO8859-1 +br_FR.iso885914: br_FR.ISO8859-14 +br_FR.ISO-8859-14: br_FR.ISO8859-14 +br_FR.iso885915: br_FR.ISO8859-15 +br_FR.ISO-8859-15: br_FR.ISO8859-15 +br_FR.ISO-8859-15@euro: br_FR.ISO8859-15 +br_FR@euro: br_FR.ISO8859-15 +br_FR.UTF-8@euro: br_FR.UTF-8 +bs: bs_BA.ISO8859-2 +bs_BA: bs_BA.ISO8859-2 +bs_BA.iso88592: bs_BA.ISO8859-2 +bs_BA.ISO-8859-2: bs_BA.ISO8859-2 +bs_BA.ISO_8859-2: bs_BA.ISO8859-2 +ca: ca_ES.ISO8859-1 +ca_AD: ca_AD.ISO8859-1 +ca_AD@euro: ca_AD.ISO8859-15 +ca_AD.iso88591: ca_AD.ISO8859-1 +ca_AD.ISO-8859-1: ca_AD.ISO8859-1 +ca_AD.iso885915: ca_AD.ISO8859-15 +ca_AD.utf8: ca_AD.UTF-8 +ca_AD.ISO-8859-15: ca_AD.ISO8859-15 +ca_AD.ISO-8859-15@euro: ca_AD.ISO8859-15 +ca_AD.UTF-8@euro: ca_AD.UTF-8 +ca_ES: ca_ES.ISO8859-1 +ca_ES@euro: ca_ES.ISO8859-15 +ca_ES.iso88591: ca_ES.ISO8859-1 +ca_ES.ISO-8859-1: ca_ES.ISO8859-1 +ca_ES.iso885915: ca_ES.ISO8859-15 +ca_ES.utf8: ca_ES.UTF-8 +ca_ES.ISO-8859-15: ca_ES.ISO8859-15 +ca_ES.ISO-8859-15@euro: ca_ES.ISO8859-15 +ca_ES.UTF-8@euro: ca_ES.UTF-8 +ca_FR: ca_FR.ISO8859-1 +ca_FR@euro: ca_FR.ISO8859-15 +ca_FR.iso88591: ca_FR.ISO8859-1 +ca_FR.ISO-8859-1: ca_FR.ISO8859-1 +ca_FR.iso885915: ca_FR.ISO8859-15 +ca_FR.utf8: ca_FR.UTF-8 +ca_FR.ISO-8859-15: ca_FR.ISO8859-15 +ca_FR.ISO-8859-15@euro: ca_FR.ISO8859-15 +ca_FR.UTF-8@euro: ca_FR.UTF-8 +ca_IT: ca_IT.ISO8859-1 +ca_IT@euro: ca_IT.ISO8859-15 +ca_IT.iso88591: ca_IT.ISO8859-1 +ca_IT.ISO-8859-1: ca_IT.ISO8859-1 +ca_IT.iso885915: ca_IT.ISO8859-15 +ca_IT.utf8: ca_IT.UTF-8 +ca_IT.ISO-8859-15: ca_IT.ISO8859-15 +ca_IT.ISO-8859-15@euro: ca_IT.ISO8859-15 +ca_IT.UTF-8@euro: ca_IT.UTF-8 +cs: cs_CZ.ISO8859-2 +cs_CS: cs_CZ.ISO8859-2 +cs_CS.ISO8859-2: cs_CZ.ISO8859-2 +cs_CZ: cs_CZ.ISO8859-2 +cs_CZ.iso88592: cs_CZ.ISO8859-2 +cs_CS.iso8859-2: cs_CZ.ISO8859-2 +cs_CZ.ISO-8859-2: cs_CZ.ISO8859-2 +cs_CZ.ISO_8859-2: cs_CZ.ISO8859-2 +cs_CZ.utf8: cs_CZ.UTF-8 +cy: cy_GB.ISO8859-1 +cy_GB: cy_GB.ISO8859-1 +cy_GB.iso88591: cy_GB.ISO8859-1 +cy_GB.ISO-8859-1: cy_GB.ISO8859-1 +cy_GB.iso885914: cy_GB.ISO8859-14 +cy_GB.ISO-8859-14: cy_GB.ISO8859-14 +cy_GB.iso885915: cy_GB.ISO8859-15 +cy_GB.ISO-8859-15: cy_GB.ISO8859-15 +da: da_DK.ISO8859-1 +da.ISO8859-15: da_DK.ISO8859-15 +da_DK: da_DK.ISO8859-1 +DA_DK: da_DK.ISO8859-1 +da_DK.88591: da_DK.ISO8859-1 +da_DK.88591.en: da_DK.ISO8859-1 +da_DK.iso88591: da_DK.ISO8859-1 +da_DK.ISO-8859-1: da_DK.ISO8859-1 +da_DK.ISO_8859-1: da_DK.ISO8859-1 +da_DK.iso885915: da_DK.ISO8859-15 +da_DK.ISO-8859-15: da_DK.ISO8859-15 +da_DK.8859-15: da_DK.ISO8859-15 +da_DK.utf8: da_DK.UTF-8 +DA_DK.UTF-8: da_DK.UTF-8 +de: de_DE.ISO8859-1 +de.ISO8859-15: de_DE.ISO8859-15 +de_AT: de_AT.ISO8859-1 +de_AT@euro: de_AT.ISO8859-15 +de_AT.iso88591: de_AT.ISO8859-1 +de_AT.ISO-8859-1: de_AT.ISO8859-1 +de_AT.ISO_8859-1: de_AT.ISO8859-1 +de_AT.iso885915: de_AT.ISO8859-15 +de_AT.ISO-8859-15: de_AT.ISO8859-15 +de_AT.ISO-8859-15@euro: de_AT.ISO8859-15 +de_AT.UTF-8@euro: de_AT.UTF-8 +de_AT.utf8: de_AT.UTF-8 +de_BE: de_BE.ISO8859-1 +de_BE@euro: de_BE.ISO8859-15 +de_BE.iso88591: de_BE.ISO8859-1 +de_BE.ISO_8859-1: de_BE.ISO8859-1 +de_BE.ISO-8859-1: de_BE.ISO8859-1 +de_BE.iso885915: de_BE.ISO8859-15 +de_BE.ISO_8859-15: de_BE.ISO8859-15 +de_BE.ISO-8859-15: de_BE.ISO8859-15 +de_BE.ISO-8859-15@euro: de_BE.ISO8859-15 +de_BE.UTF-8@euro: de_BE.UTF-8 +de_CH: de_CH.ISO8859-1 +de_CH.iso88591: de_CH.ISO8859-1 +de_CH.ISO_8859-1: de_CH.ISO8859-1 +de_CH.ISO-8859-1: de_CH.ISO8859-1 +de_CH.iso885915: de_CH.ISO8859-15 +de_CH.ISO_8859-15: de_CH.ISO8859-15 +de_CH.ISO-8859-15: de_CH.ISO8859-15 +de_CH.utf8: de_CH.UTF-8 +de_DE: de_DE.ISO8859-1 +de_DE@euro: de_DE.ISO8859-15 +de_DE.88591: de_DE.ISO8859-1 +de_DE.88591.en: de_DE.ISO8859-1 +de_DE.iso88591: de_DE.ISO8859-1 +de_DE.ISO-8859-1: de_DE.ISO8859-1 +de_DE.ISO_8859-1: de_DE.ISO8859-1 +de_DE.iso885915: de_DE.ISO8859-15 +de_DE.ISO-8859-15: de_DE.ISO8859-15 +de_DE.ISO_8859-15: de_DE.ISO8859-15 +de_DE.8859-15: de_DE.ISO8859-15 +de_DE.8859-15@euro: de_DE.ISO8859-15 +de_DE.ISO-8859-15@euro: de_DE.ISO8859-15 +de_DE.UTF-8@euro: de_DE.UTF-8 +de_DE.utf8: de_DE.UTF-8 +de_IT: de_IT.UTF-8 +de_IT.utf8: de_IT.UTF-8 +de_LI: de_LI.ISO8859-1 +de_LI.iso88591: de_LI.ISO8859-1 +de_LI.ISO_8859-1: de_LI.ISO8859-1 +de_LI.ISO-8859-1: de_LI.ISO8859-1 +de_LI.iso885915: de_LI.ISO8859-15 +de_LI.ISO_8859-15: de_LI.ISO8859-15 +de_LI.ISO-8859-15: de_LI.ISO8859-15 +de_LI.utf8: de_LI.UTF-8 +de_LU: de_LU.ISO8859-1 +de_LU@euro: de_LU.ISO8859-15 +de_LU.iso88591: de_LU.ISO8859-1 +de_LU.ISO_8859-1: de_LU.ISO8859-1 +de_LU.ISO-8859-1: de_LU.ISO8859-1 +de_LU.iso885915: de_LU.ISO8859-15 +de_LU.ISO_8859-15: de_LU.ISO8859-15 +de_LU.ISO-8859-15: de_LU.ISO8859-15 +de_LU.ISO-8859-15@euro: de_LU.ISO8859-15 +de_LU.UTF-8@euro: de_LU.UTF-8 +de_LU.utf8: de_LU.UTF-8 +GER_DE.8859: de_DE.ISO8859-1 +GER_DE.8859.in: de_DE.ISO8859-1 +ee: ee_EE.ISO8859-4 +ee_EE: ee_EE.ISO8859-4 +ee_EE.iso88594: ee_EE.ISO8859-4 +el: el_GR.ISO8859-7 +el_GR: el_GR.ISO8859-7 +el_GR.iso88597: el_GR.ISO8859-7 +el_GR.ISO-8859-7: el_GR.ISO8859-7 +el_GR@euro: el_GR.ISO8859-15 +el_GR.utf8: el_GR.UTF-8 +en: en_US.ISO8859-1 +en.ISO-8859-1: en_US.ISO8859-1 +en_AU: en_AU.ISO8859-1 +en_AU.iso88591: en_AU.ISO8859-1 +en_AU.ISO-8859-1: en_AU.ISO8859-1 +en_AU.ISO_8859-1: en_AU.ISO8859-1 +en_AU.utf8: en_AU.UTF-8 +en_BE: en_BE.ISO8859-1 +en_BE@euro: en_BE.ISO8859-15 +en_BE.utf8: en_BE.UTF-8 +en_BW: en_BW.ISO8859-1 +en_BW.utf8: en_BW.UTF-8 +en_BW.iso88591: en_BW.ISO8859-1 +en_BW.ISO-8859-1: en_BW.ISO8859-1 +en_CA: en_CA.ISO8859-1 +en_CA.iso88591: en_CA.ISO8859-1 +en_CA.ISO-8859-1: en_CA.ISO8859-1 +en_CA.ISO_8859-1: en_CA.ISO8859-1 +en_CA.utf8: en_CA.UTF-8 +en_DL.utf8: en_DL.UTF-8 +en_GB: en_GB.ISO8859-1 +en_GB.88591: en_GB.ISO8859-1 +en_GB.88591.en: en_GB.ISO8859-1 +en_GB.iso88591: en_GB.ISO8859-1 +en_GB.ISO-8859-1: en_GB.ISO8859-1 +en_GB.ISO_8859-1: en_GB.ISO8859-1 +en_GB.iso885915: en_GB.ISO8859-15 +en_GB.ISO-8859-15: en_GB.ISO8859-15 +en_GB.utf8: en_GB.UTF-8 +en_UK: en_GB.ISO8859-1 +ENG_GB.8859: en_GB.ISO8859-1 +ENG_GB.8859.in: en_GB.ISO8859-1 +en_HK: en_HK.ISO8859-1 +en_HK.iso88591: en_HK.ISO8859-1 +en_HK.ISO-8859-1: en_HK.ISO8859-1 +en_HK.utf8: en_HK.UTF-8 +en_IE: en_IE.ISO8859-1 +en_IE.iso88591: en_IE.ISO8859-1 +en_IE.ISO-8859-1: en_IE.ISO8859-1 +en_IE.iso885915: en_IE.ISO8859-15 +en_IE.ISO-8859-15: en_IE.ISO8859-15 +en_IE.ISO-8859-15@euro: en_IE.ISO8859-15 +en_IE@euro: en_IE.ISO8859-15 +en_IE.UTF-8@euro: en_IE.UTF-8 +en_IE.utf8: en_IE.UTF-8 +en_IN.utf8: en_IN.UTF-8 +en_IN: en_IN.ISO8859-1 +en_NZ: en_NZ.ISO8859-1 +en_NZ.iso88591: en_NZ.ISO8859-1 +en_NZ.ISO-8859-1: en_NZ.ISO8859-1 +en_NZ.utf8: en_NZ.UTF-8 +en_PH: en_PH.ISO8859-1 +en_PH.utf8: en_PH.UTF-8 +en_PH.iso88591: en_PH.ISO8859-1 +en_PH.ISO-8859-1: en_PH.ISO8859-1 +en_SG: en_SG.ISO8859-1 +en_SG.utf8: en_SG.UTF-8 +en_SG.iso88591: en_SG.ISO8859-1 +en_SG.ISO-8859-1: en_SG.ISO8859-1 +en_US: en_US.ISO8859-1 +EN_US: en_US.ISO8859-1 +en_US.88591: en_US.ISO8859-1 +en_US.88591.en: en_US.ISO8859-1 +en_US.iso88591: en_US.ISO8859-1 +en_US.ISO-8859-1: en_US.ISO8859-1 +en_US.ISO_8859-1: en_US.ISO8859-1 +en_US.iso885915: en_US.ISO8859-15 +en_US.ISO-8859-15: en_US.ISO8859-15 +en_US.8859-15: en_US.ISO8859-15 +en_US.ISO8859-15@euro: en_US.ISO8859-15 +en_US.utf8: en_US.UTF-8 +EN_US.UTF-8: en_US.UTF-8 +en_ZA: en_ZA.ISO8859-1 +en_ZA.88591: en_ZA.ISO8859-1 +en_ZA.88591.en: en_ZA.ISO8859-1 +en_ZA.iso88591: en_ZA.ISO8859-1 +en_ZA.ISO-8859-1: en_ZA.ISO8859-1 +en_ZA.ISO_8859-1: en_ZA.ISO8859-1 +en_ZA.iso885915: en_ZA.ISO8859-15 +en_ZA.ISO-8859-15: en_ZA.ISO8859-15 +en_ZA.utf8: en_ZA.UTF-8 +en_ZW: en_ZW.ISO8859-1 +en_ZW.utf8: en_ZS.UTF-8 +en_ZW.iso88591: en_ZW.ISO8859-1 +en_ZW.ISO-8859-1: en_ZW.ISO8859-1 +eo: eo_XX.ISO8859-3 +eo_EO: eo_EO.ISO8859-3 +eo_XX: eo_XX.ISO8859-3 +es: es_ES.ISO8859-1 +es.UTF-8: es_ES.UTF-8 +es_AR: es_AR.ISO8859-1 +es_AR.iso88591: es_AR.ISO8859-1 +es_AR.ISO-8859-1: es_AR.ISO8859-1 +es_AR.utf8: es_AR.UTF-8 +es_BO: es_BO.ISO8859-1 +es_BO.iso88591: es_BO.ISO8859-1 +es_BO.ISO-8859-1: es_BO.ISO8859-1 +es_BO.utf8: es_BO.UTF-8 +es_CL: es_CL.ISO8859-1 +es_CL.iso88591: es_CL.ISO8859-1 +es_CL.ISO-8859-1: es_CL.ISO8859-1 +es_CL.utf8: es_CL.UTF-8 +es_CO: es_CO.ISO8859-1 +es_CO.iso88591: es_CO.ISO8859-1 +es_CO.ISO-8859-1: es_CO.ISO8859-1 +es_CO.utf8: es_CO.UTF-8 +es_CR: es_CR.ISO8859-1 +es_CR.iso88591: es_CR.ISO8859-1 +es_CR.ISO-8859-1: es_CR.ISO8859-1 +es_CR.utf8: es_CR.UTF-8 +es_DO: es_DO.ISO8859-1 +es_DO.iso88591: es_DO.ISO8859-1 +es_DO.ISO-8859-1: es_DO.ISO8859-1 +es_DO.utf8: es_DO.UTF-8 +es_EC: es_EC.ISO8859-1 +es_EC.iso88591: es_EC.ISO8859-1 +es_EC.ISO-8859-1: es_EC.ISO8859-1 +es_EC.utf8: es_EC.UTF-8 +es_ES: es_ES.ISO8859-1 +es_ES.88591: es_ES.ISO8859-1 +es_ES.88591.en: es_ES.ISO8859-1 +es_ES.iso88591: es_ES.ISO8859-1 +es_ES.ISO-8859-1: es_ES.ISO8859-1 +es_ES.ISO_8859-1: es_ES.ISO8859-1 +es_ES.iso885915: es_ES.ISO8859-15 +es_ES.ISO-8859-15: es_ES.ISO8859-15 +es_ES.ISO-8859-15@euro: es_ES.ISO8859-15 +es_ES@euro: es_ES.ISO8859-15 +es_ES.UTF-8@euro: es_ES.UTF-8 +es_ES.utf8: es_ES.UTF-8 +es_GT: es_GT.ISO8859-1 +es_GT.iso88591: es_GT.ISO8859-1 +es_GT.ISO-8859-1: es_GT.ISO8859-1 +es_GT.utf8: es_GT.UTF-8 +es_HN: es_HN.ISO8859-1 +es_HN.iso88591: es_HN.ISO8859-1 +es_HN.ISO-8859-1: es_HN.ISO8859-1 +es_HN.utf8: es_HN.UTF-8 +es_MX: es_MX.ISO8859-1 +es_MX.iso88591: es_MX.ISO8859-1 +es_MX.ISO-8859-1: es_MX.ISO8859-1 +es_MX.utf8: es_MX.UTF-8 +es_NI: es_NI.ISO8859-1 +es_NI.iso88591: es_NI.ISO8859-1 +es_NI.ISO-8859-1: es_NI.ISO8859-1 +es_NI.utf8: es_NI.UTF-8 +es_PA: es_PA.ISO8859-1 +es_PA.iso88591: es_PA.ISO8859-1 +es_PA.ISO-8859-1: es_PA.ISO8859-1 +es_PA.iso885915: es_PA.ISO8859-15 +es_PA.utf8: es_PA.UTF-8 +es_PE: es_PE.ISO8859-1 +es_PE.iso88591: es_PE.ISO8859-1 +es_PE.ISO-8859-1: es_PE.ISO8859-1 +es_PE.iso885915: es_PE.ISO8859-15 +es_PE.utf8: es_PE.UTF-8 +es_PR: es_PR.ISO8859-1 +es_PR.iso88591: es_PR.ISO8859-1 +es_PR.ISO-8859-1: es_PR.ISO8859-1 +es_PR.utf8: es_PR.UTF-8 +es_PY: es_PY.ISO8859-1 +es_PY.iso88591: es_PY.ISO8859-1 +es_PY.ISO-8859-1: es_PY.ISO8859-1 +es_PY.iso885915: es_PY.ISO8859-15 +es_PY.utf8: es_PY.UTF-8 +es_SV: es_SV.ISO8859-1 +es_SV.iso88591: es_SV.ISO8859-1 +es_SV.ISO-8859-1: es_SV.ISO8859-1 +es_SV.iso885915: es_SV.ISO8859-15 +es_SV.utf8: es_SV.UTF-8 +es_US: es_US.ISO8859-1 +es_US.iso88591: es_US.ISO8859-1 +es_US.ISO-8859-1: es_US.ISO8859-1 +es_UY: es_UY.ISO8859-1 +es_UY.iso88591: es_UY.ISO8859-1 +es_UY.ISO-8859-1: es_UY.ISO8859-1 +es_UY.iso885915: es_UY.ISO8859-15 +es_UY.utf8: es_UY.UTF-8 +es_VE: es_VE.ISO8859-1 +es_VE.iso88591: es_VE.ISO8859-1 +es_VE.ISO-8859-1: es_VE.ISO8859-1 +es_VE.iso885915: es_VE.ISO8859-15 +es_VE.utf8: es_VE.UTF-8 +# According to Estonian local standards, ISO8859-4 is not a recommended +# charset. EVS8:2000 specifies ISO8859-15 as the base charset. +et: et_EE.ISO8859-15 +et_EE: et_EE.ISO8859-15 +et_EE.iso88591: et_EE.ISO8859-1 +et_EE.ISO-8859-1: et_EE.ISO8859-1 +et_EE.iso88594: et_EE.ISO8859-4 +et_EE.ISO-8859-4: et_EE.ISO8859-4 +et_EE.iso885913: et_EE.ISO8859-13 +et_EE.ISO-8859-13: et_EE.ISO8859-13 +et_EE.iso885915: et_EE.ISO8859-15 +et_EE.ISO-8859-15: et_EE.ISO8859-15 +et_EE.utf8: et_EE.UTF-8 +eu: eu_ES.ISO8859-1 +eu_ES: eu_ES.ISO8859-1 +eu_ES.iso88591: eu_ES.ISO8859-1 +eu_ES.ISO-8859-1: eu_ES.ISO8859-1 +eu_ES.iso885915: eu_ES.ISO8859-15 +eu_ES.ISO-8859-15: eu_ES.ISO8859-15 +eu_ES.ISO-8859-15@euro: eu_ES.ISO8859-15 +eu_ES@euro: eu_ES.ISO8859-15 +eu_ES.UTF-8@euro: eu_ES.UTF-8 +fa: fa_IR.UTF-8 +fa_IR: fa_IR.UTF-8 +fa_IR.isiri3342: fa_IR.ISIRI-3342 +fa_IR.utf8: fa_IR.UTF-8 +fi: fi_FI.ISO8859-15 +fi.ISO8859-15: fi_FI.ISO8859-15 +fi_FI: fi_FI.ISO8859-15 +fi_FI.88591: fi_FI.ISO8859-1 +fi_FI.88591.en: fi_FI.ISO8859-1 +fi_FI.iso88591: fi_FI.ISO8859-1 +fi_FI.ISO-8859-1: fi_FI.ISO8859-1 +fi_FI.ISO_8859-1: fi_FI.ISO8859-1 +fi_FI.iso885915: fi_FI.ISO8859-15 +fi_FI.ISO-8859-15: fi_FI.ISO8859-15 +fi_FI.ISO-8859-15@euro: fi_FI.ISO8859-15 +fi_FI@euro: fi_FI.ISO8859-15 +fi_FI.utf8: fi_FI.UTF-8 +fi_FI.UTF-8@euro: fi_FI.UTF-8 +fo: fo_FO.ISO8859-1 +fo_FO: fo_FO.ISO8859-1 +fo_FO.iso88591: fo_FO.ISO8859-1 +fo_FO.ISO-8859-1: fo_FO.ISO8859-1 +fo_FO.iso885915: fo_FO.ISO8859-15 +fo_FO.ISO-8859-15: fo_FO.ISO8859-15 +fo_FO.utf8: fo_FO.UTF-8 +fr: fr_FR.ISO8859-1 +fr.ISO8859-15: fr_FR.ISO8859-15 +fr.UTF-8: fr_FR.UTF-8 +fr_BE: fr_BE.ISO8859-1 +fr_BE.88591: fr_BE.ISO8859-1 +fr_BE.88591.en: fr_BE.ISO8859-1 +fr_BE.ISO-8859-1: fr_BE.ISO8859-1 +fr_BE.ISO_8859-1: fr_BE.ISO8859-1 +fr_BE.iso885915: fr_BE.ISO8859-15 +fr_BE.ISO-8859-15: fr_BE.ISO8859-15 +fr_BE.ISO-8859-15@euro: fr_BE.ISO8859-15 +fr_BE@euro: fr_BE.ISO8859-15 +fr_BE.utf8: fr_BE.UTF-8 +fr_BE.UTF-8@euro: fr_BE.UTF-8 +fr_CA: fr_CA.ISO8859-1 +fr_CA.88591: fr_CA.ISO8859-1 +fr_CA.88591.en: fr_CA.ISO8859-1 +fr_CA.iso88591: fr_CA.ISO8859-1 +fr_CA.ISO-8859-1: fr_CA.ISO8859-1 +fr_CA.ISO_8859-1: fr_CA.ISO8859-1 +fr_CA.iso885915: fr_CA.ISO8859-15 +fr_CA.ISO-8859-15: fr_CA.ISO8859-15 +fr_CA.utf8: fr_CA.UTF-8 +fr_CH: fr_CH.ISO8859-1 +fr_CH.88591: fr_CH.ISO8859-1 +fr_CH.88591.en: fr_CH.ISO8859-1 +fr_CH.ISO-8859-1: fr_CH.ISO8859-1 +fr_CH.ISO_8859-1: fr_CH.ISO8859-1 +fr_CH.iso885915: fr_CH.ISO8859-15 +fr_CH.ISO-8859-15: fr_CH.ISO8859-15 +fr_CH.utf8: fr_CH.UTF-8 +fr_FR: fr_FR.ISO8859-1 +fr_FR.88591: fr_FR.ISO8859-1 +fr_FR.88591.en: fr_FR.ISO8859-1 +fr_FR.iso88591: fr_FR.ISO8859-1 +fr_FR.ISO-8859-1: fr_FR.ISO8859-1 +fr_FR.ISO_8859-1: fr_FR.ISO8859-1 +fr_FR.iso885915: fr_FR.ISO8859-15 +fr_FR.ISO-8859-15: fr_FR.ISO8859-15 +fr_FR.ISO-8859-15@euro: fr_FR.ISO8859-15 +fr_FR@euro: fr_FR.ISO8859-15 +fr_FR.UTF-8@euro: fr_FR.UTF-8 +fr_FR.utf8: fr_FR.UTF-8 +fr_LU: fr_LU.ISO8859-1 +fr_LU.88591: fr_LU.ISO8859-1 +fr_LU.88591.en: fr_LU.ISO8859-1 +fr_LU.iso88591: fr_LU.ISO8859-1 +fr_LU.ISO-8859-1: fr_LU.ISO8859-1 +fr_LU.ISO_8859-1: fr_LU.ISO8859-1 +fr_LU.iso885915: fr_LU.ISO8859-15 +fr_LU.ISO-8859-15: fr_LU.ISO8859-15 +fr_LU.ISO-8859-15@euro: fr_LU.ISO8859-15 +fr_LU@euro: fr_LU.ISO8859-15 +fr_LU.UTF-8@euro: fr_LU.UTF-8 +fr_LU.utf8: fr_LU.UTF-8 +FRE_FR.8859: fr_FR.ISO8859-1 +FRE_FR.8859.in: fr_FR.ISO8859-1 +ga: ga_IE.ISO8859-1 +ga_IE: ga_IE.ISO8859-1 +ga_IE.iso88591: ga_IE.ISO8859-1 +ga_IE.ISO-8859-1: ga_IE.ISO8859-1 +ga_IE.iso885914: ga_IE.ISO8859-14 +ga_IE.ISO-8859-14: ga_IE.ISO8859-14 +ga_IE.iso885915: ga_IE.ISO8859-15 +ga_IE.ISO-8859-15: ga_IE.ISO8859-15 +ga_IE.ISO-8859-15@euro: ga_IE.ISO8859-15 +ga_IE@euro: ga_IE.ISO8859-15 +ga_IE.UTF-8@euro: ga_IE.UTF-8 +ga_IE.utf8: ga_IE.UTF-8 +gd: gd_GB.ISO8859-1 +gd_GB: gd_GB.ISO8859-1 +gd_GB.iso88591: gd_GB.ISO8859-1 +gd_GB.ISO-8859-1: gd_GB.ISO8859-1 +gd_GB.iso885914: gd_GB.ISO8859-14 +gd_GB.ISO-8859-14: gd_GB.ISO8859-14 +gd_GB.iso885915: gd_GB.ISO8859-15 +gd_GB.ISO-8859-15: gd_GB.ISO8859-15 +gl: gl_ES.ISO8859-1 +gl_ES: gl_ES.ISO8859-1 +gl_ES.iso88591: gl_ES.ISO8859-1 +gl_ES.ISO-8859-1: gl_ES.ISO8859-1 +gl_ES.iso885915: gl_ES.ISO8859-15 +gl_ES.ISO-8859-15: gl_ES.ISO8859-15 +gl_ES.ISO-8859-15@euro: gl_ES.ISO8859-15 +gl_ES@euro: gl_ES.ISO8859-15 +gl_ES.UTF-8@euro: gl_ES.UTF-8 +gl_ES.utf8: gl_ES.UTF-8 +gu_IN: gu_IN.UTF-8 +gu_IN.utf8: gu_IN.UTF-8 +gv: gv_GB.ISO8859-1 +gv_GB: gv_GB.ISO8859-1 +gv_GB.iso88591: gv_GB.ISO8859-1 +gv_GB.ISO-8859-1: gv_GB.ISO8859-1 +gv_GB.iso885914: gv_GB.ISO8859-14 +gv_GB.ISO-8859-14: gv_GB.ISO8859-14 +gv_GB.iso885915: gv_GB.ISO8859-15 +gv_GB.ISO-8859-15: gv_GB.ISO8859-15 +he: he_IL.ISO8859-8 +he_IL: he_IL.ISO8859-8 +HE_IL: he_IL.ISO8859-8 +he_IL.iso88598: he_IL.ISO8859-8 +he_IL.ISO-8859-8: he_IL.ISO8859-8 +he_IL.cp1255: he_IL.CP1255 +he_IL.microsoftcp1255: he_IL.CP1255 +he_IL.microsoft-cp1255: he_IL.CP1255 +he_IL.MICROSOFT-CP1255: he_IL.CP1255 +he_IL.utf8: he_IL.UTF-8 +HE_IL.UTF-8: he_IL.UTF-8 +hi: hi_IN.ISCII-DEV +hi_IN: hi_IN.ISCII-DEV +HI_IN: hi_IN.ISCII-DEV +hi_IN.isciidev: hi_IN.ISCII-DEV +hi_IN.utf8: hi_IN.UTF-8 +HI_IN.UTF-8: hi_IN.UTF-8 +hne: hne_IN.UTF-8 +hne_IN: hne_IN.UTF-8 +hne_IN.utf8: hne_IN.UTF-8 +hr: hr_HR.ISO8859-2 +hr_HR: hr_HR.ISO8859-2 +hr_HR.iso88592: hr_HR.ISO8859-2 +hr_HR.ISO-8859-2: hr_HR.ISO8859-2 +hr_HR.ISO_8859-2: hr_HR.ISO8859-2 +hr_HR.utf8: hr_HR.UTF-8 +hu: hu_HU.ISO8859-2 +hu_HU: hu_HU.ISO8859-2 +hu_HU.iso88592: hu_HU.ISO8859-2 +hu_HU.ISO-8859-2: hu_HU.ISO8859-2 +hu_HU.utf8: hu_HU.UTF-8 +ia: ia.UTF-8 +ia.utf8: ia.UTF-8 +ie: ie.UTF-8 +ie.utf8: ie.UTF-8 +is: is_IS.ISO8859-1 +is_IS: is_IS.ISO8859-1 +is_IS.iso88591: is_IS.ISO8859-1 +is_IS.ISO-8859-1: is_IS.ISO8859-1 +is_IS.ISO_8859-1: is_IS.ISO8859-1 +is_IS.iso885915: is_IS.ISO8859-15 +is_IS.ISO-8859-15: is_IS.ISO8859-15 +is_IS.utf8: is_IS.UTF-8 +it: it_IT.ISO8859-1 +it.ISO8859-15: it_IT.ISO8859-15 +it.UTF-8: it_IT.UTF-8 +it_CH: it_CH.ISO8859-1 +it_CH.iso88591: it_CH.ISO8859-1 +it_CH.ISO_8859-1: it_CH.ISO8859-1 +it_CH.ISO-8859-1: it_CH.ISO8859-1 +it_CH.iso885915: it_CH.ISO8859-15 +it_CH.utf8: it_CH.UTF-8 +it_IT: it_IT.ISO8859-1 +it_IT.88591: it_IT.ISO8859-1 +it_IT.88591.en: it_IT.ISO8859-1 +it_IT.iso88591: it_IT.ISO8859-1 +it_IT.ISO-8859-1: it_IT.ISO8859-1 +it_IT.ISO_8859-1: it_IT.ISO8859-1 +it_IT.iso885915: it_IT.ISO8859-15 +it_IT.ISO-8859-15: it_IT.ISO8859-15 +it_IT.ISO-8859-15@euro: it_IT.ISO8859-15 +it_IT@euro: it_IT.ISO8859-15 +it_IT.utf8: it_IT.UTF-8 +it_IT.UTF-8@euro: it_IT.UTF-8 +# NUNACOM is an encoding for the Inuktitut syllabics +# we have little else on this encoding. +iu: iu_CA.NUNACOM-8 +iu_CA: iu_CA.NUNACOM-8 +iu_CA.nunacom8: iu_CA.NUNACOM-8 +ja_JP: ja_JP.eucJP +ja: ja_JP.eucJP +ja.JIS: ja_JP.JIS7 +ja.SJIS: ja_JP.SJIS +ja_JP.ujis: ja_JP.eucJP +Jp_JP: ja_JP.eucJP +ja_JP.AJEC: ja_JP.eucJP +ja_JP.EUC: ja_JP.eucJP +ja_JP.EUC-JP: ja_JP.eucJP +ja_JP.EUC_JP: ja_JP.eucJP +ja_JP.eucjp: ja_JP.eucJP +ja_JP.ISO-2022-JP: ja_JP.JIS7 +ja_JP.JIS: ja_JP.JIS7 +ja_JP.jis7: ja_JP.JIS7 +ja_JP.mscode: ja_JP.SJIS +ja_JP.PCK: ja_JP.SJIS +ja_JP.sjis: ja_JP.SJIS +ja_JP.utf8: ja_JP.UTF-8 +JA_JP.utf8: ja_JP.UTF-8 +ka: ka_GE.GEORGIAN-ACADEMY +ka_GE: ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianacademy: ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianrs: ka_GE.GEORGIAN-ACADEMY +ka_GE.georgianps: ka_GE.GEORGIAN-PS +kl: kl_GL.ISO8859-1 +kl_GL: kl_GL.ISO8859-1 +kl_GL.iso88591: kl_GL.ISO8859-1 +kl_GL.ISO-8859-1: kl_GL.ISO8859-1 +kl_GL.iso885915: kl_GL.ISO8859-15 +kl_GL.utf8: kl_GL.UTF-8 +km_KH: km_KH.UTF-8 +km_KH.utf8: km_KH.UTF-8 +kn: kn_IN.UTF-8 +kn_IN: kn_IN.UTF-8 +kn_IN.utf8: kn_IN.UTF-8 +ko: ko_KR.eucKR +ko.UTF-8: ko_KR.UTF-8 +ko_KR: ko_KR.eucKR +KO_KR: ko_KR.eucKR +ko_KR.EUC: ko_KR.eucKR +ko_KR.EUC-KR: ko_KR.eucKR +ko_KR.euc: ko_KR.eucKR +ko_KR.euckr: ko_KR.eucKR +ko_KR.utf8: ko_KR.UTF-8 +KO_KR.UTF-8: ko_KR.UTF-8 +ks: ks_IN.UTF-8 +ks_IN: ks_IN.UTF-8 +ks_IN.utf8: ks_IN.UTF-8 +ks_IN@devanagari: ks_IN.UTF-8@devanagari +ks_IN.utf8@devanagari: ks_IN.UTF-8@devanagari +kw: kw_GB.ISO8859-1 +kw_GB: kw_GB.ISO8859-1 +kw_GB.iso88591: kw_GB.ISO8859-1 +kw_GB.ISO-8859-1: kw_GB.ISO8859-1 +kw_GB.iso885914: kw_GB.ISO8859-14 +kw_GB.ISO-8859-14: kw_GB.ISO8859-14 +kw_GB.iso885915: kw_GB.ISO8859-15 +kw_GB.ISO-8859-15: kw_GB.ISO8859-15 +ky: ky_KG.UTF-8 +ky_KG: ky_KG.UTF-8 +ky_KG.utf8: ky_KG.UTF-8 +lo: lo_LA.MULELAO-1 +lo_LA: lo_LA.MULELAO-1 +lo_LA.cp1133: lo_LA.IBM-CP1133 +lo_LA.ibmcp1133: lo_LA.IBM-CP1133 +lo_LA.mulelao1: lo_LA.MULELAO-1 +lt: lt_LT.ISO8859-13 +lt_LT: lt_LT.ISO8859-13 +lt_LT.iso88594: lt_LT.ISO8859-4 +lt_LT.ISO-8859-4: lt_LT.ISO8859-4 +lt_LT.ISO_8859-4: lt_LT.ISO8859-4 +lt_LT.iso885913: lt_LT.ISO8859-13 +lt_LT.ISO-8859-13: lt_LT.ISO8859-13 +lt_LT.ISO_8859-13: lt_LT.ISO8859-13 +lt_LT.utf8: lt_LT.UTF-8 +lv: lv_LV.ISO8859-13 +lv_LV: lv_LV.ISO8859-13 +lv_LV.iso88594: lv_LV.ISO8859-4 +lv_LV.ISO-8859-4: lv_LV.ISO8859-4 +lv_LV.iso885913: lv_LV.ISO8859-13 +lv_LV.ISO-8859-13: lv_LV.ISO8859-13 +lv_LV.ISO_8859-13: lv_LV.ISO8859-13 +lv_LV.utf8: lv_LV.UTF-8 +mai: mai_IN.UTF-8 +mai_IN: mai_IN.UTF-8 +mai_IN.utf8: mai_IN.UTF-8 +mi: mi_NZ.ISO8859-1 +mi_NZ: mi_NZ.ISO8859-1 +mi_NZ.iso88591: mi_NZ.ISO8859-1 +mk: mk_MK.ISO8859-5 +mk_MK: mk_MK.ISO8859-5 +mk_MK.iso88595: mk_MK.ISO8859-5 +mk_MK.ISO-8859-5: mk_MK.ISO8859-5 +mk_MK.cp1251: mk_MK.CP1251 +mk_MK.microsoftcp1251: mk_MK.CP1251 +mk_MK.microsoft-cp1251: mk_MK.CP1251 +mk_MK.MICROSOFT-CP1251: mk_MK.CP1251 +mk_MK.utf8: mk_MK.UTF-8 +ml: ml_IN.UTF-8 +ml_IN: ml_IN.UTF-8 +ml_IN.utf8: ml_IN.UTF-8 +mr: mr_IN.UTF-8 +mr_IN: mr_IN.UTF-8 +mr_IN.utf8: mr_IN.UTF-8 +ms: ms_MY.ISO8859-1 +ms_MY: ms_MY.ISO8859-1 +ms_MY.iso88591: ms_MY.ISO8859-1 +ms_MY.ISO-8859-1: ms_MY.ISO8859-1 +mt: mt_MT.ISO8859-3 +mt_MT: mt_MT.ISO8859-3 +mt_MT.ISO-8859-3: mt_MT.ISO8859-3 +nb: nb_NO.ISO8859-1 +nb_NO: nb_NO.ISO8859-1 +nb_NO.88591: nb_NO.ISO8859-1 +nb_NO.iso88591: nb_NO.ISO8859-1 +nb_NO.ISO-8859-1: nb_NO.ISO8859-1 +nb_NO.iso885915: nb_NO.ISO8859-15 +nb_NO.ISO-8859-15: nb_NO.ISO8859-15 +nb_NO.utf8: nb_NO.UTF-8 +ne_NP: ne_NP.UTF-8 +ne_NP.utf8: ne_NP.UTF-8 +nl: nl_NL.ISO8859-1 +nl.ISO8859-15: nl_NL.ISO8859-15 +nl_BE: nl_BE.ISO8859-1 +nl_BE.88591: nl_BE.ISO8859-1 +nl_BE.88591.en: nl_BE.ISO8859-1 +nl_BE.iso88591: nl_BE.ISO8859-1 +nl_BE.ISO-8859-1: nl_BE.ISO8859-1 +nl_BE.ISO_8859-1: nl_BE.ISO8859-1 +nl_BE.iso885915: nl_BE.ISO8859-15 +nl_BE.ISO-8859-15: nl_BE.ISO8859-15 +nl_BE.ISO-8859-15@euro: nl_BE.ISO8859-15 +nl_BE@euro: nl_BE.ISO8859-15 +nl_BE.utf8: nl_BE.UTF-8 +nl_BE.UTF-8@euro: nl_BE.UTF-8 +nl_NL: nl_NL.ISO8859-1 +nl_NL.88591: nl_NL.ISO8859-1 +nl_NL.88591.en: nl_NL.ISO8859-1 +nl_NL.iso88591: nl_NL.ISO8859-1 +nl_NL.ISO-8859-1: nl_NL.ISO8859-1 +nl_NL.ISO_8859-1: nl_NL.ISO8859-1 +nl_NL.iso885915: nl_NL.ISO8859-15 +nl_NL.ISO-8859-15: nl_NL.ISO8859-15 +nl_NL.ISO-8859-15@euro: nl_NL.ISO8859-15 +nl_NL@euro: nl_NL.ISO8859-15 +nl_NL.utf8: nl_NL.UTF-8 +nl_NL.UTF-8@euro: nl_NL.UTF-8 +nn: nn_NO.ISO8859-1 +nn_NO: nn_NO.ISO8859-1 +nn_NO.88591: nn_NO.ISO8859-1 +nn_NO.ISO-8859-1: nn_NO.ISO8859-1 +nn_NO.ISO_8859-1: nn_NO.ISO8859-1 +nn_NO.iso885915: nn_NO.ISO8859-15 +nn_NO.ISO-8859-15: nn_NO.ISO8859-15 +nn_NO.utf8: nn_NO.UTF-8 +no: no_NO.ISO8859-1 +no_NO: no_NO.ISO8859-1 +no_NO.88591: no_NO.ISO8859-1 +no_NO.88591.en: no_NO.ISO8859-1 +no_NO.iso88591: no_NO.ISO8859-1 +no_NO.ISO-8859-1: no_NO.ISO8859-1 +no_NO.ISO8859-1@bokmal: no_NO.ISO8859-1 +no_NO.ISO8859-1@nynorsk: no_NO.ISO8859-1 +no_NO.iso885915: no_NO.ISO8859-15 +no_NO.ISO-8859-15: no_NO.ISO8859-15 +no_NO.utf8: no_NO.UTF-8 +nr: nr_ZA.ISO8859-1 +nr_ZA: nr_ZA.ISO8859-1 +nr_ZA.iso88591: nr_ZA.ISO8859-1 +nr_ZA.utf8: nr_ZA.UTF-8 +nso: nso_ZA.ISO8859-15 +nso_ZA: nso_ZA.ISO8859-15 +nso_ZA.iso885915: nso_ZA.ISO8859-15 +nso_ZA.utf8: nso_ZA.UTF-8 +ny: ny_NO.ISO8859-1 +ny_NO: ny_NO.ISO8859-1 +ny_NO.88591: ny_NO.ISO8859-1 +ny_NO.ISO_8859-1: ny_NO.ISO8859-1 +ny_NO.iso885915: ny_NO.ISO8859-15 +no@nynorsk: ny_NO.ISO8859-1 +nynorsk: nn_NO.ISO8859-1 +oc: oc_FR.ISO8859-1 +oc_FR: oc_FR.ISO8859-1 +oc_FR.iso88591: oc_FR.ISO8859-1 +oc_FR.ISO-8859-1: oc_FR.ISO8859-1 +oc_FR.iso885915: oc_FR.ISO8859-15 +oc_FR.ISO-8859-15: oc_FR.ISO8859-15 +oc_FR@euro: oc_FR.ISO8859-15 +or: or_IN.UTF-8 +or_IN: or_IN.UTF-8 +or_IN.utf8: or_IN.UTF-8 +pa: pa_IN.UTF-8 +pa_IN: pa_IN.UTF-8 +pa_IN.utf8: pa_IN.UTF-8 +pa_PK.utf8: pa_PK.UTF-8 +pd: pd_US.ISO8859-1 +pd_DE: pd_DE.ISO8859-1 +pd_US: pd_US.ISO8859-1 +pd_DE.iso88591: pd_DE.ISO8859-1 +pd_US.iso88591: pd_US.ISO8859-1 +pd_DE.iso885915: pd_DE.ISO8859-15 +pd_US.iso885915: pd_US.ISO8859-15 +ph: ph_PH.ISO8859-1 +ph_PH: ph_PH.ISO8859-1 +ph_PH.iso88591: ph_PH.ISO8859-1 +pl: pl_PL.ISO8859-2 +pl.UTF-8: pl_PL.UTF-8 +pl_PL: pl_PL.ISO8859-2 +pl_PL.iso88592: pl_PL.ISO8859-2 +pl_PL.ISO-8859-2: pl_PL.ISO8859-2 +pl_PL.utf8: pl_PL.UTF-8 +pp: pp_AN.ISO8859-1 +pp_AN: pp_AN.ISO8859-1 +pp_AN.iso88591: pp_AN.ISO8859-1 +pt: pt_PT.ISO8859-1 +pt.ISO8859-15: pt_PT.ISO8859-15 +pt_BR: pt_BR.ISO8859-1 +pt_BR.88591: pt_BR.ISO8859-1 +pt_BR.88591.en: pt_BR.ISO8859-1 +pt_BR.iso88591: pt_BR.ISO8859-1 +pt_BR.ISO-8859-1: pt_BR.ISO8859-1 +pt_BR.ISO_8859-1: pt_BR.ISO8859-1 +pt_BR.iso885915: pt_BR.ISO8859-15 +pt_BR.utf8: pt_BR.UTF-8 +pt_PT: pt_PT.ISO8859-1 +pt_PT.88591: pt_PT.ISO8859-1 +pt_PT.88591.en: pt_PT.ISO8859-1 +pt_PT.iso88591: pt_PT.ISO8859-1 +pt_PT.ISO-8859-1: pt_PT.ISO8859-1 +pt_PT.ISO_8859-1: pt_PT.ISO8859-1 +pt_PT.iso885915: pt_PT.ISO8859-15 +pt_PT.ISO-8859-15: pt_PT.ISO8859-15 +pt_PT.ISO-8859-15@euro: pt_PT.ISO8859-15 +pt_PT@euro: pt_PT.ISO8859-15 +pt_PT.utf8: pt_PT.UTF-8 +pt_PT.UTF-8@euro: pt_PT.UTF-8 +ro: ro_RO.ISO8859-2 +ro_RO: ro_RO.ISO8859-2 +ro_RO.iso88592: ro_RO.ISO8859-2 +ro_RO.ISO-8859-2: ro_RO.ISO8859-2 +ro_RO.utf8: ro_RO.UTF-8 +ru: ru_RU.UTF-8 +ru.koi8-r: ru_RU.KOI8-R +ru.UTF-8: ru_RU.UTF-8 +ru_RU: ru_RU.UTF-8 +ru_RU.utf8: ru_RU.UTF-8 +ru_RU.iso88595: ru_RU.ISO8859-5 +ru_RU.ISO-8859-5: ru_RU.ISO8859-5 +ru_RU.koi8r: ru_RU.KOI8-R +ru_RU.cp1251: ru_RU.CP1251 +ru_RU.microsoftcp1251: ru_RU.CP1251 +ru_RU.microsoft-cp1251: ru_RU.CP1251 +ru_RU.MICROSOFT-CP1251: ru_RU.CP1251 +ru_UA: ru_UA.KOI8-U +ru_UA.koi8u: ru_UA.KOI8-U +ru_UA.cp1251: ru_UA.CP1251 +ru_UA.microsoftcp1251: ru_UA.CP1251 +ru_UA.microsoft-cp1251: ru_UA.CP1251 +ru_UA.MICROSOFT-CP1251: ru_UA.CP1251 +rw: rw_RW.ISO8859-1 +rw_RW: rw_RW.ISO8859-1 +rw_RW.iso8859-1: rw_RW.ISO8859-1 +rw_RW.ISO-8859-1: rw_RW.ISO8859-1 +rw_RW.utf8: rw_RW.UTF-8 +sd: sd_IN.UTF-8 +sd_IN.utf8: sd_IN.UTF-8 +sd@devanagari: sd_IN.UTF-8@devanagari +sd_IN@devanagari: sd_IN.UTF-8@devanagari +sd_IN.utf8@devanagari: sd_IN.UTF-8@devanagari +se_NO: se_NO.UTF-8 +se_NO.utf8: se_NO.UTF-8 +si: si_LK.UTF-8 +si_LK: si_LK.UTF-8 +sk: sk_SK.ISO8859-2 +sk_SK: sk_SK.ISO8859-2 +sk_SK.iso88592: sk_SK.ISO8859-2 +sk_SK.ISO-8859-2: sk_SK.ISO8859-2 +sk_SK.utf8: sk_SK.UTF-8 +sl: sl_SI.ISO8859-2 +sl_SI: sl_SI.ISO8859-2 +sl_SI.iso88592: sl_SI.ISO8859-2 +sl_SI.ISO-8859-2: sl_SI.ISO8859-2 +sl_SI.utf8: sl_SI.UTF-8 +sq: sq_AL.ISO8859-2 +sq_AL: sq_AL.ISO8859-2 +sq_AL.iso88592: sq_AL.ISO8859-2 +sq_AL.ISO-8859-2: sq_AL.ISO8859-2 +sq_AL.utf8: sq_AL.UTF-8 +sr: sr_RS.UTF-8 +sr@cyrillic: sr_RS.UTF-8 +sr@latin: sr_RS.UTF-8@latin +sr@Latn: sr_RS.UTF-8@latin +sr_RS: sr_RS.UTF-8 +sr_RS@latin: sr_RS.UTF-8@latin +sr_RS@Latn: sr_RS.UTF-8@latin +sr_RS.UTF-8@Latn: sr_RS.UTF-8@latin +sr_RS.utf8: sr_RS.UTF-8 +sr_ME: sr_ME.UTF-8 +sr_ME.utf8: sr_ME.UTF-8 +ss: ss_ZA.ISO8859-1 +ss_ZA: ss_ZA.ISO8859-1 +ss_ZA.iso88591: ss_ZA.ISO8859-1 +ss_ZA.utf8: ss_ZA.UTF-8 +st: st_ZA.ISO8859-1 +st_ZA: st_ZA.ISO8859-1 +st_ZA.iso88591: st_ZA.ISO8859-1 +st_ZA.utf8: st_ZA.UTF-8 +sv: sv_SE.ISO8859-1 +sv.ISO8859-15: sv_SE.ISO8859-15 +sv.UTF-8: sv_SE.UTF-8 +sv_FI: sv_FI.ISO8859-1 +sv_FI.iso88591: sv_FI.ISO8859-1 +sv_FI.ISO-8859-1: sv_FI.ISO8859-1 +sv_FI.iso885915: sv_FI.ISO8859-15 +sv_FI.ISO-8859-15: sv_FI.ISO8859-15 +sv_FI.ISO-8859-15@euro: sv_FI.ISO8859-15 +sv_FI@euro: sv_FI.ISO8859-15 +sv_FI.UTF-8@euro: sv_FI.UTF-8 +sv_FI.utf8: sv_FI.UTF-8 +sv_SE: sv_SE.ISO8859-1 +sv_SE.88591: sv_SE.ISO8859-1 +sv_SE.88591.en: sv_SE.ISO8859-1 +sv_SE.iso88591: sv_SE.ISO8859-1 +sv_SE.ISO-8859-1: sv_SE.ISO8859-1 +sv_SE.ISO_8859-1: sv_SE.ISO8859-1 +sv_SE.iso885915: sv_SE.ISO8859-15 +sv_SE.ISO-8859-15: sv_SE.ISO8859-15 +sv_SE@euro: sv_SE.ISO8859-15 +sv_SE.utf8: sv_SE.UTF-8 +ta: ta_IN.TSCII-0 +ta_IN: ta_IN.TSCII-0 +ta_IN.tscii: ta_IN.TSCII-0 +ta_IN.tscii0: ta_IN.TSCII-0 +te: te_IN.UTF-8 +te.UTF-8: te_IN.UTF-8 +te_IN.utf8: te_IN.UTF-8 +tg: tg_TJ.KOI8-C +tg_TJ: tg_TJ.KOI8-C +tg_TJ.koi8c: tg_TJ.KOI8-C +th: th_TH.ISO8859-11 +th_TH: th_TH.ISO8859-11 +th_TH.ISO-8859-11: th_TH.ISO8859-11 +th_TH.tis620: th_TH.TIS620 +th_TH.TIS-620: th_TH.TIS620 +th_TH.TACTIS: th_TH.TIS620 +th_TH.utf8: th_TH.UTF-8 +tl: tl_PH.ISO8859-1 +tl_PH: tl_PH.ISO8859-1 +tl_PH.iso88591: tl_PH.ISO8859-1 +tl_PH.ISO-8859-1: tl_PH.ISO8859-1 +tn: tn_ZA.ISO8859-15 +tn_ZA: tn_ZA.ISO8859-15 +tn_ZA.iso8859-15: tn_ZA.ISO8859-15 +tn_ZA.utf8: tn_ZA.UTF-8 +tr: tr_TR.ISO8859-9 +tr_TR: tr_TR.ISO8859-9 +TR_TR: tr_TR.ISO8859-9 +tr_TR.iso88599: tr_TR.ISO8859-9 +tr_TR.ISO-8859-9: tr_TR.ISO8859-9 +tr_TR.utf8: tr_TR.UTF-8 +TR_TR.utf8: tr_TR.UTF-8 +ts: ts_ZA.ISO8859-1 +ts_ZA: ts_ZA.ISO8859-1 +ts_ZA.iso88591: ts_ZA.ISO8859-1 +ts_ZA.utf8: ts_ZA.UTF-8 +tt: tt_RU.TATAR-CYR +tt_RU: tt_RU.TATAR-CYR +tt_RU.tatarcyr: tt_RU.TATAR-CYR +tt_RU.koi8c: tt_RU.KOI8-C +uk: uk_UA.KOI8-U +uk_UA: uk_UA.KOI8-U +uk_UA.iso88595: uk_UA.ISO8859-5 +uk_UA.koi8u: uk_UA.KOI8-U +uk_UA.cp1251: uk_UA.CP1251 +uk_UA.microsoftcp1251: uk_UA.CP1251 +uk_UA.microsoft-cp1251: uk_UA.CP1251 +uk_UA.MICROSOFT-CP1251: uk_UA.CP1251 +uk_UA.utf8: uk_UA.UTF-8 +ur: ur_IN.UTF-8 +ur_IN: ur_IN.UTF-8 +ur_IN.utf8: ur_IN.UTF-8 +ur: ur_PK.CP1256 +ur_PK: ur_PK.CP1256 +ur_PK.cp1256: ur_PK.CP1256 +ur_PK.microsoftcp1256: ur_PK.CP1256 +ur_PK.microsoft-cp1256: ur_PK.CP1256 +ur_PK.MICROSOFT-CP1256: ur_PK.CP1256 +uz: uz_UZ.UTF-8 +uz_UZ: uz_UZ.UTF-8 +uz_UZ.ISO-8859-1: uz_UZ.ISO8859-1 +uz_UZ@cyrillic: uz_UZ.UTF-8 +uz_UZ.UTF-8@cyrillic: uz_UZ.UTF-8 +ve: ve_ZA.UTF-8 +ve_ZA: ve_ZA.UTF-8 +ve_ZA.utf8: ve_ZA.UTF-8 +vi: vi_VN.TCVN +vi_VN: vi_VN.TCVN +Vi_VN: vi_VN.TCVN +VI_VN: vi_VN.TCVN +vi_VN.tcvn: vi_VN.TCVN +vi_VN.tcvn5712: vi_VN.TCVN +vi_VN.viscii: vi_VN.VISCII +vi_VN.viscii111: vi_VN.VISCII +vi_VN.utf8: vi_VN.UTF-8 +VI_VN.UTF-8: vi_VN.UTF-8 +wa: wa_BE.ISO8859-1 +wa_BE: wa_BE.ISO8859-1 +wa_BE.iso88591: wa_BE.ISO8859-1 +wa_BE.ISO-8859-1: wa_BE.ISO8859-1 +wa_BE.iso885915: wa_BE.ISO8859-15 +wa_BE.ISO-8859-15: wa_BE.ISO8859-15 +wa_BE.ISO-8859-15@euro: wa_BE.ISO8859-15 +wa_BE@euro: wa_BE.ISO8859-15 +xh: xh_ZA.ISO8859-1 +xh_ZA: xh_ZA.ISO8859-1 +xh_ZA.iso88591: xh_ZA.ISO8859-1 +xh_ZA.utf8: xh_ZA.UTF-8 +yi: yi_US.CP1255 +yi_US: yi_US.CP1255 +yi_US.cp1255: yi_US.CP1255 +yi_US.microsoftcp1255: yi_US.CP1255 +yi_US.microsoft-cp1255: yi_US.CP1255 +yi_US.MICROSOFT-CP1255: yi_US.CP1255 +zh_CN: zh_CN.gb2312 +zh_CN.Big5: zh_TW.big5 +zh_CN.EUC: zh_CN.eucCN +zh_CN.GB2312: zh_CN.gb2312 +zh_CN.GBK: zh_CN.gbk +zh_CN.GB18030: zh_CN.gb18030 +zh_CN.big5: zh_TW.big5 +zh_CN.euc: zh_CN.eucCN +zh_CN.utf8: zh_CN.UTF-8 +ZH_CN.UTF-8: zh_CN.UTF-8 +zh_HK: zh_HK.big5hkscs +zh_HK.BIG5HK: zh_HK.big5hkscs +zh_HK.Big5hkscs: zh_HK.big5hkscs +zh_HK.Big5-hkscs: zh_HK.big5hkscs +zh_HK.Big5_hkscs: zh_HK.big5hkscs +zh_HK.Big5HKSCS: zh_HK.big5hkscs +zh_HK.BIG5-HKSCS: zh_HK.big5hkscs +zh_HK.BIG5_HKSCS: zh_HK.big5hkscs +zh_HK.Big5-HKSCS: zh_HK.big5hkscs +zh_HK.big5-hkscs: zh_HK.big5hkscs +zh_HK.Big5-HKSCS: zh_HK.big5hkscs +zh_HK.Big5HKSCS: zh_HK.big5hkscs +zh_HK.Big5: zh_HK.big5 +zh_HK.utf8: zh_HK.UTF-8 +ZH_HK.UTF-8: zh_HK.UTF-8 +ZH_SG.UTF-8: zh_SG.UTF-8 +zh_TW: zh_TW.big5 +zh_TW.Big5: zh_TW.big5 +zh_TW.BIG5: zh_TW.big5 +Zh_TW.big5: zh_TW.big5 +zh_TW.EUC: zh_TW.eucTW +zh_TW.EUC-TW: zh_TW.eucTW +zh_TW.utf8: zh_TW.UTF-8 +ZH_TW.UTF-8: zh_TW.UTF-8 +zu: zu_ZA.ISO8859-1 +zu_ZA: zu_ZA.ISO8859-1 +zu_ZA.iso88591: zu_ZA.ISO8859-1 +zu_ZA.utf8: zu_ZA.UTF-8 +# The following locale names are used in SCO 3.0 +english_uk.8859: en_GB.ISO8859-1 +english_us.8859: en_US.ISO8859-1 +english_us.ascii: en_US.ISO8859-1 +french_france.8859: fr_FR.ISO8859-1 +german_germany.8859: de_DE.ISO8859-1 +portuguese_brazil.8859: pt_BR.ISO8859-1 +spanish_spain.8859: es_ES.ISO8859-1 +# The following locale names are used in HPUX 9.x +american.iso88591: en_US.ISO8859-1 +arabic.iso88596: ar_AA.ISO8859-6 +bokmal: nb_NO.ISO8859-1 +bokml: nb_NO.ISO8859-1 +bulgarian: bg_BG.CP1251 +c-french.iso88591: fr_CA.ISO8859-1 +catalan: ca_ES.ISO8859-1 +chinese-s: zh_CN.eucCN +chinese-t: zh_TW.eucTW +croatian: hr_HR.ISO8859-2 +czech: cs_CZ.ISO8859-2 +danish: da_DK.ISO8859-1 +dansk: da_DK.ISO8859-1 +danish.iso88591: da_DK.ISO8859-1 +deutsch: de_DE.ISO8859-1 +dutch: nl_NL.ISO8859-1 +dutch.iso88591: nl_BE.ISO8859-1 +eesti: et_EE.ISO8859-1 +english.iso88591: en_EN.ISO8859-1 +estonian: et_EE.ISO8859-1 +finnish: fi_FI.ISO8859-1 +finnish.iso88591: fi_FI.ISO8859-1 +franais: fr_FR.ISO8859-1 +french: fr_FR.ISO8859-1 +french.iso88591: fr_CH.ISO8859-1 +galego: gl_ES.ISO8859-1 +galician: gl_ES.ISO8859-1 +german: de_DE.ISO8859-1 +german.iso88591: de_CH.ISO8859-1 +greek: el_GR.ISO8859-7 +greek.iso88597: el_GR.ISO8859-7 +hebrew: he_IL.ISO8859-8 +hebrew.iso88598: he_IL.ISO8859-8 +hrvatski: hr_HR.ISO8859-2 +hungarian: hu_HU.ISO8859-2 +icelandic.iso88591: is_IS.ISO8859-1 +icelandic: is_IS.ISO8859-1 +italian: it_IT.ISO8859-1 +italian.iso88591: it_IT.ISO8859-1 +japanese: ja_JP.eucJP +japanese.euc: ja_JP.eucJP +japanese.sjis: ja_JP.SJIS +korean: ko_KR.eucKR +korean.euc: ko_KR.eucKR +lithuanian: lt_LT.ISO8859-13 +norwegian: no_NO.ISO8859-1 +norwegian.iso88591: no_NO.ISO8859-1 +polish: pl_PL.ISO8859-2 +portuguese: pt_PT.ISO8859-1 +portuguese.iso88591: pt_PT.ISO8859-1 +romanian: ro_RO.ISO8859-2 +rumanian: ro_RO.ISO8859-2 +russian: ru_RU.ISO8859-5 +serbocroatian: sr_RS.UTF-8@latin +sinhala: si_LK.UTF-8 +slovak: sk_SK.ISO8859-2 +slovene: sl_SI.ISO8859-2 +slovenian: sl_SI.ISO8859-2 +spanish: es_ES.ISO8859-1 +spanish.iso88591: es_ES.ISO8859-1 +swedish: sv_SE.ISO8859-1 +swedish.iso88591: sv_SE.ISO8859-1 +turkish: tr_TR.ISO8859-9 +turkish.iso88599: tr_TR.ISO8859-9 +thai: th_TH.ISO8859-11 +univ.utf8: en_US.UTF-8 +# Digital Unix utf +universal.utf8@ucs4: en_US.UTF-8 +# Solaris and SunOS have iso_8859_1 and iso_8859_15 LC_CTYPES +# to augment LANG=C +iso_8859_1: en_US.ISO8859-1 +iso_8859_15: en_US.ISO8859-15 +# Other miscellaneous locale names +ISO8859-1: en_US.ISO8859-1 +ISO-8859-1: en_US.ISO8859-1 +japan: ja_JP.eucJP +Japanese-EUC: ja_JP.eucJP diff --git a/test/data/locale/locale.dir b/test/data/locale/locale.dir new file mode 100644 index 0000000..8bdaf5f --- /dev/null +++ b/test/data/locale/locale.dir @@ -0,0 +1,948 @@ +# +# This file contains locale database file names +# The first word is the locale database file name and +# the second word is the full locale name. +# +# +C/XLC_LOCALE C +iso8859-1/XLC_LOCALE af_ZA.ISO8859-1 +iso8859-6/XLC_LOCALE ar_AA.ISO8859-6 +iso8859-6/XLC_LOCALE ar_BH.ISO8859-6 +iso8859-6/XLC_LOCALE ar_DZ.ISO8859-6 +iso8859-6/XLC_LOCALE ar_EG.ISO8859-6 +iso8859-6/XLC_LOCALE ar_IQ.ISO8859-6 +iso8859-6/XLC_LOCALE ar_JO.ISO8859-6 +iso8859-6/XLC_LOCALE ar_KW.ISO8859-6 +iso8859-6/XLC_LOCALE ar_LB.ISO8859-6 +iso8859-6/XLC_LOCALE ar_LY.ISO8859-6 +iso8859-6/XLC_LOCALE ar_MA.ISO8859-6 +iso8859-6/XLC_LOCALE ar_OM.ISO8859-6 +iso8859-6/XLC_LOCALE ar_QA.ISO8859-6 +iso8859-6/XLC_LOCALE ar_SA.ISO8859-6 +iso8859-6/XLC_LOCALE ar_SD.ISO8859-6 +iso8859-6/XLC_LOCALE ar_SY.ISO8859-6 +iso8859-6/XLC_LOCALE ar_TN.ISO8859-6 +iso8859-6/XLC_LOCALE ar_YE.ISO8859-6 +iso8859-6/XLC_LOCALE ar_AE.ISO8859-6 +iso8859-9e/XLC_LOCALE az_AZ.ISO8859-9E +koi8-c/XLC_LOCALE az_AZ.KOI8-C +iso8859-5/XLC_LOCALE be_BY.ISO8859-5 +microsoft-cp1251/XLC_LOCALE be_BY.CP1251 +iso8859-5/XLC_LOCALE bg_BG.ISO8859-5 +microsoft-cp1251/XLC_LOCALE bg_BG.CP1251 +koi8-r/XLC_LOCALE bg_BG.KOI8-R +iso8859-2/XLC_LOCALE bs_BA.ISO8859-2 +iso8859-1/XLC_LOCALE br_FR.ISO8859-1 +iso8859-14/XLC_LOCALE br_FR.ISO8859-14 +iso8859-15/XLC_LOCALE br_FR.ISO8859-15 +iso8859-1/XLC_LOCALE ca_AD.ISO8859-1 +iso8859-15/XLC_LOCALE ca_AD.ISO8859-15 +iso8859-1/XLC_LOCALE ca_ES.ISO8859-1 +iso8859-15/XLC_LOCALE ca_ES.ISO8859-15 +iso8859-1/XLC_LOCALE ca_FR.ISO8859-1 +iso8859-15/XLC_LOCALE ca_FR.ISO8859-15 +iso8859-1/XLC_LOCALE ca_IT.ISO8859-1 +iso8859-15/XLC_LOCALE ca_IT.ISO8859-15 +iso8859-2/XLC_LOCALE cs_CZ.ISO8859-2 +iso8859-1/XLC_LOCALE cy_GB.ISO8859-1 +iso8859-14/XLC_LOCALE cy_GB.ISO8859-14 +iso8859-15/XLC_LOCALE cy_GB.ISO8859-15 +iso8859-1/XLC_LOCALE da_DK.ISO8859-1 +iso8859-15/XLC_LOCALE da_DK.ISO8859-15 +iso8859-1/XLC_LOCALE de_AT.ISO8859-1 +iso8859-15/XLC_LOCALE de_AT.ISO8859-15 +iso8859-1/XLC_LOCALE de_BE.ISO8859-1 +iso8859-15/XLC_LOCALE de_BE.ISO8859-15 +iso8859-1/XLC_LOCALE de_CH.ISO8859-1 +iso8859-15/XLC_LOCALE de_CH.ISO8859-15 +iso8859-1/XLC_LOCALE de_DE.ISO8859-1 +iso8859-15/XLC_LOCALE de_DE.ISO8859-15 +iso8859-1/XLC_LOCALE de_LI.ISO8859-1 +iso8859-15/XLC_LOCALE de_LI.ISO8859-15 +iso8859-1/XLC_LOCALE de_LU.ISO8859-1 +iso8859-15/XLC_LOCALE de_LU.ISO8859-15 +iso8859-7/XLC_LOCALE el_GR.ISO8859-7 +iso8859-4/XLC_LOCALE ee_EE.ISO8859-4 +iso8859-15/XLC_LOCALE el_GR.ISO8859-15 +iso8859-1/XLC_LOCALE en_AU.ISO8859-1 +iso8859-1/XLC_LOCALE en_BE.ISO8859-1 +iso8859-15/XLC_LOCALE en_BE.ISO8859-15 +iso8859-1/XLC_LOCALE en_BZ.ISO8859-1 +iso8859-1/XLC_LOCALE en_BW.ISO8859-1 +iso8859-1/XLC_LOCALE en_CA.ISO8859-1 +iso8859-1/XLC_LOCALE en_EN.ISO8859-1 +iso8859-1/XLC_LOCALE en_GB.ISO8859-1 +iso8859-15/XLC_LOCALE en_GB.ISO8859-15 +iso8859-1/XLC_LOCALE en_HK.ISO8859-1 +iso8859-1/XLC_LOCALE en_IE.ISO8859-1 +iso8859-15/XLC_LOCALE en_IE.ISO8859-15 +iso8859-15/XLC_LOCALE en_IN.ISO8859-15 +iso8859-1/XLC_LOCALE en_JM.ISO8859-1 +iso8859-1/XLC_LOCALE en_NZ.ISO8859-1 +iso8859-1/XLC_LOCALE en_PH.ISO8859-1 +iso8859-1/XLC_LOCALE en_SG.ISO8859-1 +iso8859-1/XLC_LOCALE en_TT.ISO8859-1 +iso8859-1/XLC_LOCALE en_UK.ISO8859-1 +iso8859-15/XLC_LOCALE en_UK.ISO8859-15 +iso8859-1/XLC_LOCALE en_US.ISO8859-1 +iso8859-15/XLC_LOCALE en_US.ISO8859-15 +iso8859-1/XLC_LOCALE en_ZA.ISO8859-1 +iso8859-15/XLC_LOCALE en_ZA.ISO8859-15 +iso8859-1/XLC_LOCALE en_ZW.ISO8859-1 +iso8859-3/XLC_LOCALE eo_EO.ISO8859-3 +iso8859-3/XLC_LOCALE eo_XX.ISO8859-3 +iso8859-1/XLC_LOCALE es_AR.ISO8859-1 +iso8859-1/XLC_LOCALE es_BO.ISO8859-1 +iso8859-1/XLC_LOCALE es_CL.ISO8859-1 +iso8859-1/XLC_LOCALE es_CO.ISO8859-1 +iso8859-1/XLC_LOCALE es_CR.ISO8859-1 +iso8859-1/XLC_LOCALE es_DO.ISO8859-1 +iso8859-1/XLC_LOCALE es_EC.ISO8859-1 +iso8859-1/XLC_LOCALE es_ES.ISO8859-1 +iso8859-15/XLC_LOCALE es_ES.ISO8859-15 +iso8859-1/XLC_LOCALE es_GT.ISO8859-1 +iso8859-1/XLC_LOCALE es_HN.ISO8859-1 +iso8859-1/XLC_LOCALE es_MX.ISO8859-1 +iso8859-1/XLC_LOCALE es_NI.ISO8859-1 +iso8859-1/XLC_LOCALE es_PA.ISO8859-1 +iso8859-15/XLC_LOCALE es_PA.ISO8859-15 +iso8859-1/XLC_LOCALE es_PE.ISO8859-1 +iso8859-15/XLC_LOCALE es_PE.ISO8859-15 +iso8859-1/XLC_LOCALE es_PR.ISO8859-1 +iso8859-1/XLC_LOCALE es_PY.ISO8859-1 +iso8859-15/XLC_LOCALE es_PY.ISO8859-15 +iso8859-1/XLC_LOCALE es_SV.ISO8859-1 +iso8859-15/XLC_LOCALE es_SV.ISO8859-15 +iso8859-1/XLC_LOCALE es_US.ISO8859-1 +iso8859-1/XLC_LOCALE es_UY.ISO8859-1 +iso8859-15/XLC_LOCALE es_UY.ISO8859-15 +iso8859-1/XLC_LOCALE es_VE.ISO8859-1 +iso8859-15/XLC_LOCALE es_VE.ISO8859-15 +iso8859-1/XLC_LOCALE et_EE.ISO8859-1 +iso8859-4/XLC_LOCALE et_EE.ISO8859-4 +iso8859-13/XLC_LOCALE et_EE.ISO8859-13 +iso8859-15/XLC_LOCALE et_EE.ISO8859-15 +iso8859-1/XLC_LOCALE eu_ES.ISO8859-1 +iso8859-15/XLC_LOCALE eu_ES.ISO8859-15 +isiri-3342/XLC_LOCALE fa_IR.ISIRI-3342 +iso8859-1/XLC_LOCALE fi_FI.ISO8859-1 +iso8859-15/XLC_LOCALE fi_FI.ISO8859-15 +iso8859-1/XLC_LOCALE fo_FO.ISO8859-1 +iso8859-15/XLC_LOCALE fo_FO.ISO8859-15 +iso8859-1/XLC_LOCALE fr_BE.ISO8859-1 +iso8859-15/XLC_LOCALE fr_BE.ISO8859-15 +iso8859-1/XLC_LOCALE fr_CA.ISO8859-1 +iso8859-15/XLC_LOCALE fr_CA.ISO8859-15 +iso8859-1/XLC_LOCALE fr_CH.ISO8859-1 +iso8859-15/XLC_LOCALE fr_CH.ISO8859-15 +iso8859-1/XLC_LOCALE fr_FR.ISO8859-1 +iso8859-15/XLC_LOCALE fr_FR.ISO8859-15 +iso8859-1/XLC_LOCALE fr_LU.ISO8859-1 +iso8859-15/XLC_LOCALE fr_LU.ISO8859-15 +iso8859-1/XLC_LOCALE ga_IE.ISO8859-1 +iso8859-14/XLC_LOCALE ga_IE.ISO8859-14 +iso8859-15/XLC_LOCALE ga_IE.ISO8859-15 +iso8859-1/XLC_LOCALE gd_GB.ISO8859-1 +iso8859-14/XLC_LOCALE gd_GB.ISO8859-14 +iso8859-15/XLC_LOCALE gd_GB.ISO8859-15 +iso8859-1/XLC_LOCALE gl_ES.ISO8859-1 +iso8859-15/XLC_LOCALE gl_ES.ISO8859-15 +iso8859-1/XLC_LOCALE gv_GB.ISO8859-1 +iso8859-14/XLC_LOCALE gv_GB.ISO8859-14 +iso8859-15/XLC_LOCALE gv_GB.ISO8859-15 +iso8859-8/XLC_LOCALE he_IL.ISO8859-8 +microsoft-cp1255/XLC_LOCALE he_IL.CP1255 +iscii-dev/XLC_LOCALE hi_IN.ISCII-DEV +iso8859-2/XLC_LOCALE hr_HR.ISO8859-2 +iso8859-2/XLC_LOCALE hu_HU.ISO8859-2 +armscii-8/XLC_LOCALE hy_AM.ARMSCII-8 +iso8859-1/XLC_LOCALE id_ID.ISO8859-1 +iso8859-1/XLC_LOCALE id_ID.ISO8859-15 +iso8859-1/XLC_LOCALE is_IS.ISO8859-1 +iso8859-15/XLC_LOCALE is_IS.ISO8859-15 +iso8859-1/XLC_LOCALE it_CH.ISO8859-1 +iso8859-15/XLC_LOCALE it_CH.ISO8859-15 +iso8859-1/XLC_LOCALE it_IT.ISO8859-1 +iso8859-15/XLC_LOCALE it_IT.ISO8859-15 +ja/XLC_LOCALE ja_JP.eucJP +ja.SJIS/XLC_LOCALE ja_JP.SJIS +ja.JIS/XLC_LOCALE ja_JP.JIS7 +georgian-academy/XLC_LOCALE ka_GE.GEORGIAN-ACADEMY +georgian-ps/XLC_LOCALE ka_GE.GEORGIAN-PS +iso8859-1/XLC_LOCALE kl_GL.ISO8859-1 +iso8859-15/XLC_LOCALE kl_GL.ISO8859-15 +ko/XLC_LOCALE ko_KR.eucKR +iso8859-1/XLC_LOCALE kw_GB.ISO8859-1 +iso8859-14/XLC_LOCALE kw_GB.ISO8859-14 +iso8859-15/XLC_LOCALE kw_GB.ISO8859-15 +ibm-cp1133/XLC_LOCALE lo_LA.IBM-CP1133 +mulelao-1/XLC_LOCALE lo_LA.MULELAO-1 +iso8859-4/XLC_LOCALE lt_LT.ISO8859-4 +iso8859-13/XLC_LOCALE lt_LT.ISO8859-13 +iso8859-4/XLC_LOCALE lv_LV.ISO8859-4 +iso8859-13/XLC_LOCALE lv_LV.ISO8859-13 +iso8859-13/XLC_LOCALE mi_NZ.ISO8859-13 +iso8859-5/XLC_LOCALE mk_MK.ISO8859-5 +microsoft-cp1251/XLC_LOCALE mk_MK.CP1251 +iso8859-1/XLC_LOCALE ms_MY.ISO8859-1 +iso8859-3/XLC_LOCALE mt_MT.ISO8859-3 +iso8859-1/XLC_LOCALE nb_NO.ISO8859-1 +iso8859-1/XLC_LOCALE nb_NO.ISO8859-15 +iso8859-1/XLC_LOCALE nl_BE.ISO8859-1 +iso8859-15/XLC_LOCALE nl_BE.ISO8859-15 +iso8859-1/XLC_LOCALE nl_NL.ISO8859-1 +iso8859-15/XLC_LOCALE nl_NL.ISO8859-15 +iso8859-1/XLC_LOCALE nn_NO.ISO8859-1 +iso8859-1/XLC_LOCALE nn_NO.ISO8859-15 +iso8859-1/XLC_LOCALE no_NO.ISO8859-1 +iso8859-1/XLC_LOCALE no_NO.ISO8859-15 +iso8859-1/XLC_LOCALE nr_ZA.ISO8859-1 +iso8859-15/XLC_LOCALE nso_ZA.ISO8859-15 +iso8859-1/XLC_LOCALE ny_NO.ISO8859-1 +iso8859-1/XLC_LOCALE ny_NO.ISO8859-15 +iso8859-1/XLC_LOCALE oc_FR.ISO8859-1 +iso8859-15/XLC_LOCALE oc_FR.ISO8859-15 +iso8859-1/XLC_LOCALE pd_DE.ISO8859-1 +iso8859-15/XLC_LOCALE pd_DE.ISO8859-15 +iso8859-1/XLC_LOCALE pd_US.ISO8859-1 +iso8859-15/XLC_LOCALE pd_US.ISO8859-15 +iso8859-1/XLC_LOCALE ph_PH.ISO8859-1 +iso8859-2/XLC_LOCALE pl_PL.ISO8859-2 +iso8859-1/XLC_LOCALE pp_AN.ISO8859-1 +iso8859-1/XLC_LOCALE pt_BR.ISO8859-1 +iso8859-15/XLC_LOCALE pt_BR.ISO8859-15 +iso8859-1/XLC_LOCALE pt_PT.ISO8859-1 +iso8859-15/XLC_LOCALE pt_PT.ISO8859-15 +iso8859-2/XLC_LOCALE ro_RO.ISO8859-2 +iso8859-5/XLC_LOCALE ru_RU.ISO8859-5 +microsoft-cp1251/XLC_LOCALE ru_RU.CP1251 +koi8-r/XLC_LOCALE ru_RU.KOI8-R +microsoft-cp1251/XLC_LOCALE ru_UA.CP1251 +koi8-u/XLC_LOCALE ru_UA.KOI8-U +iso8859-1/XLC_LOCALE rw_RW.ISO8859-1 +iso8859-2/XLC_LOCALE sh_YU.ISO8859-2 +iso8859-2/XLC_LOCALE sk_SK.ISO8859-2 +iso8859-2/XLC_LOCALE sl_SI.ISO8859-2 +iso8859-2/XLC_LOCALE sq_AL.ISO8859-2 +iso8859-2/XLC_LOCALE sr_YU.ISO8859-2 +iso8859-5/XLC_LOCALE sr_YU.ISO8859-5 +microsoft-cp1251/XLC_LOCALE sr_YU.CP1251 +iso8859-1/XLC_LOCALE ss_ZA.ISO8859-1 +iso8859-1/XLC_LOCALE st_ZA.ISO8859-1 +iso8859-1/XLC_LOCALE sv_FI.ISO8859-1 +iso8859-15/XLC_LOCALE sv_FI.ISO8859-15 +iso8859-1/XLC_LOCALE sv_SE.ISO8859-1 +iso8859-15/XLC_LOCALE sv_SE.ISO8859-15 +tscii-0/XLC_LOCALE ta_IN.TSCII-0 +koi8-c/XLC_LOCALE tg_TJ.KOI8-C +th_TH/XLC_LOCALE th_TH.TIS620 +iso8859-11/XLC_LOCALE th_TH.ISO8859-11 +iso8859-1/XLC_LOCALE tl_PH.ISO8859-1 +iso8859-15/XLC_LOCALE tn_ZA.ISO8859-15 +iso8859-9/XLC_LOCALE tr_TR.ISO8859-9 +iso8859-1/XLC_LOCALE ts_ZA.ISO8859-1 +tatar-cyr/XLC_LOCALE tt_RU.TATAR-CYR +koi8-c/XLC_LOCALE tt_RU.KOI8-C +iso8859-5/XLC_LOCALE uk_UA.ISO8859-5 +microsoft-cp1251/XLC_LOCALE uk_UA.CP1251 +koi8-u/XLC_LOCALE uk_UA.KOI8-U +microsoft-cp1256/XLC_LOCALE ur_PK.CP1256 +iso8859-1/XLC_LOCALE uz_UZ.ISO8859-1 +vi_VN.tcvn/XLC_LOCALE vi_VN.TCVN +vi_VN.viscii/XLC_LOCALE vi_VN.VISCII +iso8859-1/XLC_LOCALE wa_BE.ISO8859-1 +iso8859-15/XLC_LOCALE wa_BE.ISO8859-15 +iso8859-1/XLC_LOCALE xh_ZA.ISO8859-1 +microsoft-cp1255/XLC_LOCALE yi_US.CP1255 +zh_CN/XLC_LOCALE zh_CN.eucCN +zh_CN/XLC_LOCALE zh_CN.gb2312 +zh_CN.gbk/XLC_LOCALE zh_CN.gbk +zh_CN.gb18030/XLC_LOCALE zh_CN.gb18030 +zh_HK.big5/XLC_LOCALE zh_HK.big5 +zh_HK.big5hkscs/XLC_LOCALE zh_HK.big5hkscs +zh_TW.big5/XLC_LOCALE zh_TW.big5 +zh_TW/XLC_LOCALE zh_TW.eucTW +iso8859-1/XLC_LOCALE zu_ZA.ISO8859-1 +# Note: The UTF-8 locales don't work correctly yet. Work in progress. +en_US.UTF-8/XLC_LOCALE af_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE am_ET.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_AA.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_AE.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_BH.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_DZ.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_EG.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_IQ.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_JO.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_KW.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_LB.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_LY.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_MA.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_OM.UTF-8 +en_US.UTF-8/XLC_LOCALE bs_BA.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_QA.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_SA.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_SD.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_SY.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_TN.UTF-8 +en_US.UTF-8/XLC_LOCALE ar_YE.UTF-8 +en_US.UTF-8/XLC_LOCALE as_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ast_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE az_AZ.UTF-8 +en_US.UTF-8/XLC_LOCALE be_BY.UTF-8 +en_US.UTF-8/XLC_LOCALE be_BY.UTF-8@latin +en_US.UTF-8/XLC_LOCALE bg_BG.UTF-8 +en_US.UTF-8/XLC_LOCALE bn_BD.UTF-8 +en_US.UTF-8/XLC_LOCALE bn_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE bo_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE br_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE ca_AD.UTF-8 +en_US.UTF-8/XLC_LOCALE ca_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE ca_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE ca_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE cs_CZ.UTF-8 +en_US.UTF-8/XLC_LOCALE cy_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE da_DK.UTF-8 +en_US.UTF-8/XLC_LOCALE de_AT.UTF-8 +en_US.UTF-8/XLC_LOCALE de_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE de_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE de_DE.UTF-8 +en_US.UTF-8/XLC_LOCALE de_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE de_LI.UTF-8 +en_US.UTF-8/XLC_LOCALE de_LU.UTF-8 +en_US.UTF-8/XLC_LOCALE el_CY.UTF-8 +en_US.UTF-8/XLC_LOCALE el_GR.UTF-8 +en_US.UTF-8/XLC_LOCALE en_AU.UTF-8 +en_US.UTF-8/XLC_LOCALE en_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE en_BW.UTF-8 +en_US.UTF-8/XLC_LOCALE en_BZ.UTF-8 +en_US.UTF-8/XLC_LOCALE en_CA.UTF-8 +en_US.UTF-8/XLC_LOCALE en_DK.UTF-8 +en_US.UTF-8/XLC_LOCALE en_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE en_EN.UTF-8 +en_US.UTF-8/XLC_LOCALE en_HK.UTF-8 +en_US.UTF-8/XLC_LOCALE en_IE.UTF-8 +en_US.UTF-8/XLC_LOCALE en_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE en_JM.UTF-8 +en_US.UTF-8/XLC_LOCALE en_MT.UTF-8 +en_US.UTF-8/XLC_LOCALE en_NZ.UTF-8 +en_US.UTF-8/XLC_LOCALE en_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE en_SG.UTF-8 +en_US.UTF-8/XLC_LOCALE en_TT.UTF-8 +en_US.UTF-8/XLC_LOCALE en_UK.UTF-8 +en_US.UTF-8/XLC_LOCALE en_US.UTF-8 +en_US.UTF-8/XLC_LOCALE en_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE en_ZW.UTF-8 +en_US.UTF-8/XLC_LOCALE eo_EO.UTF-8 +en_US.UTF-8/XLC_LOCALE eo_XX.UTF-8 +en_US.UTF-8/XLC_LOCALE es_AR.UTF-8 +en_US.UTF-8/XLC_LOCALE es_BO.UTF-8 +en_US.UTF-8/XLC_LOCALE es_CL.UTF-8 +en_US.UTF-8/XLC_LOCALE es_CO.UTF-8 +en_US.UTF-8/XLC_LOCALE es_CR.UTF-8 +en_US.UTF-8/XLC_LOCALE es_DO.UTF-8 +en_US.UTF-8/XLC_LOCALE es_EC.UTF-8 +en_US.UTF-8/XLC_LOCALE es_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE es_GT.UTF-8 +en_US.UTF-8/XLC_LOCALE es_HN.UTF-8 +en_US.UTF-8/XLC_LOCALE es_MX.UTF-8 +en_US.UTF-8/XLC_LOCALE es_NI.UTF-8 +en_US.UTF-8/XLC_LOCALE es_PA.UTF-8 +en_US.UTF-8/XLC_LOCALE es_PE.UTF-8 +en_US.UTF-8/XLC_LOCALE es_PR.UTF-8 +en_US.UTF-8/XLC_LOCALE es_PY.UTF-8 +en_US.UTF-8/XLC_LOCALE es_SV.UTF-8 +en_US.UTF-8/XLC_LOCALE es_US.UTF-8 +en_US.UTF-8/XLC_LOCALE es_UY.UTF-8 +en_US.UTF-8/XLC_LOCALE es_VE.UTF-8 +en_US.UTF-8/XLC_LOCALE et_EE.UTF-8 +en_US.UTF-8/XLC_LOCALE eu_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE fa_IR.UTF-8 +en_US.UTF-8/XLC_LOCALE fi_FI.UTF-8 +en_US.UTF-8/XLC_LOCALE fo_FO.UTF-8 +en_US.UTF-8/XLC_LOCALE fr_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE fr_CA.UTF-8 +en_US.UTF-8/XLC_LOCALE fr_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE fr_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE fr_LU.UTF-8 +en_US.UTF-8/XLC_LOCALE ga_IE.UTF-8 +en_US.UTF-8/XLC_LOCALE gd_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE gl_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE gu_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE gv_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE he_IL.UTF-8 +en_US.UTF-8/XLC_LOCALE hi_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE hne_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE hr_HR.UTF-8 +en_US.UTF-8/XLC_LOCALE hu_HU.UTF-8 +en_US.UTF-8/XLC_LOCALE hy_AM.UTF-8 +en_US.UTF-8/XLC_LOCALE ia.UTF-8 +en_US.UTF-8/XLC_LOCALE id_ID.UTF-8 +en_US.UTF-8/XLC_LOCALE ie.UTF-8 +en_US.UTF-8/XLC_LOCALE is_IS.UTF-8 +en_US.UTF-8/XLC_LOCALE it_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE it_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE iu_CA.UTF-8 +ja_JP.UTF-8/XLC_LOCALE ja_JP.UTF-8 +en_US.UTF-8/XLC_LOCALE ka_GE.UTF-8 +en_US.UTF-8/XLC_LOCALE kk_KZ.UTF-8 +en_US.UTF-8/XLC_LOCALE kl_GL.UTF-8 +en_US.UTF-8/XLC_LOCALE km_KH.UTF-8 +en_US.UTF-8/XLC_LOCALE kn_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ks_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ks_IN.UTF-8@devanagari +ko_KR.UTF-8/XLC_LOCALE ko_KR.UTF-8 +en_US.UTF-8/XLC_LOCALE ku_TR.UTF-8 +en_US.UTF-8/XLC_LOCALE kw_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE ky_KG.UTF-8 +en_US.UTF-8/XLC_LOCALE lo_LA.UTF-8 +en_US.UTF-8/XLC_LOCALE lt_LT.UTF-8 +en_US.UTF-8/XLC_LOCALE lv_LV.UTF-8 +en_US.UTF-8/XLC_LOCALE mai_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE mi_NZ.UTF-8 +en_US.UTF-8/XLC_LOCALE mk_MK.UTF-8 +en_US.UTF-8/XLC_LOCALE ml_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE mr_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ms_MY.UTF-8 +en_US.UTF-8/XLC_LOCALE mt_MT.UTF-8 +en_US.UTF-8/XLC_LOCALE nl_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE nl_NL.UTF-8 +en_US.UTF-8/XLC_LOCALE nb_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE nn_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE no_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE nr_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE nso_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE ny_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE oc_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE or_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE pa_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE pa_PK.UTF-8 +en_US.UTF-8/XLC_LOCALE pd_DE.UTF-8 +en_US.UTF-8/XLC_LOCALE pd_US.UTF-8 +en_US.UTF-8/XLC_LOCALE ph_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE pl_PL.UTF-8 +en_US.UTF-8/XLC_LOCALE pp_AN.UTF-8 +pt_BR.UTF-8/XLC_LOCALE pt_BR.UTF-8 +pt_PT.UTF-8/XLC_LOCALE pt_PT.UTF-8 +en_US.UTF-8/XLC_LOCALE ro_RO.UTF-8 +ru_RU.UTF-8/XLC_LOCALE ru_RU.UTF-8 +en_US.UTF-8/XLC_LOCALE ru_UA.UTF-8 +en_US.UTF-8/XLC_LOCALE rw_RW.UTF-8 +en_US.UTF-8/XLC_LOCALE sa_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE sd_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE sd_IN.UTF-8@devanagari +en_US.UTF-8/XLC_LOCALE se_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE sh_BA.UTF-8 +en_US.UTF-8/XLC_LOCALE sh_YU.UTF-8 +en_US.UTF-8/XLC_LOCALE si_LK.UTF-8 +en_US.UTF-8/XLC_LOCALE sk_SK.UTF-8 +en_US.UTF-8/XLC_LOCALE sl_SI.UTF-8 +en_US.UTF-8/XLC_LOCALE sq_AL.UTF-8 +en_US.UTF-8/XLC_LOCALE sr_ME.UTF-8 +en_US.UTF-8/XLC_LOCALE sr_RS.UTF-8 +en_US.UTF-8/XLC_LOCALE sr_RS.UTF-8@latin +en_US.UTF-8/XLC_LOCALE sr_YU.UTF-8 +en_US.UTF-8/XLC_LOCALE ss_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE st_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE sv_FI.UTF-8 +en_US.UTF-8/XLC_LOCALE sv_SE.UTF-8 +en_US.UTF-8/XLC_LOCALE ta_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE te_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE tg_TJ.UTF-8 +th_TH.UTF-8/XLC_LOCALE th_TH.UTF-8 +en_US.UTF-8/XLC_LOCALE ti_ER.UTF-8 +en_US.UTF-8/XLC_LOCALE ti_ET.UTF-8 +en_US.UTF-8/XLC_LOCALE tl_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE tn_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE tr_TR.UTF-8 +en_US.UTF-8/XLC_LOCALE ts_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE tt_RU.UTF-8 +en_US.UTF-8/XLC_LOCALE uk_UA.UTF-8 +en_US.UTF-8/XLC_LOCALE ur_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE ur_PK.UTF-8 +en_US.UTF-8/XLC_LOCALE uz_UZ.UTF-8 +en_US.UTF-8/XLC_LOCALE ve_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE vi_VN.UTF-8 +en_US.UTF-8/XLC_LOCALE wa_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE xh_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE yi_US.UTF-8 +en_US.UTF-8/XLC_LOCALE ne_NP.UTF-8 +zh_CN.UTF-8/XLC_LOCALE zh_CN.UTF-8 +zh_HK.UTF-8/XLC_LOCALE zh_HK.UTF-8 +zh_CN.UTF-8/XLC_LOCALE zh_SG.UTF-8 +zh_TW.UTF-8/XLC_LOCALE zh_TW.UTF-8 +en_US.UTF-8/XLC_LOCALE zu_ZA.UTF-8 +# +# This file contains locale database file names +# The first word is the locale database file name and +# the second word is the full locale name. +# +# +C/XLC_LOCALE: C +iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1 +iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6 +iso8859-6/XLC_LOCALE: ar_AE.ISO8859-6 +iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E +koi8-c/XLC_LOCALE: az_AZ.KOI8-C +iso8859-5/XLC_LOCALE: be_BY.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: be_BY.CP1251 +iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251 +koi8-r/XLC_LOCALE: bg_BG.KOI8-R +iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2 +iso8859-1/XLC_LOCALE: br_FR.ISO8859-1 +iso8859-14/XLC_LOCALE: br_FR.ISO8859-14 +iso8859-15/XLC_LOCALE: br_FR.ISO8859-15 +iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1 +iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15 +iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1 +iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15 +iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1 +iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15 +iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1 +iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15 +iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2 +iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1 +iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14 +iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15 +iso8859-1/XLC_LOCALE: da_DK.ISO8859-1 +iso8859-15/XLC_LOCALE: da_DK.ISO8859-15 +iso8859-1/XLC_LOCALE: de_AT.ISO8859-1 +iso8859-15/XLC_LOCALE: de_AT.ISO8859-15 +iso8859-1/XLC_LOCALE: de_BE.ISO8859-1 +iso8859-15/XLC_LOCALE: de_BE.ISO8859-15 +iso8859-1/XLC_LOCALE: de_CH.ISO8859-1 +iso8859-15/XLC_LOCALE: de_CH.ISO8859-15 +iso8859-1/XLC_LOCALE: de_DE.ISO8859-1 +iso8859-15/XLC_LOCALE: de_DE.ISO8859-15 +iso8859-1/XLC_LOCALE: de_LI.ISO8859-1 +iso8859-15/XLC_LOCALE: de_LI.ISO8859-15 +iso8859-1/XLC_LOCALE: de_LU.ISO8859-1 +iso8859-15/XLC_LOCALE: de_LU.ISO8859-15 +iso8859-7/XLC_LOCALE: el_GR.ISO8859-7 +iso8859-4/XLC_LOCALE: ee_EE.ISO8859-4 +iso8859-15/XLC_LOCALE: el_GR.ISO8859-15 +iso8859-1/XLC_LOCALE: en_AU.ISO8859-1 +iso8859-1/XLC_LOCALE: en_BE.ISO8859-1 +iso8859-15/XLC_LOCALE: en_BE.ISO8859-15 +iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1 +iso8859-1/XLC_LOCALE: en_BW.ISO8859-1 +iso8859-1/XLC_LOCALE: en_CA.ISO8859-1 +iso8859-1/XLC_LOCALE: en_EN.ISO8859-1 +iso8859-1/XLC_LOCALE: en_GB.ISO8859-1 +iso8859-15/XLC_LOCALE: en_GB.ISO8859-15 +iso8859-1/XLC_LOCALE: en_HK.ISO8859-1 +iso8859-1/XLC_LOCALE: en_IE.ISO8859-1 +iso8859-15/XLC_LOCALE: en_IE.ISO8859-15 +iso8859-15/XLC_LOCALE: en_IN.ISO8859-15 +iso8859-1/XLC_LOCALE: en_JM.ISO8859-1 +iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1 +iso8859-1/XLC_LOCALE: en_PH.ISO8859-1 +iso8859-1/XLC_LOCALE: en_SG.ISO8859-1 +iso8859-1/XLC_LOCALE: en_TT.ISO8859-1 +iso8859-1/XLC_LOCALE: en_UK.ISO8859-1 +iso8859-15/XLC_LOCALE: en_UK.ISO8859-15 +iso8859-1/XLC_LOCALE: en_US.ISO8859-1 +iso8859-15/XLC_LOCALE: en_US.ISO8859-15 +iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1 +iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15 +iso8859-1/XLC_LOCALE: en_ZW.ISO8859-1 +iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3 +iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3 +iso8859-1/XLC_LOCALE: es_AR.ISO8859-1 +iso8859-1/XLC_LOCALE: es_BO.ISO8859-1 +iso8859-1/XLC_LOCALE: es_CL.ISO8859-1 +iso8859-1/XLC_LOCALE: es_CO.ISO8859-1 +iso8859-1/XLC_LOCALE: es_CR.ISO8859-1 +iso8859-1/XLC_LOCALE: es_DO.ISO8859-1 +iso8859-1/XLC_LOCALE: es_EC.ISO8859-1 +iso8859-1/XLC_LOCALE: es_ES.ISO8859-1 +iso8859-15/XLC_LOCALE: es_ES.ISO8859-15 +iso8859-1/XLC_LOCALE: es_GT.ISO8859-1 +iso8859-1/XLC_LOCALE: es_HN.ISO8859-1 +iso8859-1/XLC_LOCALE: es_MX.ISO8859-1 +iso8859-1/XLC_LOCALE: es_NI.ISO8859-1 +iso8859-1/XLC_LOCALE: es_PA.ISO8859-1 +iso8859-15/XLC_LOCALE: es_PA.ISO8859-15 +iso8859-1/XLC_LOCALE: es_PE.ISO8859-1 +iso8859-15/XLC_LOCALE: es_PE.ISO8859-15 +iso8859-1/XLC_LOCALE: es_PR.ISO8859-1 +iso8859-1/XLC_LOCALE: es_PY.ISO8859-1 +iso8859-15/XLC_LOCALE: es_PY.ISO8859-15 +iso8859-1/XLC_LOCALE: es_SV.ISO8859-1 +iso8859-15/XLC_LOCALE: es_SV.ISO8859-15 +iso8859-1/XLC_LOCALE: es_US.ISO8859-1 +iso8859-1/XLC_LOCALE: es_UY.ISO8859-1 +iso8859-15/XLC_LOCALE: es_UY.ISO8859-15 +iso8859-1/XLC_LOCALE: es_VE.ISO8859-1 +iso8859-15/XLC_LOCALE: es_VE.ISO8859-15 +iso8859-1/XLC_LOCALE: et_EE.ISO8859-1 +iso8859-4/XLC_LOCALE: et_EE.ISO8859-4 +iso8859-13/XLC_LOCALE: et_EE.ISO8859-13 +iso8859-15/XLC_LOCALE: et_EE.ISO8859-15 +iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1 +iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15 +isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342 +iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1 +iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15 +iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1 +iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15 +iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1 +iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15 +iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1 +iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15 +iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1 +iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15 +iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1 +iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15 +iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1 +iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15 +iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1 +iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14 +iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15 +iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1 +iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14 +iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15 +iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1 +iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15 +iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1 +iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14 +iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15 +iso8859-8/XLC_LOCALE: he_IL.ISO8859-8 +microsoft-cp1255/XLC_LOCALE: he_IL.CP1255 +iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV +iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2 +iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2 +armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8 +iso8859-1/XLC_LOCALE: id_ID.ISO8859-1 +iso8859-1/XLC_LOCALE: id_ID.ISO8859-15 +iso8859-1/XLC_LOCALE: is_IS.ISO8859-1 +iso8859-15/XLC_LOCALE: is_IS.ISO8859-15 +iso8859-1/XLC_LOCALE: it_CH.ISO8859-1 +iso8859-15/XLC_LOCALE: it_CH.ISO8859-15 +iso8859-1/XLC_LOCALE: it_IT.ISO8859-1 +iso8859-15/XLC_LOCALE: it_IT.ISO8859-15 +ja/XLC_LOCALE: ja_JP.eucJP +ja.SJIS/XLC_LOCALE: ja_JP.SJIS +ja.JIS/XLC_LOCALE: ja_JP.JIS7 +georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY +georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS +iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1 +iso8859-15/XLC_LOCALE: kl_GL.ISO8859-15 +ko/XLC_LOCALE: ko_KR.eucKR +iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1 +iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14 +iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15 +ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133 +mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1 +iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4 +iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13 +iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4 +iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13 +iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13 +iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251 +iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1 +iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3 +iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1 +iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15 +iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1 +iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15 +iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1 +iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15 +iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1 +iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15 +iso8859-1/XLC_LOCALE: no_NO.ISO8859-1 +iso8859-1/XLC_LOCALE: no_NO.ISO8859-15 +iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1 +iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15 +iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1 +iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15 +iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1 +iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15 +iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1 +iso8859-15/XLC_LOCALE: pd_DE.ISO8859-15 +iso8859-1/XLC_LOCALE: pd_US.ISO8859-1 +iso8859-15/XLC_LOCALE: pd_US.ISO8859-15 +iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1 +iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2 +iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1 +iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1 +iso8859-15/XLC_LOCALE: pt_BR.ISO8859-15 +iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1 +iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15 +iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2 +iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251 +koi8-r/XLC_LOCALE: ru_RU.KOI8-R +microsoft-cp1251/XLC_LOCALE: ru_UA.CP1251 +koi8-u/XLC_LOCALE: ru_UA.KOI8-U +iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1 +iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2 +iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2 +iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2 +iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2 +iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2 +iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251 +iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1 +iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1 +iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1 +iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15 +iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1 +iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15 +tscii-0/XLC_LOCALE: ta_IN.TSCII-0 +koi8-c/XLC_LOCALE: tg_TJ.KOI8-C +th_TH/XLC_LOCALE: th_TH.TIS620 +iso8859-11/XLC_LOCALE: th_TH.ISO8859-11 +iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1 +iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15 +iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9 +iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1 +tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR +koi8-c/XLC_LOCALE: tt_RU.KOI8-C +iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5 +microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251 +koi8-u/XLC_LOCALE: uk_UA.KOI8-U +microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256 +iso8859-1/XLC_LOCALE: uz_UZ.ISO8859-1 +vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN +vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII +iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1 +iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15 +iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1 +microsoft-cp1255/XLC_LOCALE: yi_US.CP1255 +zh_CN/XLC_LOCALE: zh_CN.eucCN +zh_CN/XLC_LOCALE: zh_CN.gb2312 +zh_CN.gbk/XLC_LOCALE: zh_CN.gbk +zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030 +zh_HK.big5/XLC_LOCALE: zh_HK.big5 +zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs +zh_TW.big5/XLC_LOCALE: zh_TW.big5 +zh_TW/XLC_LOCALE: zh_TW.eucTW +iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1 +# Note: The UTF-8 locales don't work correctly yet. Work in progress. +en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8 +en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8 +en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ast_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8 +en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8@latin +en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8 +en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8 +en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8 +en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8 +en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8 +en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8 +en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_BW.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_DK.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_EN.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_HK.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_SG.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_US.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: en_ZW.UTF-8 +en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8 +en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_US.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8 +en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8 +en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8 +en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8 +en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8 +en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8 +en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8 +en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8 +en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8 +en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8 +en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8 +en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8 +en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8 +en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8 +en_US.UTF-8/XLC_LOCALE: ia.UTF-8 +en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8 +en_US.UTF-8/XLC_LOCALE: ie.UTF-8 +en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8 +en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8 +en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8 +en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8 +ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8 +en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8 +en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8 +en_US.UTF-8/XLC_LOCALE: km_KH.UTF-8 +en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8@devanagari +ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8 +en_US.UTF-8/XLC_LOCALE: ku_TR.UTF-8 +en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8 +en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8 +en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8 +en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8 +en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8 +en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8 +en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8 +en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8 +en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8 +en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8 +en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8 +en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8 +en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8 +en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8 +en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8 +pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8 +pt_PT.UTF-8/XLC_LOCALE: pt_PT.UTF-8 +en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8 +ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8 +en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8 +en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8 +en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8@devanagari +en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8 +en_US.UTF-8/XLC_LOCALE: sh_YU.UTF-8 +en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8 +en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8 +en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8 +en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8 +en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8 +en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8 +en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8@latin +en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8 +en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8 +en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8 +en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8 +th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8 +en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8 +en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8 +en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8 +en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8 +en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8 +en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8 +en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8 +en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8 +en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8 +en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8 +en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8 +en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8 +en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8 +en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8 +zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8 +zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8 +zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8 +zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8 +en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8 diff --git a/test/data/symbols/compose b/test/data/symbols/compose new file mode 100644 index 0000000..08446bf --- /dev/null +++ b/test/data/symbols/compose @@ -0,0 +1,89 @@ +partial modifier_keys +xkb_symbols "ralt" { + key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lwin" { + key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lwin-altgr" { + key <LWIN> { type[Group1]="FOUR_LEVEL", [ Super_L, Super_L, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rwin" { + key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rwin-altgr" { + key <RWIN> { type[Group1]="FOUR_LEVEL", [ Super_R, Super_R, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "menu" { + key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "menu-altgr" { + key <MENU> { type[Group1]="FOUR_LEVEL", [ Menu, Menu, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rctrl" { + key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rctrl-altgr" { + key <RCTL> { type[Group1]="FOUR_LEVEL", [ Control_R, Control_R, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lctrl" { + key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lctrl-altgr" { + key <LCTL> { type[Group1]="FOUR_LEVEL", [ Control_L, Control_L, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "caps" { + key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "caps-altgr" { + key <CAPS> { type[Group1]="FOUR_LEVEL", [ Caps_Lock, Caps_Lock, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "102" { + key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "102-altgr" { + key <LSGT> { type[Group1]="FOUR_LEVEL", [ less, greater, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "paus" { + key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "prsc" { + key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "sclk" { + key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; diff --git a/test/data/sync.sh b/test/data/sync.sh index 10001bc..2cbcc0a 100755 --- a/test/data/sync.sh +++ b/test/data/sync.sh @@ -1,6 +1,8 @@ #/bin/sh +set -euo pipefail XKBCONFIGROOT='/usr/share/X11/xkb' +XLOCALEDIR='/usr/share/X11/locale' if [ ! -d test/data ]; then echo "Run this from the top source dir" @@ -67,3 +69,12 @@ for file in \ ; do cp "$XKBCONFIGROOT/$file" "test/data/$file" done + +for file in \ + compose.dir \ + locale.alias \ + locale.dir \ + en_US.UTF-8/Compose \ +; do + cp "$XLOCALEDIR/$file" "test/data/locale/$file" +done diff --git a/test/keysym.c b/test/keysym.c index bb2ec28..2c98c24 100644 --- a/test/keysym.c +++ b/test/keysym.c @@ -76,12 +76,13 @@ test_utf8(xkb_keysym_t keysym, const char *expected) if (ret <= 0) return ret; + assert(expected != NULL); + fprintf(stderr, "Expected keysym %#x -> %s (%u bytes)\n", keysym, expected, (unsigned) strlen(expected)); fprintf(stderr, "Received keysym %#x -> %s (%u bytes)\n\n", keysym, s, (unsigned) strlen(s)); - assert(expected != NULL); return streq(s, expected); } @@ -135,7 +136,18 @@ main(void) assert(test_string("XF86_Switch_VT_5", 0x1008FE05)); assert(test_string("VoidSymbol", 0xFFFFFF)); assert(test_string("U4567", 0x1004567)); + assert(test_string("U+4567", XKB_KEY_NoSymbol)); + assert(test_string("U+4567ffff", XKB_KEY_NoSymbol)); + assert(test_string("U+4567ffffff", XKB_KEY_NoSymbol)); + assert(test_string("U 4567", XKB_KEY_NoSymbol)); + assert(test_string("U +4567", XKB_KEY_NoSymbol)); assert(test_string("0x10203040", 0x10203040)); + assert(test_string("0x102030400", XKB_KEY_NoSymbol)); + assert(test_string("0x010203040", XKB_KEY_NoSymbol)); + assert(test_string("0x+10203040", XKB_KEY_NoSymbol)); + assert(test_string("0x 10203040", XKB_KEY_NoSymbol)); + assert(test_string("0x +10203040", XKB_KEY_NoSymbol)); + assert(test_string("0x-10203040", XKB_KEY_NoSymbol)); assert(test_string("a", 0x61)); assert(test_string("A", 0x41)); assert(test_string("ch", 0xfea0)); @@ -144,6 +156,10 @@ main(void) assert(test_string("THORN", 0x00de)); assert(test_string("Thorn", 0x00de)); assert(test_string("thorn", 0x00fe)); + /* Max keysym. */ + assert(test_string("0xffffffff", 0xffffffff)); + /* Outside range. */ + assert(test_string("0x100000000", XKB_KEY_NoSymbol)); assert(test_keysym(0x1008FF56, "XF86Close")); assert(test_keysym(0x0, "NoSymbol")); @@ -173,6 +189,9 @@ main(void) assert(test_casestring("Thorn", 0x00fe)); assert(test_casestring("thorn", 0x00fe)); + assert(test_string("", XKB_KEY_NoSymbol)); + assert(test_casestring("", XKB_KEY_NoSymbol)); + assert(test_utf8(XKB_KEY_y, "y")); assert(test_utf8(XKB_KEY_u, "u")); assert(test_utf8(XKB_KEY_m, "m")); diff --git a/test/registry.c b/test/registry.c index fab3b69..71a480f 100644 --- a/test/registry.c +++ b/test/registry.c @@ -56,6 +56,8 @@ struct test_layout { const char *variant; const char *brief; const char *description; + const char *iso639[3]; /* language list (iso639 three letter codes), 3 is enough for our test */ + const char *iso3166[3]; /* country list (iso3166 two letter codes), 3 is enough for our tests */ }; struct test_option { @@ -76,7 +78,9 @@ fprint_config_item(FILE *fp, const char *name, const char *vendor, const char *brief, - const char *description) + const char *description, + const char * const iso639[3], + const char * const iso3166[3]) { fprintf(fp, " <configItem>\n" " <name>%s</name>\n", name); @@ -86,6 +90,27 @@ fprint_config_item(FILE *fp, fprintf(fp, " <description>%s</description>\n", description); if (vendor) fprintf(fp, " <vendor>%s</vendor>\n", vendor); + if (iso3166 && iso3166[0]) { + fprintf(fp, " <countryList>\n"); + for (int i = 0; i < 3; i++) { + const char *iso = iso3166[i]; + if (!iso) + break; + fprintf(fp, " <iso3166Id>%s</iso3166Id>\n", iso); + } + fprintf(fp, " </countryList>\n"); + } + if (iso639 && iso639[0]) { + fprintf(fp, " <languageList>\n"); + for (int i = 0; i < 3; i++) { + const char *iso = iso639[i]; + if (!iso) + break; + fprintf(fp, " <iso639Id>%s</iso639Id>\n", iso); + } + fprintf(fp, " </languageList>\n"); + } + fprintf(fp, " </configItem>\n"); } @@ -131,7 +156,7 @@ test_create_rules(const char *ruleset, for (const struct test_model *m = test_models; m->name; m++) { fprintf(fp, "<model>\n"); - fprint_config_item(fp, m->name, m->vendor, NULL, m->description); + fprint_config_item(fp, m->name, m->vendor, NULL, m->description, NULL, NULL); fprintf(fp, "</model>\n"); } fprintf(fp, "</modelList>\n"); @@ -149,14 +174,13 @@ test_create_rules(const char *ruleset, while (l->name) { fprintf(fp, "<layout>\n"); - fprint_config_item(fp, l->name, NULL, l->brief, l->description); + fprint_config_item(fp, l->name, NULL, l->brief, l->description, l->iso639, l->iso3166); if (next->name && streq(next->name, l->name)) { fprintf(fp, "<variantList>\n"); do { fprintf(fp, "<variant>\n"); - fprint_config_item(fp, next->variant, NULL, next->brief, - next->description); + fprint_config_item(fp, next->variant, NULL, next->brief, next->description, next->iso639, next->iso3166); fprintf(fp, "</variant>\n"); l = next; next++; @@ -175,10 +199,10 @@ test_create_rules(const char *ruleset, for (const struct test_option_group *g = test_groups; g->name; g++) { fprintf(fp, "<group allowMultipleSelection=\"%s\">\n", g->allow_multiple_selection ? "true" : "false"); - fprint_config_item(fp, g->name, NULL, NULL, g->description); + fprint_config_item(fp, g->name, NULL, NULL, g->description, NULL, NULL); for (const struct test_option *o = g->options; o->name; o++) { fprintf(fp, " <option>\n"); - fprint_config_item(fp, o->name, NULL, NULL, o->description); + fprint_config_item(fp, o->name, NULL, NULL, o->description, NULL, NULL); fprintf(fp, "</option>\n"); } fprintf(fp, "</group>\n"); @@ -282,18 +306,21 @@ find_models(struct rxkb_context *ctx, ...) va_list args; const char *name; int idx = 0; + bool rc = false; va_start(args, ctx); name = va_arg(args, const char *); while(name) { assert(++idx < 20); /* safety guard */ if (!find_model(ctx, name)) - return false; + goto out; name = va_arg(args, const char *); }; + rc = true; +out: va_end(args); - return true; + return rc; } static struct rxkb_layout * @@ -326,6 +353,7 @@ find_layouts(struct rxkb_context *ctx, ...) va_list args; const char *name, *variant; int idx = 0; + bool rc = false; va_start(args, ctx); name = va_arg(args, const char *); @@ -333,14 +361,16 @@ find_layouts(struct rxkb_context *ctx, ...) while(name) { assert(++idx < 20); /* safety guard */ if (!find_layout(ctx, name, variant)) - return false; + goto out; name = va_arg(args, const char *); if (name) variant = va_arg(args, const char *); }; + rc = true; +out: va_end(args); - return true; + return rc; } static struct rxkb_option_group * @@ -396,6 +426,7 @@ find_options(struct rxkb_context *ctx, ...) va_list args; const char *grp, *opt; int idx = 0; + bool rc = false; va_start(args, ctx); grp = va_arg(args, const char *); @@ -403,14 +434,16 @@ find_options(struct rxkb_context *ctx, ...) while(grp) { assert(++idx < 20); /* safety guard */ if (!find_option(ctx, grp, opt)) - return false; + goto out; grp = va_arg(args, const char *); if (grp) opt = va_arg(args, const char *); }; + rc = true; +out: va_end(args); - return true; + return rc; } static bool @@ -434,6 +467,9 @@ cmp_models(struct test_model *tm, struct rxkb_model *m) static bool cmp_layouts(struct test_layout *tl, struct rxkb_layout *l) { + struct rxkb_iso3166_code *iso3166 = NULL; + struct rxkb_iso639_code *iso639 = NULL; + if (!tl || !l) return false; @@ -449,6 +485,36 @@ cmp_layouts(struct test_layout *tl, struct rxkb_layout *l) if (!streq_null(tl->description, rxkb_layout_get_description(l))) return false; + iso3166 = rxkb_layout_get_iso3166_first(l); + for (size_t i = 0; i < sizeof(tl->iso3166); i++) { + const char *iso = tl->iso3166[i]; + if (iso == NULL && iso3166 == NULL) + break; + + if (!streq_null(iso, rxkb_iso3166_code_get_code(iso3166))) + return false; + + iso3166 = rxkb_iso3166_code_next(iso3166); + } + + if (iso3166 != NULL) + return false; + + iso639 = rxkb_layout_get_iso639_first(l); + for (size_t i = 0; i < sizeof(tl->iso639); i++) { + const char *iso = tl->iso639[i]; + if (iso == NULL && iso639 == NULL) + break; + + if (!streq_null(iso, rxkb_iso639_code_get_code(iso639))) + return false; + + iso639 = rxkb_iso639_code_next(iso639); + } + + if (iso639 != NULL) + return false; + return true; } @@ -554,6 +620,7 @@ test_load_full(void) struct test_layout system_layouts[] = { {"l1", NO_VARIANT, "lbrief1", "ldesc1"}, {"l1", "v1", "vbrief1", "vdesc1"}, + {"l1", "v2", NULL, "vdesc2"}, {NULL}, }; struct test_option_group system_groups[] = { @@ -588,6 +655,11 @@ test_load_full(void) assert(cmp_layouts(&system_layouts[1], l)); rxkb_layout_unref(l); + l = fetch_layout(ctx, "l1", "v2"); + struct test_layout expected = {"l1", "v2", "lbrief1", "vdesc2"}; + assert(cmp_layouts(&expected, l)); + rxkb_layout_unref(l); + g = fetch_option_group(ctx, "grp1"); assert(cmp_option_groups(&system_groups[0], g, CMP_EXACT)); rxkb_option_group_unref(g); @@ -600,6 +672,107 @@ test_load_full(void) } static void +test_load_languages(void) +{ + struct test_model system_models[] = { + {"m1", "vendor1", "desc1"}, + {NULL}, + }; + struct test_layout system_layouts[] = { + {"l1", NO_VARIANT, "lbrief1", "ldesc1", + .iso639 = { "abc", "def" }, + .iso3166 = { "uv", "wx" }}, + {"l1", "v1", "vbrief1", "vdesc1", + .iso639 = {"efg"}, + .iso3166 = {"yz"}}, + {"l2", NO_VARIANT, "lbrief1", "ldesc1", + .iso639 = { "hij", "klm" }, + .iso3166 = { "op", "qr" }}, + {"l2", "v2", "lbrief1", "ldesc1", + .iso639 = { NULL }, /* inherit from parent */ + .iso3166 = { NULL }}, /* inherit from parent */ + {NULL}, + }; + struct test_option_group system_groups[] = { + {"grp1", "gdesc1", true, + { {"grp1:1", "odesc11"}, {"grp1:2", "odesc12"} } }, + { NULL }, + }; + struct rxkb_context *ctx; + struct rxkb_layout *l; + struct rxkb_iso3166_code *iso3166; + struct rxkb_iso639_code *iso639; + + ctx = test_setup_context(system_models, NULL, + system_layouts, NULL, + system_groups, NULL); + + l = fetch_layout(ctx, "l1", NO_VARIANT); + assert(cmp_layouts(&system_layouts[0], l)); + rxkb_layout_unref(l); + + l = fetch_layout(ctx, "l1", "v1"); + assert(cmp_layouts(&system_layouts[1], l)); + rxkb_layout_unref(l); + + l = fetch_layout(ctx, "l2", "v2"); + iso3166 = rxkb_layout_get_iso3166_first(l); + assert(streq(rxkb_iso3166_code_get_code(iso3166), "op")); + iso3166 = rxkb_iso3166_code_next(iso3166); + assert(streq(rxkb_iso3166_code_get_code(iso3166), "qr")); + + iso639 = rxkb_layout_get_iso639_first(l); + assert(streq(rxkb_iso639_code_get_code(iso639), "hij")); + iso639 = rxkb_iso639_code_next(iso639); + assert(streq(rxkb_iso639_code_get_code(iso639), "klm")); + + rxkb_layout_unref(l); + rxkb_context_unref(ctx); +} + +static void +test_load_invalid_languages(void) +{ + struct test_model system_models[] = { + {"m1", "vendor1", "desc1"}, + {NULL}, + }; + struct test_layout system_layouts[] = { + {"l1", NO_VARIANT, "lbrief1", "ldesc1", + .iso639 = { "ab", "def" }, + .iso3166 = { "uvw", "xz" }}, + {NULL}, + }; + struct test_option_group system_groups[] = { + {"grp1", "gdesc1", true, + { {"grp1:1", "odesc11"}, {"grp1:2", "odesc12"} } }, + { NULL }, + }; + struct rxkb_context *ctx; + struct rxkb_layout *l; + struct rxkb_iso3166_code *iso3166; + struct rxkb_iso639_code *iso639; + + ctx = test_setup_context(system_models, NULL, + system_layouts, NULL, + system_groups, NULL); + + l = fetch_layout(ctx, "l1", NO_VARIANT); + /* uvw is invalid, we expect 2 letters, verify it was ignored */ + iso3166 = rxkb_layout_get_iso3166_first(l); + assert(streq(rxkb_iso3166_code_get_code(iso3166), "xz")); + assert(rxkb_iso3166_code_next(iso3166) == NULL); + + /* ab is invalid, we expect 3 letters, verify it was ignored */ + iso639 = rxkb_layout_get_iso639_first(l); + assert(streq(rxkb_iso639_code_get_code(iso639), "def")); + assert(rxkb_iso639_code_next(iso639) == NULL); + rxkb_layout_unref(l); + + rxkb_context_unref(ctx); +} + +static void test_popularity(void) { struct test_layout system_layouts[] = { @@ -840,6 +1013,8 @@ main(void) test_load_full(); test_load_merge(); test_load_merge_no_overwrite(); + test_load_languages(); + test_load_invalid_languages(); test_popularity(); return 0; diff --git a/test/test-keysym.py b/test/test-keysym.py new file mode 100755 index 0000000..d237f31 --- /dev/null +++ b/test/test-keysym.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# +# This script creates a custom layout, overriding the TDLE key with the first +# argument given. + +import argparse +import tempfile +from pathlib import Path +import subprocess +import os +import re +import sys + +# Template to force our key to TLDE +template = """ +default +xkb_symbols "basic" {{ + include "us(basic)" + replace key <TLDE> {{ [ {} ] }}; +}}; +""" + +parser = argparse.ArgumentParser( + description='Tool to verify whether a keysym is resolved' +) +parser.add_argument('keysym', type=str, help='XKB keysym') +parser.add_argument('--tool', type=str, nargs=1, + default=['xkbcli', 'compile-keymap'], + help='Full path to the xkbcli-compile-keymap tool') +args = parser.parse_args() + +with tempfile.TemporaryDirectory() as tmpdir: + symfile = Path(tmpdir) / "symbols" / "keytest" + symfile.parent.mkdir() + with symfile.open(mode='w') as f: + f.write(template.format(args.keysym)) + + try: + cmd = [ + *args.tool, + '--layout', 'keytest', + ] + + env = os.environ.copy() + env['XKB_CONFIG_EXTRA_PATH'] = tmpdir + + result = subprocess.run(cmd, env=env, capture_output=True, + universal_newlines=True) + if result.returncode != 0: + print('ERROR: Failed to compile:') + print(result.stderr) + sys.exit(1) + + # grep for TLDE actually being remapped + for l in result.stdout.split('\n'): + match = re.match(r'\s+key \<TLDE\>\s+{\s+\[\s+(?P<keysym>\w+)\s+\]\s+}', l) + if match: + if args.keysym == match.group('keysym'): + sys.exit(0) + elif match.group('keysym') == 'NoSymbol': + print('ERROR: key {} not resolved:'.format(args.keysym), l) + else: + print('ERROR: key {} mapped to wrong key:'.format(args.keysym), l) + sys.exit(1) + + print(result.stdout) + print('ERROR: above keymap is missing key mapping for {}'.format(args.keysym)) + sys.exit(1) + except FileNotFoundError as err: + print('ERROR: invalid or missing tool: {}'.format(err)) + sys.exit(1) diff --git a/test/tool-option-parsing.py b/test/tool-option-parsing.py index a2072b3..6692d58 100755 --- a/test/tool-option-parsing.py +++ b/test/tool-option-parsing.py @@ -31,8 +31,19 @@ import tempfile import unittest -top_builddir = os.environ['top_builddir'] -top_srcdir = os.environ['top_srcdir'] +try: + top_builddir = os.environ['top_builddir'] + top_srcdir = os.environ['top_srcdir'] +except KeyError: + print('Required environment variables not found: top_srcdir/top_builddir', file=sys.stderr) + from pathlib import Path + top_srcdir = '.' + try: + top_builddir = next(Path('.').glob('**/meson-logs/')).parent + except StopIteration: + sys.exit(1) + print('Using srcdir "{}", builddir "{}"'.format(top_srcdir, top_builddir), file=sys.stderr) + logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('test') @@ -65,10 +76,11 @@ class XkbcliTool: xkbcli_tool = 'xkbcli' subtool = None - def __init__(self, subtool=None, skipIf=()): + def __init__(self, subtool=None, skipIf=(), skipError=()): self.tool_path = top_builddir self.subtool = subtool self.skipIf = skipIf + self.skipError = skipError def run_command(self, args): for condition, reason in self.skipIf: @@ -84,7 +96,11 @@ class XkbcliTool: def run_command_success(self, args): rc, stdout, stderr = self.run_command(args) - assert rc == 0, (stdout, stderr) + if rc != 0: + for testfunc, reason in self.skipError: + if testfunc(rc, stdout, stderr): + raise unittest.SkipTest(reason) + assert rc == 0, (rc, stdout, stderr) return stdout, stderr def run_command_invalid(self, args): @@ -121,7 +137,11 @@ class TestXkbcli(unittest.TestCase): (not int(os.getenv('HAVE_XKBCLI_INTERACTIVE_EVDEV', '1')), 'evdev not enabled'), (not os.path.exists('/dev/input/event0'), 'event node required'), (not os.access('/dev/input/event0', os.R_OK), 'insufficient permissions'), - )) + ), skipError=( + (lambda rc, stdout, stderr: 'Couldn\'t find any keyboards' in stderr, + 'No keyboards available'), + ), + ) cls.xkbcli_interactive_x11 = XkbcliTool('interactive-x11', skipIf=( (not int(os.getenv('HAVE_XKBCLI_INTERACTIVE_X11', '1')), 'x11 not enabled'), (not os.getenv('DISPLAY'), 'DISPLAY not set'), @@ -250,7 +270,7 @@ class TestXkbcli(unittest.TestCase): def test_interactive_evdev_rmlvo(self): for rmlvo in rmlvos: with self.subTest(rmlvo=rmlvo): - self.xkbcli_interactive_evdev.run_command_success(rmlvos) + self.xkbcli_interactive_evdev.run_command_success(rmlvo) def test_interactive_evdev(self): # Note: --enable-compose fails if $prefix doesn't have the compose tables @@ -278,6 +298,10 @@ if __name__ == '__main__': with tempfile.TemporaryDirectory() as tmpdir: # Use our own test xkeyboard-config copy. os.environ['XKB_CONFIG_ROOT'] = top_srcdir + '/test/data' + # Use our own X11 locale copy. + os.environ['XLOCALEDIR'] = top_srcdir + '/test/data/locale' + # Use our own locale. + os.environ['LC_CTYPE'] = 'en_US.UTF-8' # libxkbcommon has fallbacks when XDG_CONFIG_HOME isn't set so we need # to override it with a known (empty) directory. Otherwise our test # behavior depends on the system the test is run on. diff --git a/test/xkeyboard-config-test.py.in b/test/xkeyboard-config-test.py.in index 001f1b6..66deca4 100755 --- a/test/xkeyboard-config-test.py.in +++ b/test/xkeyboard-config-test.py.in @@ -1,14 +1,14 @@ #!/usr/bin/env python3 import argparse +import multiprocessing import sys import subprocess import os -import io import xml.etree.ElementTree as ET -from multiprocessing import Pool +from pathlib import Path -verbose = True +verbose = False DEFAULT_RULES_XML = '@XKB_CONFIG_ROOT@/rules/evdev.xml' @@ -17,29 +17,103 @@ EXTRA_PATH = '@MESON_BUILD_ROOT@' os.environ['PATH'] = ':'.join([EXTRA_PATH, os.getenv('PATH')]) -def noop_progress_bar(x, total): - return x +def escape(s): + return s.replace('"', '\\"') # The function generating the progress bar (if any). -progress_bar = noop_progress_bar -if os.isatty(sys.stdout.fileno()): - try: - from tqdm import tqdm - progress_bar = tqdm +def create_progress_bar(verbose): + def noop_progress_bar(x, total, file=None): + return x - verbose = False - except ImportError: - pass + progress_bar = noop_progress_bar + if not verbose and os.isatty(sys.stdout.fileno()): + try: + from tqdm import tqdm + progress_bar = tqdm + except ImportError: + pass + + return progress_bar + + +class Invocation: + def __init__(self, r, m, l, v, o): + self.command = "" + self.rules = r + self.model = m + self.layout = l + self.variant = v + self.option = o + self.exitstatus = 77 # default to skipped + self.error = None + self.keymap = None # The fully compiled keymap + + @property + def rmlvo(self): + return self.rules, self.model, self.layout, self.variant, self.option + + def __str__(self): + s = [] + rmlvo = [x or "" for x in self.rmlvo] + rmlvo = ', '.join([f'"{x}"' for x in rmlvo]) + s.append(f'- rmlvo: [{rmlvo}]') + s.append(f' cmd: "{escape(self.command)}"') + s.append(f' status: {self.exitstatus}') + if self.error: + s.append(f' error: "{escape(self.error.strip())}"') + return '\n'.join(s) + + def run(self): + raise NotImplementedError + + +class XkbCompInvocation(Invocation): + def run(self): + r, m, l, v, o = self.rmlvo + args = ['setxkbmap', '-print'] + if r is not None: + args.append('-rules') + args.append('{}'.format(r)) + if m is not None: + args.append('-model') + args.append('{}'.format(m)) + if l is not None: + args.append('-layout') + args.append('{}'.format(l)) + if v is not None: + args.append('-variant') + args.append('{}'.format(v)) + if o is not None: + args.append('-option') + args.append('{}'.format(o)) + xkbcomp_args = ['xkbcomp', '-xkb', '-', '-'] -def xkbcommontool(rmlvo): - try: - r = rmlvo.get('r', 'evdev') - m = rmlvo.get('m', 'pc105') - l = rmlvo.get('l', 'us') - v = rmlvo.get('v', None) - o = rmlvo.get('o', None) + self.command = " ".join(args + ["|"] + xkbcomp_args) + + setxkbmap = subprocess.Popen(args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, universal_newlines=True) + stdout, stderr = setxkbmap.communicate() + if "Cannot open display" in stderr: + self.error = stderr + self.exitstatus = 90 + else: + xkbcomp = subprocess.Popen(xkbcomp_args, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + universal_newlines=True) + stdout, stderr = xkbcomp.communicate(stdout) + if xkbcomp.returncode != 0: + self.error = "failed to compile keymap" + self.exitstatus = xkbcomp.returncode + else: + self.keymap = stdout + self.exitstatus = 0 + + +class XkbcommonInvocation(Invocation): + def run(self): + r, m, l, v, o = self.rmlvo args = [ 'xkbcli-compile-keymap', # this is run in the builddir '--verbose', @@ -52,28 +126,33 @@ def xkbcommontool(rmlvo): if o is not None: args += ['--options', o] - success = True - out = io.StringIO() - if verbose: - print(':: {}'.format(' '.join(args)), file=out) - + self.command = " ".join(args) try: output = subprocess.check_output(args, stderr=subprocess.STDOUT, universal_newlines=True) - if verbose: - print(output, file=out) - if "unrecognized keysym" in output: for line in output.split('\n'): if "unrecognized keysym" in line: - print('ERROR: {}'.format(line)) - success = False + self.error = line + self.exitstatus = 99 # tool doesn't generate this one + else: + self.exitstatus = 0 + self.keymap = output except subprocess.CalledProcessError as err: - print('ERROR: Failed to compile: {}'.format(' '.join(args)), file=out) - print(err.output, file=out) - success = False + self.error = "failed to compile keymap" + self.exitstatus = err.returncode - return success, out.getvalue() + +def xkbcommontool(rmlvo): + try: + r = rmlvo.get('r', 'evdev') + m = rmlvo.get('m', 'pc105') + l = rmlvo.get('l', 'us') + v = rmlvo.get('v', None) + o = rmlvo.get('o', None) + tool = XkbcommonInvocation(r, m, l, v, o) + tool.run() + return tool except KeyboardInterrupt: pass @@ -85,51 +164,9 @@ def xkbcomp(rmlvo): l = rmlvo.get('l', 'us') v = rmlvo.get('v', None) o = rmlvo.get('o', None) - args = ['setxkbmap', '-print'] - if r is not None: - args.append('-rules') - args.append('{}'.format(r)) - if m is not None: - args.append('-model') - args.append('{}'.format(m)) - if l is not None: - args.append('-layout') - args.append('{}'.format(l)) - if v is not None: - args.append('-variant') - args.append('{}'.format(v)) - if o is not None: - args.append('-option') - args.append('{}'.format(o)) - - success = True - out = io.StringIO() - if verbose: - print(':: {}'.format(' '.join(args)), file=out) - - try: - xkbcomp_args = ['xkbcomp', '-xkb', '-', '-'] - - setxkbmap = subprocess.Popen(args, stdout=subprocess.PIPE) - xkbcomp = subprocess.Popen(xkbcomp_args, stdin=setxkbmap.stdout, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - universal_newlines=True) - setxkbmap.stdout.close() - stdout, stderr = xkbcomp.communicate() - if xkbcomp.returncode != 0: - print('ERROR: Failed to compile: {}'.format(' '.join(args)), file=out) - success = False - if xkbcomp.returncode != 0 or verbose: - print(stdout, file=out) - print(stderr, file=out) - - # This catches setxkbmap errors. - except subprocess.CalledProcessError as err: - print('ERROR: Failed to compile: {}'.format(' '.join(args)), file=out) - print(err.output, file=out) - success = False - - return success, out.getvalue() + tool = XkbCompInvocation(r, m, l, v, o) + tool.run() + return tool except KeyboardInterrupt: pass @@ -159,26 +196,68 @@ def parse(path): return combos -def run(combos, tool, njobs): +def run(combos, tool, njobs, keymap_output_dir): + if keymap_output_dir: + keymap_output_dir = Path(keymap_output_dir) + try: + keymap_output_dir.mkdir() + except FileExistsError as e: + print(e, file=sys.stderr) + return False + + keymap_file = None + keymap_file_fd = None + failed = False - with Pool(njobs) as p: + with multiprocessing.Pool(njobs) as p: results = p.imap_unordered(tool, combos) - for success, output in progress_bar(results, total=len(combos)): - if not success: + for invocation in progress_bar(results, total=len(combos), file=sys.stdout): + if invocation.exitstatus != 0: failed = True - if output: - print(output, file=sys.stdout if success else sys.stderr) + target = sys.stderr + else: + target = sys.stdout if verbose else None + + if target: + print(invocation, file=target) + + if keymap_output_dir: + # we're running through the layouts in a somewhat sorted manner, + # so let's keep the fd open until we switch layouts + layout = invocation.layout + if invocation.variant: + layout += f"({invocation.variant})" + fname = keymap_output_dir / layout + if fname != keymap_file: + keymap_file = fname + if keymap_file_fd: + keymap_file_fd.close() + keymap_file_fd = open(keymap_file, 'a') + + rmlvo = ', '.join([x or '' for x in invocation.rmlvo]) + print(f"// {rmlvo}", file=keymap_file_fd) + print(invocation.keymap, file=keymap_file_fd) + keymap_file_fd.flush() + return failed def main(args): + global progress_bar + global verbose + tools = { 'libxkbcommon': xkbcommontool, 'xkbcomp': xkbcomp, } parser = argparse.ArgumentParser( - description='Tool to test all layout/variant/option combinations.' + description=''' + This tool compiles a keymap for each layout, variant and + options combination in the given rules XML file. The output + of this tool is YAML, use your favorite YAML parser to + extract error messages. Errors are printed to stderr. + ''' ) parser.add_argument('path', metavar='/path/to/evdev.xml', nargs='?', type=str, @@ -190,12 +269,33 @@ def main(args): parser.add_argument('--jobs', '-j', type=int, default=os.cpu_count() * 4, help='number of processes to use') + parser.add_argument('--verbose', '-v', default=False, action="store_true") + parser.add_argument('--keymap-output-dir', default=None, type=str, + help='Directory to print compiled keymaps to') + parser.add_argument('--layout', default=None, type=str, + help='Only test the given layout') + parser.add_argument('--variant', default=None, type=str, + help='Only test the given variant') + parser.add_argument('--option', default=None, type=str, + help='Only test the given option') + args = parser.parse_args() + verbose = args.verbose + keymapdir = args.keymap_output_dir + progress_bar = create_progress_bar(verbose) + tool = tools[args.tool] - combos = parse(args.path) - failed = run(combos, tool, args.jobs) + if any([args.layout, args.variant, args.option]): + combos = [{ + 'l': args.layout, + 'v': args.variant, + 'o': args.option, + }] + else: + combos = parse(args.path) + failed = run(combos, tool, args.jobs, keymapdir) sys.exit(failed) @@ -203,4 +303,4 @@ if __name__ == '__main__': try: main(sys.argv) except KeyboardInterrupt: - print('Exiting after Ctrl+C') + print('# Exiting after Ctrl+C') diff --git a/tools/compose.c b/tools/compose.c new file mode 100644 index 0000000..2b3ba64 --- /dev/null +++ b/tools/compose.c @@ -0,0 +1,126 @@ +/* + * Copyright © 2021 Ran Benita <ran@unusedvar.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#include <getopt.h> +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> + +#include "xkbcommon/xkbcommon.h" +#include "xkbcommon/xkbcommon-compose.h" + +static void +usage(FILE *fp, char *progname) +{ + fprintf(fp, + "Usage: %s [--locale LOCALE | --locale-from-env | --locale-from-setlocale]\n", + progname); + fprintf(fp, + " --locale - specify the locale directly\n" + " --locale-from-env - get the locale from the LC_ALL/LC_CTYPE/LANG environment variables (falling back to C)\n" + " --locale-from-setlocale - get the locale using setlocale(3)\n" + ); +} + +int +main(int argc, char *argv[]) +{ + int ret = EXIT_FAILURE; + struct xkb_context *ctx = NULL; + struct xkb_compose_table *compose_table = NULL; + const char *locale = NULL; + enum options { + OPT_LOCALE, + OPT_LOCALE_FROM_ENV, + OPT_LOCALE_FROM_SETLOCALE, + }; + static struct option opts[] = { + {"locale", required_argument, 0, OPT_LOCALE}, + {"locale-from-env", no_argument, 0, OPT_LOCALE_FROM_ENV}, + {"locale-from-setlocale", no_argument, 0, OPT_LOCALE_FROM_SETLOCALE}, + {0, 0, 0, 0}, + }; + + setlocale(LC_ALL, ""); + + while (1) { + int opt; + int option_index = 0; + + opt = getopt_long(argc, argv, "h", opts, &option_index); + if (opt == -1) + break; + + switch (opt) { + case OPT_LOCALE: + locale = optarg; + break; + case OPT_LOCALE_FROM_ENV: + locale = getenv("LC_ALL"); + if (!locale) + locale = getenv("LC_CTYPE"); + if (!locale) + locale = getenv("LANG"); + if (!locale) + locale = "C"; + break; + case OPT_LOCALE_FROM_SETLOCALE: + locale = setlocale(LC_CTYPE, NULL); + break; + case 'h': + usage(stdout, argv[0]); + return EXIT_SUCCESS; + case '?': + usage(stderr, argv[0]); + return EXIT_INVALID_USAGE; + } + } + if (locale == NULL) { + usage(stderr, argv[0]); + return EXIT_INVALID_USAGE; + } + + ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS); + if (!ctx) { + fprintf(stderr, "Couldn't create xkb context\n"); + goto out; + } + + compose_table = + xkb_compose_table_new_from_locale(ctx, locale, + XKB_COMPOSE_COMPILE_NO_FLAGS); + if (!compose_table) { + fprintf(stderr, "Couldn't create compose from locale\n"); + goto out; + } + + printf("Compiled successfully from locale %s\n", locale); + +out: + xkb_compose_table_unref(compose_table); + xkb_context_unref(ctx); + + return ret; +} diff --git a/tools/how-to-type.c b/tools/how-to-type.c index 0a6f79e..91ebd00 100644 --- a/tools/how-to-type.c +++ b/tools/how-to-type.c @@ -24,6 +24,7 @@ #include "config.h" #include <getopt.h> +#include <stdbool.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> @@ -35,9 +36,9 @@ static void usage(const char *argv0, FILE *fp) { - fprintf(fp, "Usage: %s [--rules <rules>] [--model <model>] " + fprintf(fp, "Usage: %s [--keysym] [--rules <rules>] [--model <model>] " "[--layout <layout>] [--variant <variant>] [--options <options>]" - " <unicode codepoint>\n", argv0); + " <unicode codepoint/keysym>\n", argv0); } int @@ -48,6 +49,7 @@ main(int argc, char *argv[]) const char *layout_ = NULL; const char *variant = NULL; const char *options = NULL; + bool keysym_mode = false; int err = EXIT_FAILURE; struct xkb_context *ctx = NULL; char *endp; @@ -60,6 +62,7 @@ main(int argc, char *argv[]) xkb_keycode_t min_keycode, max_keycode; xkb_mod_index_t num_mods; enum options { + OPT_KEYSYM, OPT_RULES, OPT_MODEL, OPT_LAYOUT, @@ -68,6 +71,7 @@ main(int argc, char *argv[]) }; static struct option opts[] = { {"help", no_argument, 0, 'h'}, + {"keysym", no_argument, 0, OPT_KEYSYM}, {"rules", required_argument, 0, OPT_RULES}, {"model", required_argument, 0, OPT_MODEL}, {"layout", required_argument, 0, OPT_LAYOUT}, @@ -85,6 +89,9 @@ main(int argc, char *argv[]) break; switch (opt) { + case OPT_KEYSYM: + keysym_mode = true; + break; case OPT_RULES: rules = optarg; break; @@ -113,18 +120,26 @@ main(int argc, char *argv[]) exit(EXIT_INVALID_USAGE); } - errno = 0; - val = strtol(argv[optind], &endp, 0); - if (errno != 0 || endp == argv[optind] || val < 0 || val > 0x10FFFF) { - usage(argv[0], stderr); - exit(EXIT_INVALID_USAGE); - } - codepoint = (uint32_t) val; + if (keysym_mode) { + keysym = xkb_keysym_from_name(argv[optind], XKB_KEYSYM_NO_FLAGS); + if (keysym == XKB_KEY_NoSymbol) { + fprintf(stderr, "Failed to convert argument to keysym\n"); + goto err; + } + } else { + errno = 0; + val = strtol(argv[optind], &endp, 0); + if (errno != 0 || endp == argv[optind] || val < 0 || val > 0x10FFFF) { + usage(argv[0], stderr); + exit(EXIT_INVALID_USAGE); + } + codepoint = (uint32_t) val; - keysym = xkb_utf32_to_keysym(codepoint); - if (keysym == XKB_KEY_NoSymbol) { - fprintf(stderr, "Failed to convert codepoint to keysym\n"); - goto err; + keysym = xkb_utf32_to_keysym(codepoint); + if (keysym == XKB_KEY_NoSymbol) { + fprintf(stderr, "Failed to convert codepoint to keysym\n"); + goto err; + } } ret = xkb_keysym_get_name(keysym, name, sizeof(name)); diff --git a/tools/interactive-evdev.c b/tools/interactive-evdev.c index 9c8c94e..8b0bce0 100644 --- a/tools/interactive-evdev.c +++ b/tools/interactive-evdev.c @@ -31,6 +31,7 @@ #include <getopt.h> #include <limits.h> #include <locale.h> +#include <poll.h> #include <signal.h> #include <stdbool.h> #include <stdio.h> @@ -38,7 +39,6 @@ #include <string.h> #include <unistd.h> -#include <sys/epoll.h> #include <linux/input.h> #include "xkbcommon/xkbcommon.h" @@ -313,33 +313,25 @@ read_keyboard(struct keyboard *kbd) static int loop(struct keyboard *kbds) { - int i, ret = 1; - int epfd = -1; + int ret = -1; struct keyboard *kbd; - struct epoll_event ev; - struct epoll_event evs[16]; + nfds_t nfds, i; + struct pollfd *fds = NULL; - epfd = epoll_create1(0); - if (epfd < 0) { - fprintf(stderr, "Couldn't create epoll instance: %s\n", - strerror(errno)); + for (kbd = kbds, nfds = 0; kbd; kbd = kbd->next, nfds++) {} + fds = calloc(nfds, sizeof(*fds)); + if (fds == NULL) { + fprintf(stderr, "Out of memory"); goto out; } - for (kbd = kbds; kbd; kbd = kbd->next) { - memset(&ev, 0, sizeof(ev)); - ev.events = EPOLLIN; - ev.data.ptr = kbd; - ret = epoll_ctl(epfd, EPOLL_CTL_ADD, kbd->fd, &ev); - if (ret) { - fprintf(stderr, "Couldn't add %s to epoll: %s\n", - kbd->path, strerror(errno)); - goto out; - } + for (i = 0, kbd = kbds; kbd; kbd = kbd->next, i++) { + fds[i].fd = kbd->fd; + fds[i].events = POLLIN; } while (!terminate) { - ret = epoll_wait(epfd, evs, 16, -1); + ret = poll(fds, nfds, -1); if (ret < 0) { if (errno == EINTR) continue; @@ -348,18 +340,19 @@ loop(struct keyboard *kbds) goto out; } - for (i = 0; i < ret; i++) { - kbd = evs[i].data.ptr; - ret = read_keyboard(kbd); - if (ret) { - goto out; + for (i = 0, kbd = kbds; kbd; kbd = kbd->next, i++) { + if (fds[i].revents != 0) { + ret = read_keyboard(kbd); + if (ret) { + goto out; + } } } } ret = 0; out: - close(epfd); + free(fds); return ret; } diff --git a/tools/interactive-wayland.c b/tools/interactive-wayland.c index 3ac7ad7..d23432d 100644 --- a/tools/interactive-wayland.c +++ b/tools/interactive-wayland.c @@ -130,6 +130,27 @@ create_tmpfile_cloexec(char *tmpname) } #endif +static int +os_resize_anonymous_file(int fd, off_t size) +{ + int ret; +#ifdef HAVE_POSIX_FALLOCATE + ret = posix_fallocate(fd, 0, size); + if (ret == 0) + return 0; + /* + * Filesystems that do support fallocate will return EINVAL + * or EOPNOTSUPP, fallback to ftruncate() then. + */ + if (ret != EINVAL && ret != EOPNOTSUPP) + return ret; +#endif + ret = ftruncate(fd, size); + if (ret != 0) + return errno; + return 0; +} + /* * Create a new, unique, anonymous file of the given size, and * return the file descriptor for it. The file descriptor is set @@ -148,8 +169,8 @@ create_tmpfile_cloexec(char *tmpname) * If the C library implements posix_fallocate(), it is used to * guarantee that disk space is available for the file at the * given size. If disk space is insufficent, errno is set to ENOSPC. - * If posix_fallocate() is not supported, program may receive - * SIGBUS on accessing mmap()'ed file contents instead. + * If posix_fallocate() is not supported, program will fallback + * to ftruncate() instead. */ static int os_create_anonymous_file(off_t size) @@ -180,20 +201,12 @@ os_create_anonymous_file(off_t size) if (fd < 0) return -1; -#ifdef HAVE_POSIX_FALLOCATE - ret = posix_fallocate(fd, 0, size); + ret = os_resize_anonymous_file(fd, size); if (ret != 0) { close(fd); errno = ret; return -1; } -#else - ret = ftruncate(fd, size); - if (ret < 0) { - close(fd); - return -1; - } -#endif return fd; } diff --git a/tools/interactive-x11.c b/tools/interactive-x11.c index c7ca9aa..eea22fa 100644 --- a/tools/interactive-x11.c +++ b/tools/interactive-x11.c @@ -246,7 +246,7 @@ process_event(xcb_generic_event_t *gevent, struct keyboard *kbd) XKB_CONSUMED_MODE_XKB); /* Exit on ESC. */ - if (keycode == 9) + if (xkb_state_key_get_one_sym(kbd->state, keycode) == XKB_KEY_Escape) terminate = true; break; } diff --git a/tools/registry-list.c b/tools/registry-list.c index 0dc71d1..c360da7 100644 --- a/tools/registry-list.c +++ b/tools/registry-list.c @@ -136,19 +136,22 @@ main(int argc, char **argv) goto err; } - printf("Models:\n"); + printf("models:\n"); m = rxkb_model_first(ctx); assert(m); /* Empty model list is usually a bug or a bad xml file */ while (m) { - printf("- %s:%s:%s\n", + const char *vendor = rxkb_model_get_vendor(m); + printf("- name: %s\n" + " vendor: %s\n" + " description: %s\n", rxkb_model_get_name(m), - rxkb_model_get_vendor(m), + vendor ? vendor : "''", rxkb_model_get_description(m)); m = rxkb_model_next(m); } printf("\n"); - printf("Layouts:\n"); + printf("layouts:\n"); l = rxkb_layout_first(ctx); assert(l); /* Empty layout list is usually a bug or a bad xml file */ while (l) { @@ -156,56 +159,63 @@ main(int argc, char **argv) struct rxkb_iso3166_code *iso3166; const char *variant = rxkb_layout_get_variant(l); const char *brief = rxkb_layout_get_brief(l); - bool first; - printf("- %s%s%s%s:%s:%s", + printf("- layout: '%s'\n" + " variant: '%s'\n" + " brief: '%s'\n" + " description: %s\n", rxkb_layout_get_name(l), - variant ? "(" : "", variant ? variant : "", - variant ? ")" : "", - brief ? brief : "", + brief ? brief : "''", rxkb_layout_get_description(l)); + printf(" iso639: ["); iso639 = rxkb_layout_get_iso639_first(l); - if (iso639) - printf(":iso639-"); - first = true; - while (iso639) { - printf("%s%s", first ? "" : ",", rxkb_iso639_code_get_code(iso639)); - iso639 = rxkb_iso639_code_next(iso639); - first = false; + if (iso639) { + const char *sep = ""; + while (iso639) { + printf("%s'%s'", sep, rxkb_iso639_code_get_code(iso639)); + iso639 = rxkb_iso639_code_next(iso639); + sep = ", "; + } } + printf("]\n"); + printf(" iso3166: ["); iso3166 = rxkb_layout_get_iso3166_first(l); - if (iso3166) - printf(":iso3166-"); - first = true; - while (iso3166) { - printf("%s%s", first ? "" : ",", rxkb_iso3166_code_get_code(iso3166)); - iso3166 = rxkb_iso3166_code_next(iso3166); - first = false; + if (iso3166) { + const char *sep = ""; + while (iso3166) { + printf("%s'%s'", sep, rxkb_iso3166_code_get_code(iso3166)); + iso3166 = rxkb_iso3166_code_next(iso3166); + sep = ", "; + } } - - printf("\n"); + printf("]\n"); l = rxkb_layout_next(l); } printf("\n"); - printf("Options:\n"); + printf("option_groups:\n"); g = rxkb_option_group_first(ctx); assert(g); /* Empty option goups list is usually a bug or a bad xml file */ while (g) { struct rxkb_option *o; - printf("- %s:%s (%s)\n", + printf("- name: '%s'\n" + " description: %s\n" + " allows_multiple: %s\n" + " options:\n", rxkb_option_group_get_name(g), rxkb_option_group_get_description(g), - rxkb_option_group_allows_multiple(g) ? "multiple" : "single"); + rxkb_option_group_allows_multiple(g) ? "true" : "false"); o = rxkb_option_first(g); assert(o); /* Empty option list is usually a bug or a bad xml file */ while (o) { const char *brief = rxkb_option_get_brief(o); - printf(" - %s:%s:%s\n", + printf(" - name: '%s'\n" + " brief: '%s'\n" + " description: '%s'\n", rxkb_option_get_name(o), brief ? brief : "", rxkb_option_get_description(o)); diff --git a/tools/xkbcli-how-to-type.1 b/tools/xkbcli-how-to-type.1 index 5211d0f..d5002ae 100644 --- a/tools/xkbcli-how-to-type.1 +++ b/tools/xkbcli-how-to-type.1 @@ -9,7 +9,7 @@ .Sh SYNOPSIS .Nm .Op options -.Ar codepoint +.Ar codepoint/keysym . .Sh DESCRIPTION .Nm @@ -17,6 +17,9 @@ prints the key combinations (keycode + modifiers) in the keymap's layouts which would produce the given Unicode codepoint. . .Bl -tag -width Ds +.It Fl \-keysym +Treat the argument as a keysym, not a Unicode codepoint +. .It Fl \-rules Ar rules The XKB ruleset . diff --git a/tools/xkbcli-interactive-evdev.1 b/tools/xkbcli-interactive-evdev.1 index be1b70f..58be555 100644 --- a/tools/xkbcli-interactive-evdev.1 +++ b/tools/xkbcli-interactive-evdev.1 @@ -14,7 +14,7 @@ .Nm is a commandline tool to interactively debug XKB keymaps by listening to .Pa /dev/input/eventX -evdev devices (Linux). +evdev devices. . .Pp .Nm diff --git a/tools/xkbcli-list.1 b/tools/xkbcli-list.1 index a72477b..66ea09b 100644 --- a/tools/xkbcli-list.1 +++ b/tools/xkbcli-list.1 @@ -1,4 +1,4 @@ -.Dd July 27, 2020 +.Dd November 1, 2021 .Dt XKBCLI\-LIST 1 .Os . @@ -11,11 +11,11 @@ .Op Pa /path/to/xkbbase Oo Pa /path/to/xkbbase Oc ... . .Sh DESCRIPTION -.Nm -is a commandline tool to list available model, layout, variant and option (MLVO) values from the XKB registry. +List available model, layout, variant and option (MLVO) values from the XKB registry. +The output is in YAML 1.2 format. . .Pp -Positional arguments provided on the commandline are treated as XKB base directory installations. +Positional arguments are treated as XKB base directory installations. . .Bl -tag -width Ds .It Fl \-help diff --git a/tools/xkbcli.1 b/tools/xkbcli.1 index 9ea0416..18f7732 100644 --- a/tools/xkbcli.1 +++ b/tools/xkbcli.1 @@ -27,6 +27,10 @@ Print the version and exit . .Ss COMMANDS .Bl -tag -width Ds +.It Ic compile\-keymap +Compile an XKB keymap, see +.Xr xkbcli\-compile\-keymap 1 + .It Ic how\-to\-type Show how to type a given Unicode codepoint, see .Xr xkbcli\-how\-to\-type 1 @@ -40,7 +44,7 @@ Interactive debugger for XKB keymaps for Wayland, see .Xr xkbcli\-interactive\-wayland 1 . .It Ic interactive\-evdev -Interactive debugger for XKB keymaps for evdev (Linux), see +Interactive debugger for XKB keymaps for evdev, see .Xr xkbcli\-interactive\-evdev 1 . .It Ic list diff --git a/tools/xkbcli.c b/tools/xkbcli.c index 1f3ed3f..75f72fe 100644 --- a/tools/xkbcli.c +++ b/tools/xkbcli.c @@ -55,7 +55,7 @@ usage(void) #endif #if HAVE_XKBCLI_INTERACTIVE_EVDEV " interactive-evdev\n" - " Interactive debugger for XKB keymaps for evdev (Linux)\n" + " Interactive debugger for XKB keymaps for evdev\n" "\n" #endif #if HAVE_XKBCLI_COMPILE_KEYMAP |