diff options
author | Haibo Huang <hhb@google.com> | 2020-11-03 01:30:55 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-11-03 01:30:55 +0000 |
commit | bfc5d50c3e48c17f48837afc3df104fb9bc0d76e (patch) | |
tree | 2370f9e46f9dab743fb93b30277ceb21a8fd36e5 | |
parent | 764a7c597651b02fa1dd51484daa37ded63e73e8 (diff) | |
parent | 44a37d780cd0417a1eabbd9e700f5243fcfe42d3 (diff) | |
download | libxkbcommon-bfc5d50c3e48c17f48837afc3df104fb9bc0d76e.tar.gz |
Upgrade libxkbcommon to xkbcommon-1.0.1 am: 44a37d780c
Original change: https://android-review.googlesource.com/c/platform/external/libxkbcommon/+/1479536
Change-Id: I017637f2c8cec12bdd2cede28a7cf0e3e181137c
51 files changed, 20639 insertions, 1858 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 308f584..eb4e74f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -46,14 +46,14 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip meson - brew install doxygen bison ninja + brew install libxml2 doxygen bison ninja brew link bison --force env: HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 - name: Setup run: | - PATH="/usr/local/opt/bison/bin:${PATH}" meson setup -Denable-wayland=false -Denable-x11=false -Denable-xkbregistry=false build + PATH="/usr/local/opt/bison/bin:${PATH}" meson setup -Denable-wayland=false -Denable-x11=false build - name: Build run: | PATH="/usr/local/opt/bison/bin:${PATH}" meson compile -C build @@ -7,13 +7,13 @@ third_party { } url { type: ARCHIVE - value: "https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-1.0.0.tar.gz" + value: "https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-1.0.1.tar.gz" } - version: "xkbcommon-1.0.0" + version: "xkbcommon-1.0.1" license_type: NOTICE last_upgrade_date { year: 2020 - month: 9 - day: 8 + month: 10 + day: 28 } } @@ -1,3 +1,14 @@ +libxkbcommon 1.0.1 - 2020-09-11 +================== + +- Fix the tool-option-parsing test failing. + +- Remove requirement for pytest in the tool-option-parsing test. + +- Make the table output of `xkbcli how-to-type` aligned. + +- Some portability and test isolation fixes. + libxkbcommon 1.0.0 - 2020-09-05 ================== @@ -31,6 +31,8 @@ #define HAVE_STRNDUP 1 +#define HAVE_UNISTD_H 1 + #define HAVE_XKBCLI_COMPILE_KEYMAP 1 #define HAVE_XKBCLI_HOW_TO_TYPE 1 @@ -43,7 +45,7 @@ #define LIBXKBCOMMON_TOOL_PATH "/usr/local/libexec/xkbcommon" -#define LIBXKBCOMMON_VERSION "1.0.0" +#define LIBXKBCOMMON_VERSION "1.0.1" #define WIN32_LEAN_AND_MEAN 1 diff --git a/meson.build b/meson.build index 046fc54..6e433f4 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'libxkbcommon', 'c', - version: '1.0.0', + version: '1.0.1', default_options: [ 'c_std=c99', 'warning_level=2', @@ -89,6 +89,9 @@ if get_option('default-options') != '' else configh_data.set('DEFAULT_XKB_OPTIONS', 'NULL') endif +if cc.has_header('unistd.h') + configh_data.set('HAVE_UNISTD_H', 1) +endif if cc.links('int main(){if(__builtin_expect(1<0,0)){}}', name: '__builtin_expect') configh_data.set('HAVE___BUILTIN_EXPECT', 1) endif @@ -366,12 +369,140 @@ if get_option('enable-xkbregistry') ) endif +man_pages = [] + +# Tools +build_tools = have_getopt_long +if build_tools + libxkbcommon_tools_internal = static_library( + 'tools-internal', + 'tools/tools-common.h', + 'tools/tools-common.c', + dependencies: libxkbcommon_dep, + ) + tools_dep = declare_dependency( + include_directories: [include_directories('tools')], + link_with: libxkbcommon_tools_internal, + ) + + executable('xkbcli', 'tools/xkbcli.c', + 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) + install_man('tools/xkbcli-compile-keymap.1') + # The same tool again, but with access to some private APIs. + executable('compile-keymap', + 'tools/compile-keymap.c', + libxkbcommon_sources, + dependencies: [tools_dep], + c_args: ['-DENABLE_PRIVATE_APIS'], + include_directories: [include_directories('src')], + install: false) + configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true) + executable('xkbcli-how-to-type', + 'tools/how-to-type.c', + dependencies: tools_dep, + install: true, + install_dir: dir_libexec) + install_man('tools/xkbcli-how-to-type.1') + configh_data.set10('HAVE_XKBCLI_HOW_TO_TYPE', true) + if cc.has_header('linux/input.h') + executable('xkbcli-interactive-evdev', + 'tools/interactive-evdev.c', + dependencies: tools_dep, + install: true, + install_dir: dir_libexec) + configh_data.set10('HAVE_XKBCLI_INTERACTIVE_EVDEV', true) + install_man('tools/xkbcli-interactive-evdev.1') + endif + if get_option('enable-x11') + x11_tools_dep = declare_dependency( + link_with: libxkbcommon_x11, + dependencies: [ + tools_dep, + xcb_dep, + xcb_xkb_dep, + ], + ) + executable('xkbcli-interactive-x11', + 'tools/interactive-x11.c', + dependencies: x11_tools_dep, + install: true, + install_dir: dir_libexec) + install_man('tools/xkbcli-interactive-x11.1') + configh_data.set10('HAVE_XKBCLI_INTERACTIVE_X11', true) + endif + if get_option('enable-wayland') + wayland_client_dep = dependency('wayland-client', version: '>=1.2.0', required: false) + wayland_protocols_dep = dependency('wayland-protocols', version: '>=1.12', required: false) + wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true) + if not wayland_client_dep.found() or not wayland_protocols_dep.found() or not wayland_scanner_dep.found() + error('''The Wayland xkbcli programs require wayland-client >= 1.2.0, wayland-protocols >= 1.7 which were not found. +You can disable the Wayland xkbcli programs with -Denable-wayland=false.''') + endif + + wayland_scanner = find_program(wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner')) + wayland_scanner_code_gen = generator( + wayland_scanner, + output: '@BASENAME@-protocol.c', + arguments: ['code', '@INPUT@', '@OUTPUT@'], + ) + wayland_scanner_client_header_gen = generator( + wayland_scanner, + output: '@BASENAME@-client-protocol.h', + arguments: ['client-header', '@INPUT@', '@OUTPUT@'], + ) + wayland_protocols_datadir = wayland_protocols_dep.get_pkgconfig_variable('pkgdatadir') + xdg_shell_xml = wayland_protocols_datadir/'stable/xdg-shell/xdg-shell.xml' + xdg_shell_sources = [ + wayland_scanner_code_gen.process(xdg_shell_xml), + wayland_scanner_client_header_gen.process(xdg_shell_xml), + ] + executable('xkbcli-interactive-wayland', + 'tools/interactive-wayland.c', + xdg_shell_sources, + dependencies: [tools_dep, wayland_client_dep], + install: true, + install_dir: dir_libexec) + install_man('tools/xkbcli-interactive-wayland.1') + configh_data.set10('HAVE_XKBCLI_INTERACTIVE_WAYLAND', true) + endif + + if get_option('enable-xkbregistry') + configh_data.set10('HAVE_XKBCLI_LIST', true) + executable('xkbcli-list', + 'tools/registry-list.c', + dependencies: dep_libxkbregistry, + install: true, + install_dir: dir_libexec) + install_man('tools/xkbcli-list.1') + endif +endif + + +# xkeyboard-config "verifier" +xkct_config = configuration_data() +xkct_config.set('MESON_BUILD_ROOT', meson.build_root()) +xkct_config.set('XKB_CONFIG_ROOT', XKBCONFIGROOT) +configure_file(input: 'test/xkeyboard-config-test.py.in', + output: 'xkeyboard-config-test', + configuration: xkct_config) + # Tests test_env = environment() test_env.set('XKB_LOG_LEVEL', 'debug') test_env.set('XKB_LOG_VERBOSITY', '10') test_env.set('top_srcdir', meson.source_root()) test_env.set('top_builddir', meson.build_root()) +test_env.set('HAVE_XKBCLI_INTERACTIVE_EVDEV', configh_data.get('HAVE_XKBCLI_INTERACTIVE_EVDEV', 0).to_string()) +test_env.set('HAVE_XKBCLI_INTERACTIVE_WAYLAND', configh_data.get('HAVE_XKBCLI_INTERACTIVE_WAYLAND', 0).to_string()) +test_env.set('HAVE_XKBCLI_INTERACTIVE_X11', configh_data.get('HAVE_XKBCLI_INTERACTIVE_X11', 0).to_string()) +test_env.set('HAVE_XKBCLI_LIST', configh_data.get('HAVE_XKBCLI_LIST', 0).to_string()) test_configh_data = configuration_data() test_configh_data.set_quoted('TEST_XKB_CONFIG_ROOT', meson.source_root()/'test'/'data') @@ -519,6 +650,12 @@ if get_option('enable-xkbregistry') env: test_env, ) endif +if build_tools + test('tool-option-parsing', + find_program('test/tool-option-parsing.py'), + env: test_env, + suite: ['python-tests']) +endif valgrind = find_program('valgrind', required: false) if valgrind.found() @@ -538,135 +675,6 @@ endif executable('fuzz-keymap', 'fuzz/keymap/target.c', dependencies: test_dep) executable('fuzz-compose', 'fuzz/compose/target.c', dependencies: test_dep) -man_pages = [] - -# Tools -build_tools = have_getopt_long -if build_tools - libxkbcommon_tools_internal = static_library( - 'tools-internal', - 'tools/tools-common.h', - 'tools/tools-common.c', - dependencies: libxkbcommon_dep, - ) - tools_dep = declare_dependency( - include_directories: [include_directories('tools')], - link_with: libxkbcommon_tools_internal, - ) - - executable('xkbcli', 'tools/xkbcli.c', - 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) - install_man('tools/xkbcli-compile-keymap.1') - # The same tool again, but with access to some private APIs. - executable('compile-keymap', - 'tools/compile-keymap.c', - libxkbcommon_sources, - dependencies: [tools_dep], - c_args: ['-DENABLE_PRIVATE_APIS'], - include_directories: [include_directories('src')], - install: false) - configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true) - executable('xkbcli-how-to-type', - 'tools/how-to-type.c', - dependencies: tools_dep, - install: true, - install_dir: dir_libexec) - install_man('tools/xkbcli-how-to-type.1') - configh_data.set10('HAVE_XKBCLI_HOW_TO_TYPE', true) - if cc.has_header('linux/input.h') - executable('xkbcli-interactive-evdev', - 'tools/interactive-evdev.c', - dependencies: tools_dep, - install: true, - install_dir: dir_libexec) - configh_data.set10('HAVE_XKBCLI_INTERACTIVE_EVDEV', true) - install_man('tools/xkbcli-interactive-evdev.1') - endif - if get_option('enable-x11') - x11_tools_dep = declare_dependency( - link_with: libxkbcommon_x11, - dependencies: [ - tools_dep, - xcb_dep, - xcb_xkb_dep, - ], - ) - executable('xkbcli-interactive-x11', - 'tools/interactive-x11.c', - dependencies: x11_tools_dep, - install: true, - install_dir: dir_libexec) - install_man('tools/xkbcli-interactive-x11.1') - configh_data.set10('HAVE_XKBCLI_INTERACTIVE_X11', true) - endif - if get_option('enable-wayland') - wayland_client_dep = dependency('wayland-client', version: '>=1.2.0', required: false) - wayland_protocols_dep = dependency('wayland-protocols', version: '>=1.12', required: false) - wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true) - if not wayland_client_dep.found() or not wayland_protocols_dep.found() or not wayland_scanner_dep.found() - error('''The Wayland xkbcli programs require wayland-client >= 1.2.0, wayland-protocols >= 1.7 which were not found. -You can disable the Wayland xkbcli programs with -Denable-wayland=false.''') - endif - - wayland_scanner = find_program(wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner')) - wayland_scanner_code_gen = generator( - wayland_scanner, - output: '@BASENAME@-protocol.c', - arguments: ['code', '@INPUT@', '@OUTPUT@'], - ) - wayland_scanner_client_header_gen = generator( - wayland_scanner, - output: '@BASENAME@-client-protocol.h', - arguments: ['client-header', '@INPUT@', '@OUTPUT@'], - ) - wayland_protocols_datadir = wayland_protocols_dep.get_pkgconfig_variable('pkgdatadir') - xdg_shell_xml = wayland_protocols_datadir/'stable/xdg-shell/xdg-shell.xml' - xdg_shell_sources = [ - wayland_scanner_code_gen.process(xdg_shell_xml), - wayland_scanner_client_header_gen.process(xdg_shell_xml), - ] - executable('xkbcli-interactive-wayland', - 'tools/interactive-wayland.c', - xdg_shell_sources, - dependencies: [tools_dep, wayland_client_dep], - install: true, - install_dir: dir_libexec) - install_man('tools/xkbcli-interactive-wayland.1') - configh_data.set10('HAVE_XKBCLI_INTERACTIVE_WAYLAND', true) - endif - - if get_option('enable-xkbregistry') - configh_data.set10('HAVE_XKBCLI_LIST', true) - executable('xkbcli-list', - 'tools/registry-list.c', - dependencies: dep_libxkbregistry, - install: true, - install_dir: dir_libexec) - install_man('tools/xkbcli-list.1') - endif - - test('tool-option-parsing', - find_program('test/tool-option-parsing.py'), - env: test_env, - suite: ['python-tests']) -endif - - -# xkeyboard-config "verifier" -xkct_config = configuration_data() -xkct_config.set('MESON_BUILD_ROOT', meson.build_root()) -xkct_config.set('XKB_CONFIG_ROOT', XKBCONFIGROOT) -configure_file(input: 'test/xkeyboard-config-test.py.in', - output: 'xkeyboard-config-test', - configuration: xkct_config) - # Benchmarks. libxkbcommon_bench_internal = static_library( diff --git a/src/registry.c b/src/registry.c index d3d95f5..dcaaa1b 100644 --- a/src/registry.c +++ b/src/registry.c @@ -133,6 +133,7 @@ static bool parse(struct rxkb_context *ctx, const char *path, enum rxkb_popularity popularity); +ATTR_PRINTF(3, 4) static void rxkb_log(struct rxkb_context *ctx, enum rxkb_log_level level, const char *fmt, ...) diff --git a/src/utils.h b/src/utils.h index d9827c0..cd3e9b1 100644 --- a/src/utils.h +++ b/src/utils.h @@ -30,7 +30,7 @@ #include <stdbool.h> #include <stdio.h> #include <string.h> -#if defined(HAVE_EACCESS) || defined(HAVE_EUIDACCESS) +#if HAVE_UNISTD_H #include <unistd.h> #else /* Required on Windows where unistd.h doesn't exist */ diff --git a/src/xkbcomp/.gitignore b/src/xkbcomp/.gitignore new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/xkbcomp/.gitignore diff --git a/src/xkbcomp/parser.c b/src/xkbcomp/parser.c index 26d7a57..5cc10e4 100644 --- a/src/xkbcomp/parser.c +++ b/src/xkbcomp/parser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.3. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison implementation for Yacc-like parsers in C @@ -49,7 +49,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.6.3" +#define YYBISON_VERSION "3.7.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -126,7 +126,7 @@ resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) #define param_scanner param->scanner -#line 130 "xkbcommon@sha/parser.c" +#line 130 "libxkbcommon.so.0.0.0.p/parser.c" # ifndef YY_CAST # ifdef __cplusplus @@ -149,140 +149,7 @@ resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) # endif # endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED -# define YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int _xkbcommon_debug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - END_OF_FILE = 0, /* END_OF_FILE */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - ERROR_TOK = 255, /* ERROR_TOK */ - XKB_KEYMAP = 1, /* XKB_KEYMAP */ - XKB_KEYCODES = 2, /* XKB_KEYCODES */ - XKB_TYPES = 3, /* XKB_TYPES */ - XKB_SYMBOLS = 4, /* XKB_SYMBOLS */ - XKB_COMPATMAP = 5, /* XKB_COMPATMAP */ - XKB_GEOMETRY = 6, /* XKB_GEOMETRY */ - XKB_SEMANTICS = 7, /* XKB_SEMANTICS */ - XKB_LAYOUT = 8, /* XKB_LAYOUT */ - INCLUDE = 10, /* INCLUDE */ - OVERRIDE = 11, /* OVERRIDE */ - AUGMENT = 12, /* AUGMENT */ - REPLACE = 13, /* REPLACE */ - ALTERNATE = 14, /* ALTERNATE */ - VIRTUAL_MODS = 20, /* VIRTUAL_MODS */ - TYPE = 21, /* TYPE */ - INTERPRET = 22, /* INTERPRET */ - ACTION_TOK = 23, /* ACTION_TOK */ - KEY = 24, /* KEY */ - ALIAS = 25, /* ALIAS */ - GROUP = 26, /* GROUP */ - MODIFIER_MAP = 27, /* MODIFIER_MAP */ - INDICATOR = 28, /* INDICATOR */ - SHAPE = 29, /* SHAPE */ - KEYS = 30, /* KEYS */ - ROW = 31, /* ROW */ - SECTION = 32, /* SECTION */ - OVERLAY = 33, /* OVERLAY */ - TEXT = 34, /* TEXT */ - OUTLINE = 35, /* OUTLINE */ - SOLID = 36, /* SOLID */ - LOGO = 37, /* LOGO */ - VIRTUAL = 38, /* VIRTUAL */ - EQUALS = 40, /* EQUALS */ - PLUS = 41, /* PLUS */ - MINUS = 42, /* MINUS */ - DIVIDE = 43, /* DIVIDE */ - TIMES = 44, /* TIMES */ - OBRACE = 45, /* OBRACE */ - CBRACE = 46, /* CBRACE */ - OPAREN = 47, /* OPAREN */ - CPAREN = 48, /* CPAREN */ - OBRACKET = 49, /* OBRACKET */ - CBRACKET = 50, /* CBRACKET */ - DOT = 51, /* DOT */ - COMMA = 52, /* COMMA */ - SEMI = 53, /* SEMI */ - EXCLAM = 54, /* EXCLAM */ - INVERT = 55, /* INVERT */ - STRING = 60, /* STRING */ - INTEGER = 61, /* INTEGER */ - FLOAT = 62, /* FLOAT */ - IDENT = 63, /* IDENT */ - KEYNAME = 64, /* KEYNAME */ - PARTIAL = 70, /* PARTIAL */ - DEFAULT = 71, /* DEFAULT */ - HIDDEN = 72, /* HIDDEN */ - ALPHANUMERIC_KEYS = 73, /* ALPHANUMERIC_KEYS */ - MODIFIER_KEYS = 74, /* MODIFIER_KEYS */ - KEYPAD_KEYS = 75, /* KEYPAD_KEYS */ - FUNCTION_KEYS = 76, /* FUNCTION_KEYS */ - ALTERNATE_GROUP = 77 /* ALTERNATE_GROUP */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 164 "../src/xkbcomp/parser.y" - - int64_t num; - enum xkb_file_type file_type; - char *str; - xkb_atom_t atom; - enum merge_mode merge; - enum xkb_map_flags mapFlags; - xkb_keysym_t keysym; - ParseCommon *any; - struct { ParseCommon *head; ParseCommon *last; } anyList; - ExprDef *expr; - struct { ExprDef *head; ExprDef *last; } exprList; - VarDef *var; - struct { VarDef *head; VarDef *last; } varList; - VModDef *vmod; - struct { VModDef *head; VModDef *last; } vmodList; - InterpDef *interp; - KeyTypeDef *keyType; - SymbolsDef *syms; - ModMapDef *modMask; - GroupCompatDef *groupCompat; - LedMapDef *ledMap; - LedNameDef *ledName; - KeycodeDef *keyCode; - KeyAliasDef *keyAlias; - void *geom; - XkbFile *file; - struct { XkbFile *head; XkbFile *last; } fileList; - -#line 274 "xkbcommon@sha/parser.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - - -int _xkbcommon_parse (struct parser_param *param); - -#endif /* !YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED */ +#include "parser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -744,6 +611,7 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 334 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 257 @@ -1446,250 +1314,250 @@ yydestruct (const char *yymsg, YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yykind) { - case 52: /* STRING */ + case YYSYMBOL_STRING: /* STRING */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1453 "xkbcommon@sha/parser.c" +#line 1321 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 55: /* IDENT */ + case YYSYMBOL_IDENT: /* IDENT */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1459 "xkbcommon@sha/parser.c" +#line 1327 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 66: /* XkbFile */ + case YYSYMBOL_XkbFile: /* XkbFile */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1465 "xkbcommon@sha/parser.c" +#line 1333 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 67: /* XkbCompositeMap */ + case YYSYMBOL_XkbCompositeMap: /* XkbCompositeMap */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1471 "xkbcommon@sha/parser.c" +#line 1339 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 69: /* XkbMapConfigList */ + case YYSYMBOL_XkbMapConfigList: /* XkbMapConfigList */ #line 237 "../src/xkbcomp/parser.y" { FreeXkbFile(((*yyvaluep).fileList).head); } -#line 1477 "xkbcommon@sha/parser.c" +#line 1345 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 70: /* XkbMapConfig */ + case YYSYMBOL_XkbMapConfig: /* XkbMapConfig */ #line 236 "../src/xkbcomp/parser.y" { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } -#line 1483 "xkbcommon@sha/parser.c" +#line 1351 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 75: /* DeclList */ + case YYSYMBOL_DeclList: /* DeclList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).anyList).head); } -#line 1489 "xkbcommon@sha/parser.c" +#line 1357 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 76: /* Decl */ + case YYSYMBOL_Decl: /* Decl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } -#line 1495 "xkbcommon@sha/parser.c" +#line 1363 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 77: /* VarDecl */ + case YYSYMBOL_VarDecl: /* VarDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -#line 1501 "xkbcommon@sha/parser.c" +#line 1369 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 78: /* KeyNameDecl */ + case YYSYMBOL_KeyNameDecl: /* KeyNameDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } -#line 1507 "xkbcommon@sha/parser.c" +#line 1375 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 79: /* KeyAliasDecl */ + case YYSYMBOL_KeyAliasDecl: /* KeyAliasDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } -#line 1513 "xkbcommon@sha/parser.c" +#line 1381 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 80: /* VModDecl */ + case YYSYMBOL_VModDecl: /* VModDecl */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } -#line 1519 "xkbcommon@sha/parser.c" +#line 1387 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 81: /* VModDefList */ + case YYSYMBOL_VModDefList: /* VModDefList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } -#line 1525 "xkbcommon@sha/parser.c" +#line 1393 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 82: /* VModDef */ + case YYSYMBOL_VModDef: /* VModDef */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } -#line 1531 "xkbcommon@sha/parser.c" +#line 1399 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 83: /* InterpretDecl */ + case YYSYMBOL_InterpretDecl: /* InterpretDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -#line 1537 "xkbcommon@sha/parser.c" +#line 1405 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 84: /* InterpretMatch */ + case YYSYMBOL_InterpretMatch: /* InterpretMatch */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } -#line 1543 "xkbcommon@sha/parser.c" +#line 1411 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 85: /* VarDeclList */ + case YYSYMBOL_VarDeclList: /* VarDeclList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } -#line 1549 "xkbcommon@sha/parser.c" +#line 1417 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 86: /* KeyTypeDecl */ + case YYSYMBOL_KeyTypeDecl: /* KeyTypeDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } -#line 1555 "xkbcommon@sha/parser.c" +#line 1423 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 87: /* SymbolsDecl */ + case YYSYMBOL_SymbolsDecl: /* SymbolsDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } -#line 1561 "xkbcommon@sha/parser.c" +#line 1429 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 88: /* SymbolsBody */ + case YYSYMBOL_SymbolsBody: /* SymbolsBody */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } -#line 1567 "xkbcommon@sha/parser.c" +#line 1435 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 89: /* SymbolsVarDecl */ + case YYSYMBOL_SymbolsVarDecl: /* SymbolsVarDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } -#line 1573 "xkbcommon@sha/parser.c" +#line 1441 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 90: /* ArrayInit */ + case YYSYMBOL_ArrayInit: /* ArrayInit */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1579 "xkbcommon@sha/parser.c" +#line 1447 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 91: /* GroupCompatDecl */ + case YYSYMBOL_GroupCompatDecl: /* GroupCompatDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } -#line 1585 "xkbcommon@sha/parser.c" +#line 1453 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 92: /* ModMapDecl */ + case YYSYMBOL_ModMapDecl: /* ModMapDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } -#line 1591 "xkbcommon@sha/parser.c" +#line 1459 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 93: /* LedMapDecl */ + case YYSYMBOL_LedMapDecl: /* LedMapDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } -#line 1597 "xkbcommon@sha/parser.c" +#line 1465 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 94: /* LedNameDecl */ + case YYSYMBOL_LedNameDecl: /* LedNameDecl */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } -#line 1603 "xkbcommon@sha/parser.c" +#line 1471 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 108: /* CoordList */ + case YYSYMBOL_CoordList: /* CoordList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1609 "xkbcommon@sha/parser.c" +#line 1477 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 109: /* Coord */ + case YYSYMBOL_Coord: /* Coord */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1615 "xkbcommon@sha/parser.c" +#line 1483 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 116: /* OptExprList */ + case YYSYMBOL_OptExprList: /* OptExprList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1621 "xkbcommon@sha/parser.c" +#line 1489 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 117: /* ExprList */ + case YYSYMBOL_ExprList: /* ExprList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1627 "xkbcommon@sha/parser.c" +#line 1495 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 118: /* Expr */ + case YYSYMBOL_Expr: /* Expr */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1633 "xkbcommon@sha/parser.c" +#line 1501 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 119: /* Term */ + case YYSYMBOL_Term: /* Term */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1639 "xkbcommon@sha/parser.c" +#line 1507 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 120: /* ActionList */ + case YYSYMBOL_ActionList: /* ActionList */ #line 232 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } -#line 1645 "xkbcommon@sha/parser.c" +#line 1513 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 121: /* Action */ + case YYSYMBOL_Action: /* Action */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1651 "xkbcommon@sha/parser.c" +#line 1519 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 122: /* Lhs */ + case YYSYMBOL_Lhs: /* Lhs */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1657 "xkbcommon@sha/parser.c" +#line 1525 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 123: /* Terminal */ + case YYSYMBOL_Terminal: /* Terminal */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1663 "xkbcommon@sha/parser.c" +#line 1531 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 124: /* OptKeySymList */ + case YYSYMBOL_OptKeySymList: /* OptKeySymList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1669 "xkbcommon@sha/parser.c" +#line 1537 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 125: /* KeySymList */ + case YYSYMBOL_KeySymList: /* KeySymList */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1675 "xkbcommon@sha/parser.c" +#line 1543 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 126: /* KeySyms */ + case YYSYMBOL_KeySyms: /* KeySyms */ #line 229 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } -#line 1681 "xkbcommon@sha/parser.c" +#line 1549 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 135: /* OptMapName */ + case YYSYMBOL_OptMapName: /* OptMapName */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1687 "xkbcommon@sha/parser.c" +#line 1555 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 136: /* MapName */ + case YYSYMBOL_MapName: /* MapName */ #line 238 "../src/xkbcomp/parser.y" { free(((*yyvaluep).str)); } -#line 1693 "xkbcommon@sha/parser.c" +#line 1561 "libxkbcommon.so.0.0.0.p/parser.c" break; default: @@ -1710,7 +1578,7 @@ yydestruct (const char *yymsg, int yyparse (struct parser_param *param) { -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; @@ -1721,36 +1589,32 @@ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ - int yynerrs; + int yynerrs = 0; - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -1764,15 +1628,6 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -1973,171 +1828,171 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* XkbFile: XkbCompositeMap */ #line 255 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; } -#line 1980 "xkbcommon@sha/parser.c" +#line 1835 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 3: + case 3: /* XkbFile: XkbMapConfig */ #line 257 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; YYACCEPT; } -#line 1986 "xkbcommon@sha/parser.c" +#line 1841 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 4: + case 4: /* XkbFile: END_OF_FILE */ #line 259 "../src/xkbcomp/parser.y" { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } -#line 1992 "xkbcommon@sha/parser.c" +#line 1847 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 5: + 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 1998 "xkbcommon@sha/parser.c" +#line 1853 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 6: + case 6: /* XkbCompositeType: XKB_KEYMAP */ #line 268 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 2004 "xkbcommon@sha/parser.c" +#line 1859 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 7: + case 7: /* XkbCompositeType: XKB_SEMANTICS */ #line 269 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 2010 "xkbcommon@sha/parser.c" +#line 1865 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 8: + case 8: /* XkbCompositeType: XKB_LAYOUT */ #line 270 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYMAP; } -#line 2016 "xkbcommon@sha/parser.c" +#line 1871 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 9: + 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 2022 "xkbcommon@sha/parser.c" +#line 1877 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 10: + case 10: /* XkbMapConfigList: XkbMapConfig */ #line 276 "../src/xkbcomp/parser.y" { (yyval.fileList).head = (yyval.fileList).last = (yyvsp[0].file); } -#line 2028 "xkbcommon@sha/parser.c" +#line 1883 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 11: + case 11: /* XkbMapConfig: OptFlags FileType OptMapName OBRACE DeclList CBRACE SEMI */ #line 282 "../src/xkbcomp/parser.y" { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].anyList).head, (yyvsp[-6].mapFlags)); } -#line 2036 "xkbcommon@sha/parser.c" +#line 1891 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 12: + case 12: /* FileType: XKB_KEYCODES */ #line 287 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_KEYCODES; } -#line 2042 "xkbcommon@sha/parser.c" +#line 1897 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 13: + case 13: /* FileType: XKB_TYPES */ #line 288 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_TYPES; } -#line 2048 "xkbcommon@sha/parser.c" +#line 1903 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 14: + case 14: /* FileType: XKB_COMPATMAP */ #line 289 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_COMPAT; } -#line 2054 "xkbcommon@sha/parser.c" +#line 1909 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 15: + case 15: /* FileType: XKB_SYMBOLS */ #line 290 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_SYMBOLS; } -#line 2060 "xkbcommon@sha/parser.c" +#line 1915 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 16: + case 16: /* FileType: XKB_GEOMETRY */ #line 291 "../src/xkbcomp/parser.y" { (yyval.file_type) = FILE_TYPE_GEOMETRY; } -#line 2066 "xkbcommon@sha/parser.c" +#line 1921 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 17: + case 17: /* OptFlags: Flags */ #line 294 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -#line 2072 "xkbcommon@sha/parser.c" +#line 1927 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 18: + case 18: /* OptFlags: %empty */ #line 295 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = 0; } -#line 2078 "xkbcommon@sha/parser.c" +#line 1933 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 19: + case 19: /* Flags: Flags Flag */ #line 298 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } -#line 2084 "xkbcommon@sha/parser.c" +#line 1939 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 20: + case 20: /* Flags: Flag */ #line 299 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = (yyvsp[0].mapFlags); } -#line 2090 "xkbcommon@sha/parser.c" +#line 1945 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 21: + case 21: /* Flag: PARTIAL */ #line 302 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_PARTIAL; } -#line 2096 "xkbcommon@sha/parser.c" +#line 1951 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 22: + case 22: /* Flag: DEFAULT */ #line 303 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_DEFAULT; } -#line 2102 "xkbcommon@sha/parser.c" +#line 1957 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 23: + case 23: /* Flag: HIDDEN */ #line 304 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_HIDDEN; } -#line 2108 "xkbcommon@sha/parser.c" +#line 1963 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 24: + case 24: /* Flag: ALPHANUMERIC_KEYS */ #line 305 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } -#line 2114 "xkbcommon@sha/parser.c" +#line 1969 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 25: + case 25: /* Flag: MODIFIER_KEYS */ #line 306 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_MODIFIER; } -#line 2120 "xkbcommon@sha/parser.c" +#line 1975 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 26: + case 26: /* Flag: KEYPAD_KEYS */ #line 307 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_KEYPAD; } -#line 2126 "xkbcommon@sha/parser.c" +#line 1981 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 27: + case 27: /* Flag: FUNCTION_KEYS */ #line 308 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_HAS_FN; } -#line 2132 "xkbcommon@sha/parser.c" +#line 1987 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 28: + case 28: /* Flag: ALTERNATE_GROUP */ #line 309 "../src/xkbcomp/parser.y" { (yyval.mapFlags) = MAP_IS_ALTGR; } -#line 2138 "xkbcommon@sha/parser.c" +#line 1993 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 29: + case 29: /* DeclList: DeclList Decl */ #line 313 "../src/xkbcomp/parser.y" { if ((yyvsp[0].any)) { @@ -2148,10 +2003,10 @@ yyreduce: } } } -#line 2152 "xkbcommon@sha/parser.c" +#line 2007 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 30: + case 30: /* DeclList: DeclList OptMergeMode VModDecl */ #line 328 "../src/xkbcomp/parser.y" { for (VModDef *vmod = (yyvsp[0].vmodList).head; vmod; vmod = (VModDef *) vmod->common.next) @@ -2162,649 +2017,649 @@ yyreduce: (yyval.anyList).head = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; } } -#line 2166 "xkbcommon@sha/parser.c" +#line 2021 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 31: + case 31: /* DeclList: %empty */ #line 337 "../src/xkbcomp/parser.y" { (yyval.anyList).head = (yyval.anyList).last = NULL; } -#line 2172 "xkbcommon@sha/parser.c" +#line 2027 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 32: + case 32: /* Decl: OptMergeMode VarDecl */ #line 341 "../src/xkbcomp/parser.y" { (yyvsp[0].var)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].var); } -#line 2181 "xkbcommon@sha/parser.c" +#line 2036 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 33: + case 33: /* Decl: OptMergeMode InterpretDecl */ #line 347 "../src/xkbcomp/parser.y" { (yyvsp[0].interp)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].interp); } -#line 2190 "xkbcommon@sha/parser.c" +#line 2045 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 34: + case 34: /* Decl: OptMergeMode KeyNameDecl */ #line 352 "../src/xkbcomp/parser.y" { (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); } -#line 2199 "xkbcommon@sha/parser.c" +#line 2054 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 35: + case 35: /* Decl: OptMergeMode KeyAliasDecl */ #line 357 "../src/xkbcomp/parser.y" { (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); } -#line 2208 "xkbcommon@sha/parser.c" +#line 2063 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 36: + case 36: /* Decl: OptMergeMode KeyTypeDecl */ #line 362 "../src/xkbcomp/parser.y" { (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); } -#line 2217 "xkbcommon@sha/parser.c" +#line 2072 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 37: + case 37: /* Decl: OptMergeMode SymbolsDecl */ #line 367 "../src/xkbcomp/parser.y" { (yyvsp[0].syms)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].syms); } -#line 2226 "xkbcommon@sha/parser.c" +#line 2081 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 38: + case 38: /* Decl: OptMergeMode ModMapDecl */ #line 372 "../src/xkbcomp/parser.y" { (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); } -#line 2235 "xkbcommon@sha/parser.c" +#line 2090 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 39: + case 39: /* Decl: OptMergeMode GroupCompatDecl */ #line 377 "../src/xkbcomp/parser.y" { (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); } -#line 2244 "xkbcommon@sha/parser.c" +#line 2099 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 40: + case 40: /* Decl: OptMergeMode LedMapDecl */ #line 382 "../src/xkbcomp/parser.y" { (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); } -#line 2253 "xkbcommon@sha/parser.c" +#line 2108 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 41: + case 41: /* Decl: OptMergeMode LedNameDecl */ #line 387 "../src/xkbcomp/parser.y" { (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); } -#line 2262 "xkbcommon@sha/parser.c" +#line 2117 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 42: + case 42: /* Decl: OptMergeMode ShapeDecl */ #line 391 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2268 "xkbcommon@sha/parser.c" +#line 2123 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 43: + case 43: /* Decl: OptMergeMode SectionDecl */ #line 392 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2274 "xkbcommon@sha/parser.c" +#line 2129 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 44: + case 44: /* Decl: OptMergeMode DoodadDecl */ #line 393 "../src/xkbcomp/parser.y" { (yyval.any) = NULL; } -#line 2280 "xkbcommon@sha/parser.c" +#line 2135 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 45: + case 45: /* Decl: MergeMode STRING */ #line 395 "../src/xkbcomp/parser.y" { (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); free((yyvsp[0].str)); } -#line 2289 "xkbcommon@sha/parser.c" +#line 2144 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 46: + case 46: /* VarDecl: Lhs EQUALS Expr SEMI */ #line 402 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 2295 "xkbcommon@sha/parser.c" +#line 2150 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 47: + case 47: /* VarDecl: Ident SEMI */ #line 404 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } -#line 2301 "xkbcommon@sha/parser.c" +#line 2156 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 48: + case 48: /* VarDecl: EXCLAM Ident SEMI */ #line 406 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } -#line 2307 "xkbcommon@sha/parser.c" +#line 2162 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 49: + case 49: /* KeyNameDecl: KEYNAME EQUALS KeyCode SEMI */ #line 410 "../src/xkbcomp/parser.y" { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } -#line 2313 "xkbcommon@sha/parser.c" +#line 2168 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 50: + case 50: /* KeyAliasDecl: ALIAS KEYNAME EQUALS KEYNAME SEMI */ #line 414 "../src/xkbcomp/parser.y" { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } -#line 2319 "xkbcommon@sha/parser.c" +#line 2174 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 51: + case 51: /* VModDecl: VIRTUAL_MODS VModDefList SEMI */ #line 418 "../src/xkbcomp/parser.y" { (yyval.vmodList) = (yyvsp[-1].vmodList); } -#line 2325 "xkbcommon@sha/parser.c" +#line 2180 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 52: + 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 2331 "xkbcommon@sha/parser.c" +#line 2186 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 53: + case 53: /* VModDefList: VModDef */ #line 424 "../src/xkbcomp/parser.y" { (yyval.vmodList).head = (yyval.vmodList).last = (yyvsp[0].vmod); } -#line 2337 "xkbcommon@sha/parser.c" +#line 2192 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 54: + case 54: /* VModDef: Ident */ #line 428 "../src/xkbcomp/parser.y" { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } -#line 2343 "xkbcommon@sha/parser.c" +#line 2198 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 55: + case 55: /* VModDef: Ident EQUALS Expr */ #line 430 "../src/xkbcomp/parser.y" { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } -#line 2349 "xkbcommon@sha/parser.c" +#line 2204 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 56: + 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 2355 "xkbcommon@sha/parser.c" +#line 2210 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 57: + case 57: /* InterpretMatch: KeySym PLUS Expr */ #line 440 "../src/xkbcomp/parser.y" { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } -#line 2361 "xkbcommon@sha/parser.c" +#line 2216 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 58: + case 58: /* InterpretMatch: KeySym */ #line 442 "../src/xkbcomp/parser.y" { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } -#line 2367 "xkbcommon@sha/parser.c" +#line 2222 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 59: + 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 2373 "xkbcommon@sha/parser.c" +#line 2228 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 60: + case 60: /* VarDeclList: VarDecl */ #line 448 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } -#line 2379 "xkbcommon@sha/parser.c" +#line 2234 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 61: + 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 2385 "xkbcommon@sha/parser.c" +#line 2240 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 62: + 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 2391 "xkbcommon@sha/parser.c" +#line 2246 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 63: + 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 2397 "xkbcommon@sha/parser.c" +#line 2252 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 64: + case 64: /* SymbolsBody: SymbolsVarDecl */ #line 466 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } -#line 2403 "xkbcommon@sha/parser.c" +#line 2258 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 65: + case 65: /* SymbolsBody: %empty */ #line 467 "../src/xkbcomp/parser.y" { (yyval.varList).head = (yyval.varList).last = NULL; } -#line 2409 "xkbcommon@sha/parser.c" +#line 2264 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 66: + case 66: /* SymbolsVarDecl: Lhs EQUALS Expr */ #line 470 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2415 "xkbcommon@sha/parser.c" +#line 2270 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 67: + case 67: /* SymbolsVarDecl: Lhs EQUALS ArrayInit */ #line 471 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2421 "xkbcommon@sha/parser.c" +#line 2276 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 68: + case 68: /* SymbolsVarDecl: Ident */ #line 472 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } -#line 2427 "xkbcommon@sha/parser.c" +#line 2282 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 69: + case 69: /* SymbolsVarDecl: EXCLAM Ident */ #line 473 "../src/xkbcomp/parser.y" { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } -#line 2433 "xkbcommon@sha/parser.c" +#line 2288 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 70: + case 70: /* SymbolsVarDecl: ArrayInit */ #line 474 "../src/xkbcomp/parser.y" { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } -#line 2439 "xkbcommon@sha/parser.c" +#line 2294 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 71: + case 71: /* ArrayInit: OBRACKET OptKeySymList CBRACKET */ #line 478 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 2445 "xkbcommon@sha/parser.c" +#line 2300 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 72: + case 72: /* ArrayInit: OBRACKET ActionList CBRACKET */ #line 480 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateActionList((yyvsp[-1].exprList).head); } -#line 2451 "xkbcommon@sha/parser.c" +#line 2306 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 73: + case 73: /* GroupCompatDecl: GROUP Integer EQUALS Expr SEMI */ #line 484 "../src/xkbcomp/parser.y" { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].num), (yyvsp[-1].expr)); } -#line 2457 "xkbcommon@sha/parser.c" +#line 2312 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 74: + 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 2463 "xkbcommon@sha/parser.c" +#line 2318 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 75: + 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 2469 "xkbcommon@sha/parser.c" +#line 2324 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 76: + 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 2475 "xkbcommon@sha/parser.c" +#line 2330 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 77: + 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 2481 "xkbcommon@sha/parser.c" +#line 2336 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 78: + case 78: /* ShapeDecl: SHAPE String OBRACE OutlineList CBRACE SEMI */ #line 502 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2487 "xkbcommon@sha/parser.c" +#line 2342 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 79: + case 79: /* ShapeDecl: SHAPE String OBRACE CoordList CBRACE SEMI */ #line 504 "../src/xkbcomp/parser.y" { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } -#line 2493 "xkbcommon@sha/parser.c" +#line 2348 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 80: + case 80: /* SectionDecl: SECTION String OBRACE SectionBody CBRACE SEMI */ #line 508 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2499 "xkbcommon@sha/parser.c" +#line 2354 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 81: + case 81: /* SectionBody: SectionBody SectionBodyItem */ #line 511 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2505 "xkbcommon@sha/parser.c" +#line 2360 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 82: + case 82: /* SectionBody: SectionBodyItem */ #line 512 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2511 "xkbcommon@sha/parser.c" +#line 2366 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 83: + case 83: /* SectionBodyItem: ROW OBRACE RowBody CBRACE SEMI */ #line 516 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2517 "xkbcommon@sha/parser.c" +#line 2372 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 84: + case 84: /* SectionBodyItem: VarDecl */ #line 518 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -#line 2523 "xkbcommon@sha/parser.c" +#line 2378 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 85: + case 85: /* SectionBodyItem: DoodadDecl */ #line 520 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2529 "xkbcommon@sha/parser.c" +#line 2384 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 86: + case 86: /* SectionBodyItem: LedMapDecl */ #line 522 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } -#line 2535 "xkbcommon@sha/parser.c" +#line 2390 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 87: + case 87: /* SectionBodyItem: OverlayDecl */ #line 524 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2541 "xkbcommon@sha/parser.c" +#line 2396 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 88: + case 88: /* RowBody: RowBody RowBodyItem */ #line 527 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2547 "xkbcommon@sha/parser.c" +#line 2402 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 89: + case 89: /* RowBody: RowBodyItem */ #line 528 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2553 "xkbcommon@sha/parser.c" +#line 2408 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 90: + case 90: /* RowBodyItem: KEYS OBRACE Keys CBRACE SEMI */ #line 531 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2559 "xkbcommon@sha/parser.c" +#line 2414 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 91: + case 91: /* RowBodyItem: VarDecl */ #line 533 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } -#line 2565 "xkbcommon@sha/parser.c" +#line 2420 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 92: + case 92: /* Keys: Keys COMMA Key */ #line 536 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2571 "xkbcommon@sha/parser.c" +#line 2426 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 93: + case 93: /* Keys: Key */ #line 537 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2577 "xkbcommon@sha/parser.c" +#line 2432 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 94: + case 94: /* Key: KEYNAME */ #line 541 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2583 "xkbcommon@sha/parser.c" +#line 2438 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 95: + case 95: /* Key: OBRACE ExprList CBRACE */ #line 543 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[-1].exprList).head); (yyval.geom) = NULL; } -#line 2589 "xkbcommon@sha/parser.c" +#line 2444 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 96: + case 96: /* OverlayDecl: OVERLAY String OBRACE OverlayKeyList CBRACE SEMI */ #line 547 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2595 "xkbcommon@sha/parser.c" +#line 2450 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 97: + case 97: /* OverlayKeyList: OverlayKeyList COMMA OverlayKey */ #line 550 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2601 "xkbcommon@sha/parser.c" +#line 2456 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 98: + case 98: /* OverlayKeyList: OverlayKey */ #line 551 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2607 "xkbcommon@sha/parser.c" +#line 2462 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 99: + case 99: /* OverlayKey: KEYNAME EQUALS KEYNAME */ #line 554 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2613 "xkbcommon@sha/parser.c" +#line 2468 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 100: + case 100: /* OutlineList: OutlineList COMMA OutlineInList */ #line 558 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL;} -#line 2619 "xkbcommon@sha/parser.c" +#line 2474 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 101: + case 101: /* OutlineList: OutlineInList */ #line 560 "../src/xkbcomp/parser.y" { (yyval.geom) = NULL; } -#line 2625 "xkbcommon@sha/parser.c" +#line 2480 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 102: + case 102: /* OutlineInList: OBRACE CoordList CBRACE */ #line 564 "../src/xkbcomp/parser.y" { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -#line 2631 "xkbcommon@sha/parser.c" +#line 2486 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 103: + case 103: /* OutlineInList: Ident EQUALS OBRACE CoordList CBRACE */ #line 566 "../src/xkbcomp/parser.y" { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } -#line 2637 "xkbcommon@sha/parser.c" +#line 2492 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 104: + case 104: /* OutlineInList: Ident EQUALS Expr */ #line 568 "../src/xkbcomp/parser.y" { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } -#line 2643 "xkbcommon@sha/parser.c" +#line 2498 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 105: + case 105: /* CoordList: CoordList COMMA Coord */ #line 572 "../src/xkbcomp/parser.y" { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -#line 2649 "xkbcommon@sha/parser.c" +#line 2504 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 106: + case 106: /* CoordList: Coord */ #line 574 "../src/xkbcomp/parser.y" { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } -#line 2655 "xkbcommon@sha/parser.c" +#line 2510 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 107: + case 107: /* Coord: OBRACKET SignedNumber COMMA SignedNumber CBRACKET */ #line 578 "../src/xkbcomp/parser.y" { (yyval.expr) = NULL; } -#line 2661 "xkbcommon@sha/parser.c" +#line 2516 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 108: + 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 2667 "xkbcommon@sha/parser.c" +#line 2522 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 109: + case 109: /* DoodadType: TEXT */ #line 585 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2673 "xkbcommon@sha/parser.c" +#line 2528 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 110: + case 110: /* DoodadType: OUTLINE */ #line 586 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2679 "xkbcommon@sha/parser.c" +#line 2534 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 111: + case 111: /* DoodadType: SOLID */ #line 587 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2685 "xkbcommon@sha/parser.c" +#line 2540 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 112: + case 112: /* DoodadType: LOGO */ #line 588 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 2691 "xkbcommon@sha/parser.c" +#line 2546 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 113: + case 113: /* FieldSpec: Ident */ #line 591 "../src/xkbcomp/parser.y" { (yyval.atom) = (yyvsp[0].atom); } -#line 2697 "xkbcommon@sha/parser.c" +#line 2552 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 114: + case 114: /* FieldSpec: Element */ #line 592 "../src/xkbcomp/parser.y" { (yyval.atom) = (yyvsp[0].atom); } -#line 2703 "xkbcommon@sha/parser.c" +#line 2558 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 115: + case 115: /* Element: ACTION_TOK */ #line 596 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } -#line 2709 "xkbcommon@sha/parser.c" +#line 2564 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 116: + case 116: /* Element: INTERPRET */ #line 598 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } -#line 2715 "xkbcommon@sha/parser.c" +#line 2570 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 117: + case 117: /* Element: TYPE */ #line 600 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } -#line 2721 "xkbcommon@sha/parser.c" +#line 2576 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 118: + case 118: /* Element: KEY */ #line 602 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } -#line 2727 "xkbcommon@sha/parser.c" +#line 2582 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 119: + case 119: /* Element: GROUP */ #line 604 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } -#line 2733 "xkbcommon@sha/parser.c" +#line 2588 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 120: + case 120: /* Element: MODIFIER_MAP */ #line 606 "../src/xkbcomp/parser.y" {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} -#line 2739 "xkbcommon@sha/parser.c" +#line 2594 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 121: + case 121: /* Element: INDICATOR */ #line 608 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } -#line 2745 "xkbcommon@sha/parser.c" +#line 2600 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 122: + case 122: /* Element: SHAPE */ #line 610 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "shape"); } -#line 2751 "xkbcommon@sha/parser.c" +#line 2606 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 123: + case 123: /* Element: ROW */ #line 612 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "row"); } -#line 2757 "xkbcommon@sha/parser.c" +#line 2612 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 124: + case 124: /* Element: SECTION */ #line 614 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "section"); } -#line 2763 "xkbcommon@sha/parser.c" +#line 2618 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 125: + case 125: /* Element: TEXT */ #line 616 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "text"); } -#line 2769 "xkbcommon@sha/parser.c" +#line 2624 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 126: + case 126: /* OptMergeMode: MergeMode */ #line 619 "../src/xkbcomp/parser.y" { (yyval.merge) = (yyvsp[0].merge); } -#line 2775 "xkbcommon@sha/parser.c" +#line 2630 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 127: + case 127: /* OptMergeMode: %empty */ #line 620 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_DEFAULT; } -#line 2781 "xkbcommon@sha/parser.c" +#line 2636 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 128: + case 128: /* MergeMode: INCLUDE */ #line 623 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_DEFAULT; } -#line 2787 "xkbcommon@sha/parser.c" +#line 2642 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 129: + case 129: /* MergeMode: AUGMENT */ #line 624 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_AUGMENT; } -#line 2793 "xkbcommon@sha/parser.c" +#line 2648 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 130: + case 130: /* MergeMode: OVERRIDE */ #line 625 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_OVERRIDE; } -#line 2799 "xkbcommon@sha/parser.c" +#line 2654 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 131: + case 131: /* MergeMode: REPLACE */ #line 626 "../src/xkbcomp/parser.y" { (yyval.merge) = MERGE_REPLACE; } -#line 2805 "xkbcommon@sha/parser.c" +#line 2660 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 132: + case 132: /* MergeMode: ALTERNATE */ #line 628 "../src/xkbcomp/parser.y" { /* @@ -2813,246 +2668,246 @@ yyreduce: */ (yyval.merge) = MERGE_DEFAULT; } -#line 2817 "xkbcommon@sha/parser.c" +#line 2672 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 133: + case 133: /* OptExprList: ExprList */ #line 637 "../src/xkbcomp/parser.y" { (yyval.exprList) = (yyvsp[0].exprList); } -#line 2823 "xkbcommon@sha/parser.c" +#line 2678 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 134: + case 134: /* OptExprList: %empty */ #line 638 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = NULL; } -#line 2829 "xkbcommon@sha/parser.c" +#line 2684 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 135: + 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 2835 "xkbcommon@sha/parser.c" +#line 2690 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 136: + case 136: /* ExprList: Expr */ #line 644 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } -#line 2841 "xkbcommon@sha/parser.c" +#line 2696 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 137: + case 137: /* Expr: Expr DIVIDE Expr */ #line 648 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2847 "xkbcommon@sha/parser.c" +#line 2702 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 138: + case 138: /* Expr: Expr PLUS Expr */ #line 650 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2853 "xkbcommon@sha/parser.c" +#line 2708 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 139: + case 139: /* Expr: Expr MINUS Expr */ #line 652 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2859 "xkbcommon@sha/parser.c" +#line 2714 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 140: + case 140: /* Expr: Expr TIMES Expr */ #line 654 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2865 "xkbcommon@sha/parser.c" +#line 2720 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 141: + case 141: /* Expr: Lhs EQUALS Expr */ #line 656 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2871 "xkbcommon@sha/parser.c" +#line 2726 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 142: + case 142: /* Expr: Term */ #line 658 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2877 "xkbcommon@sha/parser.c" +#line 2732 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 143: + 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 2883 "xkbcommon@sha/parser.c" +#line 2738 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 144: + 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 2889 "xkbcommon@sha/parser.c" +#line 2744 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 145: + case 145: /* Term: EXCLAM Term */ #line 666 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } -#line 2895 "xkbcommon@sha/parser.c" +#line 2750 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 146: + 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 2901 "xkbcommon@sha/parser.c" +#line 2756 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 147: + case 147: /* Term: Lhs */ #line 670 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2907 "xkbcommon@sha/parser.c" +#line 2762 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 148: + case 148: /* Term: FieldSpec OPAREN OptExprList CPAREN */ #line 672 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } -#line 2913 "xkbcommon@sha/parser.c" +#line 2768 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 149: + case 149: /* Term: Terminal */ #line 674 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2919 "xkbcommon@sha/parser.c" +#line 2774 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 150: + case 150: /* Term: OPAREN Expr CPAREN */ #line 676 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 2925 "xkbcommon@sha/parser.c" +#line 2780 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 151: + 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 2931 "xkbcommon@sha/parser.c" +#line 2786 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 152: + case 152: /* ActionList: Action */ #line 682 "../src/xkbcomp/parser.y" { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } -#line 2937 "xkbcommon@sha/parser.c" +#line 2792 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 153: + case 153: /* Action: FieldSpec OPAREN OptExprList CPAREN */ #line 686 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } -#line 2943 "xkbcommon@sha/parser.c" +#line 2798 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 154: + case 154: /* Lhs: FieldSpec */ #line 690 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } -#line 2949 "xkbcommon@sha/parser.c" +#line 2804 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 155: + case 155: /* Lhs: FieldSpec DOT FieldSpec */ #line 692 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } -#line 2955 "xkbcommon@sha/parser.c" +#line 2810 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 156: + 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 2961 "xkbcommon@sha/parser.c" +#line 2816 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 157: + 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 2967 "xkbcommon@sha/parser.c" +#line 2822 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 158: + case 158: /* Terminal: String */ #line 700 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } -#line 2973 "xkbcommon@sha/parser.c" +#line 2828 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 159: + case 159: /* Terminal: Integer */ #line 702 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateInteger((yyvsp[0].num)); } -#line 2979 "xkbcommon@sha/parser.c" +#line 2834 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 160: + case 160: /* Terminal: Float */ #line 704 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateFloat(/* Discard $1 */); } -#line 2985 "xkbcommon@sha/parser.c" +#line 2840 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 161: + case 161: /* Terminal: KEYNAME */ #line 706 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } -#line 2991 "xkbcommon@sha/parser.c" +#line 2846 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 162: + case 162: /* OptKeySymList: KeySymList */ #line 709 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2997 "xkbcommon@sha/parser.c" +#line 2852 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 163: + case 163: /* OptKeySymList: %empty */ #line 710 "../src/xkbcomp/parser.y" { (yyval.expr) = NULL; } -#line 3003 "xkbcommon@sha/parser.c" +#line 2858 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 164: + case 164: /* KeySymList: KeySymList COMMA KeySym */ #line 714 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } -#line 3009 "xkbcommon@sha/parser.c" +#line 2864 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 165: + case 165: /* KeySymList: KeySymList COMMA KeySyms */ #line 716 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3015 "xkbcommon@sha/parser.c" +#line 2870 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 166: + case 166: /* KeySymList: KeySym */ #line 718 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } -#line 3021 "xkbcommon@sha/parser.c" +#line 2876 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 167: + case 167: /* KeySymList: KeySyms */ #line 720 "../src/xkbcomp/parser.y" { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } -#line 3027 "xkbcommon@sha/parser.c" +#line 2882 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 168: + case 168: /* KeySyms: OBRACE KeySymList CBRACE */ #line 724 "../src/xkbcomp/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 3033 "xkbcommon@sha/parser.c" +#line 2888 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 169: + case 169: /* KeySym: IDENT */ #line 728 "../src/xkbcomp/parser.y" { if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3043 "xkbcommon@sha/parser.c" +#line 2898 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 170: + case 170: /* KeySym: SECTION */ #line 733 "../src/xkbcomp/parser.y" { (yyval.keysym) = XKB_KEY_section; } -#line 3049 "xkbcommon@sha/parser.c" +#line 2904 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 171: + case 171: /* KeySym: Integer */ #line 735 "../src/xkbcomp/parser.y" { if ((yyvsp[0].num) < 0) { - parser_warn(param, "unrecognized keysym \"%" PRId64 "\"", (yyvsp[0].num)); + parser_warn(param, "unrecognized keysym \"%"PRId64"\"", (yyvsp[0].num)); (yyval.keysym) = XKB_KEY_NoSymbol; } else if ((yyvsp[0].num) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ @@ -3067,89 +2922,89 @@ yyreduce: } } } -#line 3071 "xkbcommon@sha/parser.c" +#line 2926 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 172: + case 172: /* SignedNumber: MINUS Number */ #line 754 "../src/xkbcomp/parser.y" { (yyval.num) = -(yyvsp[0].num); } -#line 3077 "xkbcommon@sha/parser.c" +#line 2932 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 173: + case 173: /* SignedNumber: Number */ #line 755 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 3083 "xkbcommon@sha/parser.c" +#line 2938 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 174: + case 174: /* Number: FLOAT */ #line 758 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 3089 "xkbcommon@sha/parser.c" +#line 2944 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 175: + case 175: /* Number: INTEGER */ #line 759 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 3095 "xkbcommon@sha/parser.c" +#line 2950 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 176: + case 176: /* Float: FLOAT */ #line 762 "../src/xkbcomp/parser.y" { (yyval.num) = 0; } -#line 3101 "xkbcommon@sha/parser.c" +#line 2956 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 177: + case 177: /* Integer: INTEGER */ #line 765 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 3107 "xkbcommon@sha/parser.c" +#line 2962 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 178: + case 178: /* KeyCode: INTEGER */ #line 768 "../src/xkbcomp/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 3113 "xkbcommon@sha/parser.c" +#line 2968 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 179: + case 179: /* Ident: IDENT */ #line 771 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } -#line 3119 "xkbcommon@sha/parser.c" +#line 2974 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 180: + case 180: /* Ident: DEFAULT */ #line 772 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } -#line 3125 "xkbcommon@sha/parser.c" +#line 2980 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 181: + case 181: /* String: STRING */ #line 775 "../src/xkbcomp/parser.y" { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } -#line 3131 "xkbcommon@sha/parser.c" +#line 2986 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 182: + case 182: /* OptMapName: MapName */ #line 778 "../src/xkbcomp/parser.y" { (yyval.str) = (yyvsp[0].str); } -#line 3137 "xkbcommon@sha/parser.c" +#line 2992 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 183: + case 183: /* OptMapName: %empty */ #line 779 "../src/xkbcomp/parser.y" { (yyval.str) = NULL; } -#line 3143 "xkbcommon@sha/parser.c" +#line 2998 "libxkbcommon.so.0.0.0.p/parser.c" break; - case 184: + case 184: /* MapName: STRING */ #line 782 "../src/xkbcomp/parser.y" { (yyval.str) = (yyvsp[0].str); } -#line 3149 "xkbcommon@sha/parser.c" +#line 3004 "libxkbcommon.so.0.0.0.p/parser.c" break; -#line 3153 "xkbcommon@sha/parser.c" +#line 3008 "libxkbcommon.so.0.0.0.p/parser.c" default: break; } @@ -3309,13 +3164,13 @@ yyabortlab: yyexhaustedlab: yyerror (param, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { diff --git a/src/xkbcomp/parser.h b/src/xkbcomp/parser.h index e158fa4..3d9dcaf 100644 --- a/src/xkbcomp/parser.h +++ b/src/xkbcomp/parser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.3. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison interface for Yacc-like parsers in C @@ -35,8 +35,8 @@ especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ -#ifndef YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED -# define YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED +#ifndef YY__XKBCOMMON_LIBXKBCOMMON_SO_0_0_0_P_PARSER_H_INCLUDED +# define YY__XKBCOMMON_LIBXKBCOMMON_SO_0_0_0_P_PARSER_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -154,7 +154,7 @@ union YYSTYPE XkbFile *file; struct { XkbFile *head; XkbFile *last; } fileList; -#line 158 "xkbcommon@sha/parser.h" +#line 158 "libxkbcommon.so.0.0.0.p/parser.h" }; typedef union YYSTYPE YYSTYPE; @@ -166,4 +166,4 @@ typedef union YYSTYPE YYSTYPE; int _xkbcommon_parse (struct parser_param *param); -#endif /* !YY__XKBCOMMON_XKBCOMMON_SHA_PARSER_H_INCLUDED */ +#endif /* !YY__XKBCOMMON_LIBXKBCOMMON_SO_0_0_0_P_PARSER_H_INCLUDED */ diff --git a/src/xkbcomp/parser.y b/src/xkbcomp/parser.y index b1e4188..6dcb523 100644 --- a/src/xkbcomp/parser.y +++ b/src/xkbcomp/parser.y @@ -734,7 +734,7 @@ KeySym : IDENT | Integer { if ($1 < 0) { - parser_warn(param, "unrecognized keysym \"%" PRId64 "\"", $1); + parser_warn(param, "unrecognized keysym \"%"PRId64"\"", $1); $$ = XKB_KEY_NoSymbol; } else if ($1 < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ diff --git a/test/data/keycodes/evdev b/test/data/keycodes/evdev index 624ac68..d41799d 100644 --- a/test/data/keycodes/evdev +++ b/test/data/keycodes/evdev @@ -281,6 +281,13 @@ default xkb_keycodes "evdev" { <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243 <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244 <I253> = 253; // #define KEY_DISPLAY_OFF 245 + <I254> = 254; // #define KEY_WWAN 246 + <I255> = 255; // #define KEY_RFKILL 247 + + <I372> = 372; // #define KEY_FAVORITES 364 + <I382> = 382; // #define KEY_KEYBOARD 374 + <I569> = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561 + <I380> = 380; // #define KEY_FULL_SCREEN 372 // Fake keycodes for virtual keys <LVL3> = 92; @@ -307,8 +314,3 @@ default xkb_keycodes "evdev" { // For Brazilian ABNT2 alias <KPPT> = <I129>; }; - -// PC98 -xkb_keycodes "pc98" { - include "evdev(evdev)" -}; diff --git a/test/data/keymaps/quartz.xkb b/test/data/keymaps/quartz.xkb index c976fce..f932190 100644 --- a/test/data/keymaps/quartz.xkb +++ b/test/data/keymaps/quartz.xkb @@ -1136,4 +1136,4 @@ xkb_geometry "pc(pc104)" { }; }; -};
\ No newline at end of file +}; diff --git a/test/data/rules/base b/test/data/rules/base index 11e1b56..71aaa91 100644 --- a/test/data/rules/base +++ b/test/data/rules/base @@ -1,4 +1,5 @@ -// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part +// // // Rules for resolving XKB components for use with XFree86 // Copyright 1996 by Joseph Moss @@ -13,20 +14,17 @@ // ori pk ru scc sy syr tel th tj tam ua uz // PC models -! $pcmodels = pc101 pc102 pc104 pc105 +! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 // Jolla devices and keyboards ! $jollamodels = jollasbj // Microsoft models (using MS geometry) -! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface // Nokia devices and keyboards ! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 -// PC geometries - they have special geometry but symbols are mostly pc105 -! $pcgeometries = latitude - // TypeMatrix geometries ! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 @@ -85,7 +83,6 @@ ! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat -! $htcdreamlayouts = us it de ! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \ airkey \ @@ -104,7 +101,7 @@ genius geniuscomfy2 \ gyration honeywell_euroboard \ hp250x hp5xx hp500fa hpdv5 \ - hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \ + hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx \ ibm_spacesaver ipaq inspiron intel \ logiaccess logicda logicink \ logiex110 logiclx300 \ @@ -124,9 +121,9 @@ silvercrest \ sk1300 sk2500 sk6200 sk7100 \ sven sven303 symplon \ + teck227 teck229 \ toshiba_s3000 trust trustda \ unitekkb1925 yahoo \ - teck227 teck229 \ apex300 ! $inetmediakbds = acer_ferrari4k acer_laptop btc5090 btc9019u cherryblueb \ @@ -188,7 +185,6 @@ omnikey101 = northgate(omnikey101) sanwaskbkg3 = sanwa(sanwaskbkg3) $pcmodels = pc(%m) - $pcgeometries = pc(%m) everex = everex(STEPnote) thinkpad = thinkpad(intl) thinkpad60 = thinkpad(60) @@ -382,86 +378,85 @@ ws007sh * = pc+sharp_vndr/ws007sh(basic) ws011sh * = pc+sharp_vndr/ws011sh(basic) ws020sh * = pc+sharp_vndr/ws020sh(basic) - htcdream $htcdreamlayouts = %l(htcdream) * $nonlatin = pc+us+%l%(v):2 * * = pc+%l%(v) -! model layout[1] = symbols - * ar = pc+ara%(v[1]) - * ben = pc+in(ben) - * bs = pc+ba%(v[1]) - * cs = pc+rs%(v[1]) - * cz_qwerty = pc+cz(qwerty) - * dev = pc+in(deva) - * dvorak = pc+us(dvorak) - * dzdwi = pc+bt%(v[1]) - * el = pc+gr%(v[1]) - * en_US = pc+latin%(v[1]) - * guj = pc+in(guj) - * gur = pc+in(guru) - * iu = pc+ca(ike) - * lo = pc+la%(v[1]) - * kan = pc+in(kan) - * mi = pc+mao%(v[1]) - * ogham = pc+ie(ogam) - * ori = pc+ie(ori) - * sapmi = pc+no(smi) - * sr = pc+srp%(v[1]) - * syr = pc+sy(syc) - * tel = pc+in(tel) - * tml = pc+in(tam) - * yu = pc+srp%(v[1]) - * fr-latin9 = pc+fr(latin9) - * us_intl = pc+us(alt-intl) - * ben(basic) = pc+in(ben) - * ben(probhat) = pc+in(ben_probhat) - * dev(basic) = pc+in(deva) - * dvorak($dvoraklayouts) = pc+%v(dvorak) - * dvorak(basic) = pc+us(dvorak) - * dvorak(pl_basic) = pc+pl(dvorak) - * dvorak(pl) = pc+pl(dvorak_quotes) - * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) - * dzdwi(basic) = pc+bt(basic) - * fi(basic) = pc+fi(classic) - * ge(azerty_tskapo) = pc+fr(geo) - * guj(basic) = pc+in(guj) - * gur(basic) = pc+in(guru) - * ie(laptop) = pc+ie(basic) - * ie(CloGaelachLaptop) = pc+ie(CloGaelach) - * in(urd) = pc+in(urd-phonetic) - * iu(basic) = pc+ca(ike) - * lo(basic) = pc+la(basic) - * kan(basic) = pc+in(kan) - * mal(basic) = pc+in(mal) - * mal(mlplusnum) = pc+in(mal) - * ogham(basic) = pc+ie(ogam) - * ogham(laptop) = pc+ie(ogam) - * ogham(is434) = pc+ie(ogam_is434) - * ogham(is434laptop) = pc+ie(ogam_is434) - * ori(basic) = pc+in(ori) - * ro(de) = pc+ro(winkeys) - * ro(us) = pc+ro(std) - * ro(academic) = pc+ro(std) - * ro(std_comma) = pc+ro(std) - * ro(comma) = pc+ro(basic) - * ru(os) = pc+ru(os_legacy) - * pk(urd) = pc+pk(urd-phonetic) - * sapmi(basic) = pc+no(smi) - * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) - * sapmi(sefi) = pc+fi(smi) - * sin(phonetic-static) = pc+in(sin_phonetic) - * syr(basic) = pc+sy(syc) - * syr(phonetic) = pc+sy(syc_phonetic) - * tam(INSCRIPT) = pc+in(tam) - * tam(UNI) = pc+in(tam_unicode) - * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) - * tam(TAB) = pc+in(tam_TAB) - * tam(TSCII) = pc+in(tam_TSCII) - * tel(basic) = pc+in(tel) - * yu(basic) = pc+srp(latin) - * yu(unicode) = pc+srp(latinunicode) - * yu(yz) = pc+srp(latinyz) - * yu(unicodeyz) = pc+srp(latinunicodeyz) +! model layout[1] = symbols + * ar = pc+ara%(v[1]) + * ben = pc+in(ben) + * bs = pc+ba%(v[1]) + * cs = pc+rs%(v[1]) + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt%(v[1]) + * el = pc+gr%(v[1]) + * en_US = pc+latin%(v[1]) + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la%(v[1]) + * kan = pc+in(kan) + * mi = pc+mao%(v[1]) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp%(v[1]) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp%(v[1]) + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) @@ -479,55 +474,55 @@ * * = pc+%l[1]%(v[1]) ! model layout[1] variant[1] = symbols - * ben basic = pc+in(ben) - * ben probhat = pc+in(ben_probhat) - * dev basic = pc+in(deva) - * dvorak $dvoraklayouts = pc+%v(dvorak) - * dvorak basic = pc+us(dvorak) - * dvorak pl_basic = pc+pl(dvorak) - * dvorak pl = pc+pl(dvorak_quotes) - * dvorak pl_altquotes = pc+pl(dvorak_altquotes) - * dzdwi basic = pc+bt(basic) - * fi basic = pc+fi(classic) - * ge azerty_tskapo = pc+fr(geo) - * guj basic = pc+in(guj) - * gur basic = pc+in(guru) - * ie laptop = pc+ie(basic) - * ie CloGaelachLaptop = pc+ie(CloGaelach) - * in urd = pc+in(urd-phonetic) - * iu basic = pc+ca(ike) - * lo basic = pc+la(basic) - * kan basic = pc+in(kan) - * mal basic = pc+in(mal) - * mal mlplusnum = pc+in(mal) - * ogham basic = pc+ie(ogam) - * ogham laptop = pc+ie(ogam) - * ogham is434 = pc+ie(ogam_is434) - * ogham is434laptop = pc+ie(ogam_is434) - * ori basic = pc+in(ori) - * ro de = pc+ro(winkeys) - * ro us = pc+ro(std) - * ro academic = pc+ro(std) - * ro std_comma = pc+ro(std) - * ro comma = pc+ro(basic) - * ru os = pc+ru(os_legacy) - * pk urd = pc+pk(urd-phonetic) - * sapmi basic = pc+no(smi) - * sapmi nodeadkeys = pc+no(smi_nodeadkeys) - * sapmi sefi = pc+fi(smi) - * sin phonetic-static = pc+in(sin_phonetic) - * syr basic = pc+sy(syc) - * syr phonetic = pc+sy(syc_phonetic) - * tam INSCRIPT = pc+in(tam) - * tam UNI = pc+in(tam_unicode) - * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) - * tam TAB = pc+in(tam_TAB) - * tam TSCII = pc+in(tam_TSCII) - * tel basic = pc+in(tel) - * yu basic = pc+srp(latin) - * yu unicode = pc+srp(latinunicode) - * yu yz = pc+srp(latinyz) - * yu unicodeyz = pc+srp(latinunicodeyz) + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) ! model layout[2] = symbols * ar = +ara%(v[2]):2 @@ -556,55 +551,55 @@ * yu = +srp%(v[2]):2 * fr-latin9 = +fr(latin9):2 * us_intl = +us(alt-intl):2 - * ben(basic) = +in(ben):2 - * ben(probhat) = +in(ben_probhat):2 - * dev(basic) = +in(deva):2 - * dvorak($dvoraklayouts) = +%v(dvorak):2 - * dvorak(basic) = +us(dvorak):2 - * dvorak(pl_basic) = +pl(dvorak):2 - * dvorak(pl) = +pl(dvorak_quotes):2 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 - * dzdwi(basic) = +bt(basic):2 - * fi(basic) = +fi(classic):2 - * ge(azerty_tskapo) = +fr(geo):2 - * guj(basic) = +in(guj):2 - * gur(basic) = +in(guru):2 - * ie(laptop) = +ie(basic):2 - * ie(CloGaelachLaptop) = +ie(CloGaelach):2 - * in(urd) = +in(urd-phonetic):2 - * iu(basic) = +ca(ike):2 - * lo(basic) = +la(basic):2 - * kan(basic) = +in(kan):2 - * mal(basic) = +in(mal):2 - * mal(mlplusnum) = +in(mal):2 - * ogham(basic) = +ie(ogam):2 - * ogham(laptop) = +ie(ogam):2 - * ogham(is434) = +ie(ogam_is434):2 - * ogham(is434laptop) = +ie(ogam_is434):2 - * ori(basic) = +in(ori):2 - * ro(de) = +ro(winkeys):2 - * ro(us) = +ro(std):2 - * ro(academic) = +ro(std):2 - * ro(std_comma) = +ro(std):2 - * ro(comma) = +ro(basic):2 - * ru(os) = +ru(os_legacy):2 - * pk(urd) = +pk(urd-phonetic):2 - * sapmi(basic) = +no(smi):2 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 - * sapmi(sefi) = +fi(smi):2 - * sin(phonetic-static) = +in(sin_phonetic):2 - * syr(basic) = +sy(syc):2 - * syr(phonetic) = +sy(syc_phonetic):2 - * tam(INSCRIPT) = +in(tam):2 - * tam(UNI) = +in(tam_unicode):2 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 - * tam(TAB) = +in(tam_TAB):2 - * tam(TSCII) = +in(tam_TSCII):2 - * tel(basic) = +in(tel):2 - * yu(basic) = +srp(latin):2 - * yu(unicode) = +srp(latinunicode):2 - * yu(yz) = +srp(latinyz):2 - * yu(unicodeyz) = +srp(latinunicodeyz):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * dvorak($dvoraklayouts) = +%v(dvorak):2 + * dvorak(basic) = +us(dvorak):2 + * dvorak(pl_basic) = +pl(dvorak):2 + * dvorak(pl) = +pl(dvorak_quotes):2 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 + * dzdwi(basic) = +bt(basic):2 + * fi(basic) = +fi(classic):2 + * ge(azerty_tskapo) = +fr(geo):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * ie(laptop) = +ie(basic):2 + * ie(CloGaelachLaptop) = +ie(CloGaelach):2 + * in(urd) = +in(urd-phonetic):2 + * iu(basic) = +ca(ike):2 + * lo(basic) = +la(basic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * mal(mlplusnum) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(laptop) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ogham(is434laptop) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * sapmi(basic) = +no(smi):2 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 + * sapmi(sefi) = +fi(smi):2 + * sin(phonetic-static) = +in(sin_phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tam(INSCRIPT) = +in(tam):2 + * tam(UNI) = +in(tam_unicode):2 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 + * tam(TAB) = +in(tam_TAB):2 + * tam(TSCII) = +in(tam_TSCII):2 + * tel(basic) = +in(tel):2 + * yu(basic) = +srp(latin):2 + * yu(unicode) = +srp(latinunicode):2 + * yu(yz) = +srp(latinyz):2 + * yu(unicodeyz) = +srp(latinunicodeyz):2 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2 nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2 $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 @@ -637,55 +632,55 @@ * yu = +srp%(v[3]):3 * fr-latin9 = +fr(latin9):3 * us_intl = +us(alt-intl):3 - * ben(basic) = +in(ben):3 - * ben(probhat) = +in(ben_probhat):3 - * dev(basic) = +in(deva):3 - * dvorak($dvoraklayouts) = +%v(dvorak):3 - * dvorak(basic) = +us(dvorak):3 - * dvorak(pl_basic) = +pl(dvorak):3 - * dvorak(pl) = +pl(dvorak_quotes):3 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 - * dzdwi(basic) = +bt(basic):3 - * fi(basic) = +fi(classic):3 - * ge(azerty_tskapo) = +fr(geo):3 - * guj(basic) = +in(guj):3 - * gur(basic) = +in(guru):3 - * ie(laptop) = +ie(basic):3 - * ie(CloGaelachLaptop) = +ie(CloGaelach):3 - * in(urd) = +in(urd-phonetic):3 - * iu(basic) = +ca(ike):3 - * lo(basic) = +la(basic):3 - * kan(basic) = +in(kan):3 - * mal(basic) = +in(mal):3 - * mal(mlplusnum) = +in(mal):3 - * ogham(basic) = +ie(ogam):3 - * ogham(laptop) = +ie(ogam):3 - * ogham(is434) = +ie(ogam_is434):3 - * ogham(is434laptop) = +ie(ogam_is434):3 - * ori(basic) = +in(ori):3 - * ro(de) = +ro(winkeys):3 - * ro(us) = +ro(std):3 - * ro(academic) = +ro(std):3 - * ro(std_comma) = +ro(std):3 - * ro(comma) = +ro(basic):3 - * ru(os) = +ru(os_legacy):3 - * pk(urd) = +pk(urd-phonetic):3 - * sapmi(basic) = +no(smi):3 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 - * sapmi(sefi) = +fi(smi):3 - * sin(phonetic-static) = +in(sin_phonetic):3 - * syr(basic) = +sy(syc):3 - * syr(phonetic) = +sy(syc_phonetic):3 - * tam(INSCRIPT) = +in(tam):3 - * tam(UNI) = +in(tam_unicode):3 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 - * tam(TAB) = +in(tam_TAB):3 - * tam(TSCII) = +in(tam_TSCII):3 - * tel(basic) = +in(tel):3 - * yu(basic) = +srp(latin):3 - * yu(unicode) = +srp(latinunicode):3 - * yu(yz) = +srp(latinyz):3 - * yu(unicodeyz) = +srp(latinunicodeyz):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * dvorak($dvoraklayouts) = +%v(dvorak):3 + * dvorak(basic) = +us(dvorak):3 + * dvorak(pl_basic) = +pl(dvorak):3 + * dvorak(pl) = +pl(dvorak_quotes):3 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 + * dzdwi(basic) = +bt(basic):3 + * fi(basic) = +fi(classic):3 + * ge(azerty_tskapo) = +fr(geo):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * ie(laptop) = +ie(basic):3 + * ie(CloGaelachLaptop) = +ie(CloGaelach):3 + * in(urd) = +in(urd-phonetic):3 + * iu(basic) = +ca(ike):3 + * lo(basic) = +la(basic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * mal(mlplusnum) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(laptop) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ogham(is434laptop) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * sapmi(basic) = +no(smi):3 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 + * sapmi(sefi) = +fi(smi):3 + * sin(phonetic-static) = +in(sin_phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tam(INSCRIPT) = +in(tam):3 + * tam(UNI) = +in(tam_unicode):3 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 + * tam(TAB) = +in(tam_TAB):3 + * tam(TSCII) = +in(tam_TSCII):3 + * tel(basic) = +in(tel):3 + * yu(basic) = +srp(latin):3 + * yu(unicode) = +srp(latinunicode):3 + * yu(yz) = +srp(latinyz):3 + * yu(unicodeyz) = +srp(latinunicodeyz):3 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3 nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3 $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 @@ -718,55 +713,55 @@ * yu = +srp%(v[4]):4 * fr-latin9 = +fr(latin9):4 * us_intl = +us(alt-intl):4 - * ben(basic) = +in(ben):4 - * ben(probhat) = +in(ben_probhat):4 - * dev(basic) = +in(deva):4 - * dvorak($dvoraklayouts) = +%v(dvorak):4 - * dvorak(basic) = +us(dvorak):4 - * dvorak(pl_basic) = +pl(dvorak):4 - * dvorak(pl) = +pl(dvorak_quotes):4 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 - * dzdwi(basic) = +bt(basic):4 - * fi(basic) = +fi(classic):4 - * ge(azerty_tskapo) = +fr(geo):4 - * guj(basic) = +in(guj):4 - * gur(basic) = +in(guru):4 - * ie(laptop) = +ie(basic):4 - * ie(CloGaelachLaptop) = +ie(CloGaelach):4 - * in(urd) = +in(urd-phonetic):4 - * iu(basic) = +ca(ike):4 - * lo(basic) = +la(basic):4 - * kan(basic) = +in(kan):4 - * mal(basic) = +in(mal):4 - * mal(mlplusnum) = +in(mal):4 - * ogham(basic) = +ie(ogam):4 - * ogham(laptop) = +ie(ogam):4 - * ogham(is434) = +ie(ogam_is434):4 - * ogham(is434laptop) = +ie(ogam_is434):4 - * ori(basic) = +in(ori):4 - * ro(de) = +ro(winkeys):4 - * ro(us) = +ro(std):4 - * ro(academic) = +ro(std):4 - * ro(std_comma) = +ro(std):4 - * ro(comma) = +ro(basic):4 - * ru(os) = +ru(os_legacy):4 - * pk(urd) = +pk(urd-phonetic):4 - * sapmi(basic) = +no(smi):4 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 - * sapmi(sefi) = +fi(smi):4 - * sin(phonetic-static) = +in(sin_phonetic):4 - * syr(basic) = +sy(syc):4 - * syr(phonetic) = +sy(syc_phonetic):4 - * tam(INSCRIPT) = +in(tam):4 - * tam(UNI) = +in(tam_unicode):4 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 - * tam(TAB) = +in(tam_TAB):4 - * tam(TSCII) = +in(tam_TSCII):4 - * tel(basic) = +in(tel):4 - * yu(basic) = +srp(latin):4 - * yu(unicode) = +srp(latinunicode):4 - * yu(yz) = +srp(latinyz):4 - * yu(unicodeyz) = +srp(latinunicodeyz):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * dvorak($dvoraklayouts) = +%v(dvorak):4 + * dvorak(basic) = +us(dvorak):4 + * dvorak(pl_basic) = +pl(dvorak):4 + * dvorak(pl) = +pl(dvorak_quotes):4 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 + * dzdwi(basic) = +bt(basic):4 + * fi(basic) = +fi(classic):4 + * ge(azerty_tskapo) = +fr(geo):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * ie(laptop) = +ie(basic):4 + * ie(CloGaelachLaptop) = +ie(CloGaelach):4 + * in(urd) = +in(urd-phonetic):4 + * iu(basic) = +ca(ike):4 + * lo(basic) = +la(basic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * mal(mlplusnum) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(laptop) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ogham(is434laptop) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * sapmi(basic) = +no(smi):4 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 + * sapmi(sefi) = +fi(smi):4 + * sin(phonetic-static) = +in(sin_phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tam(INSCRIPT) = +in(tam):4 + * tam(UNI) = +in(tam_unicode):4 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 + * tam(TAB) = +in(tam_TAB):4 + * tam(TSCII) = +in(tam_TSCII):4 + * tel(basic) = +in(tel):4 + * yu(basic) = +srp(latin):4 + * yu(unicode) = +srp(latinunicode):4 + * yu(yz) = +srp(latinyz):4 + * yu(unicodeyz) = +srp(latinunicodeyz):4 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4 nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4 $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 @@ -1053,26 +1048,32 @@ ! layout option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle) * misc:typo = +typo(base) + * misc:apl = +apl(level3) ! layout[1] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1 * misc:typo = +typo(base):1 + * misc:apl = +apl(level3):1 ! layout[2] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2 * misc:typo = +typo(base):2 + * misc:apl = +apl(level3):2 ! layout[3] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3 * misc:typo = +typo(base):3 + * misc:apl = +apl(level3):3 ! layout[4] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4 * misc:typo = +typo(base):4 + * misc:apl = +apl(level3):4 ! option = symbols grp:shift_toggle = +group(shifts_toggle) altwin:menu = +altwin(menu) + altwin:menu_win = +altwin(menu_win) altwin:meta_alt = +altwin(meta_alt) altwin:alt_win = +altwin(alt_win) altwin:ctrl_win = +altwin(ctrl_win) @@ -1139,11 +1140,14 @@ lv3:lwin_switch = +level3(lwin_switch) lv3:rwin_switch = +level3(rwin_switch) lv3:enter_switch = +level3(enter_switch) + lv3:4_switch_isolated = +level3(4_switch_isolated) + lv3:9_switch_isolated = +level3(9_switch_isolated) caps:capslock = +capslock(capslock) caps:numlock = +capslock(numlock) caps:shiftlock = +capslock(shiftlock) caps:swapescape = +capslock(swapescape) caps:escape = +capslock(escape) + caps:escape_shifted_capslock = +capslock(escape_shifted_capslock) caps:backspace = +capslock(backspace) caps:super = +capslock(super) caps:hyper = +capslock(hyper) @@ -1153,6 +1157,8 @@ ctrl:nocaps = +ctrl(nocaps) ctrl:lctrl_meta = +ctrl(lctrl_meta) ctrl:swapcaps = +ctrl(swapcaps) + ctrl:swapcaps_hyper = +ctrl(swapcaps_hyper) + ctrl:swapcaps_and_switch_layout = +ctrl(swapcaps_and_switch_layout) ctrl:ac_ctrl = +ctrl(ac_ctrl) ctrl:aa_ctrl = +ctrl(aa_ctrl) ctrl:rctrl_ralt = +ctrl(rctrl_ralt) @@ -1202,10 +1208,20 @@ nbsp:level4 = +nbsp(level4) nbsp:level4n = +nbsp(level4n) nbsp:level4nl = +nbsp(level4nl) + nbsp:zwnj2 = +nbsp(zwnj2) + nbsp:zwnj2zwj3 = +nbsp(zwnj2zwj3) + nbsp:zwnj2zwj3nb4 = +nbsp(zwnj2zwj3nb4) + nbsp:zwnj2nb3 = +nbsp(zwnj2nb3) + nbsp:zwnj2nb3s = +nbsp(zwnj2nb3s) + nbsp:zwnj2nb3zwj4 = +nbsp(zwnj2nb3zwj4) + nbsp:zwnj2nb3nnb4 = +nbsp(zwnj2nb3nnb4) + nbsp:zwnj3zwj4 = +nbsp(zwnj3zwj4) japan:nicola_f_bs = +jp(nicola_f_bs) japan:hztg_escape = +jp(hztg_escape) - korean:ralt_rctrl = +kr(ralt_hangul)+kr(rctrl_hanja) - korean:rctrl_ralt = +kr(rctrl_hangul)+kr(ralt_hanja) + korean:ralt_hangul = +kr(ralt_hangul) + korean:rctrl_hangul = +kr(rctrl_hangul) + korean:ralt_hanja = +kr(ralt_hanja) + korean:rctrl_hanja = +kr(rctrl_hanja) kpdl:dot = +kpdl(dot) kpdl:comma = +kpdl(comma) kpdl:dotoss = +kpdl(dotoss) @@ -1237,6 +1253,8 @@ lv3:caps_switch_latch = +level3(caps_switch_latch) lv3:bksl_switch_latch = +level3(bksl_switch_latch) lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv5:lsgt_switch = +level5(lsgt_switch) + lv5:ralt_switch = +level5(ralt_switch) lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) lv5:ralt_switch_lock = +level5(ralt_switch_lock) lv5:lwin_switch_lock = +level5(lwin_switch_lock) @@ -1252,6 +1270,7 @@ grp_led:num = +lednum(group_lock) grp_led:caps = +ledcaps(group_lock) grp_led:scroll = +ledscroll(group_lock) + mod_led:compose = +ledcompose(compose) japan:kana_lock = +japan(kana_lock) caps:shiftlock = +ledcaps(shift_lock) grab:break_actions = +xfree86(grab_break) diff --git a/test/data/rules/base.extras.xml b/test/data/rules/base.extras.xml new file mode 100644 index 0000000..850f110 --- /dev/null +++ b/test/data/rules/base.extras.xml @@ -0,0 +1,1354 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> +<xkbConfigRegistry> + <modelList/> + <layoutList> + <layout> + <configItem popularity="exotic"> + <name>apl</name> + <shortDescription>apl</shortDescription> + <description>APL</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dyalog</name> + <shortDescription>dlg</shortDescription> + <description>APL symbols (Dyalog APL)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sax</name> + <shortDescription>sax</shortDescription> + <description>APL symbols (SAX, Sharp APL for Unix)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>unified</name> + <shortDescription>ufd</shortDescription> + <description>APL symbols (unified)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>apl2</name> + <shortDescription>apl2</shortDescription> + <description>APL symbols (IBM APL2)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>aplplusII</name> + <shortDescription>aplII</shortDescription> + <description>APL symbols (Manugistics APL*PLUS II)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>aplx</name> + <shortDescription>aplx</shortDescription> + <description>APL symbols (APLX unified)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ca</name> + <shortDescription>fr</shortDescription> + <description>French (Canada)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>kut</name> + <shortDescription>kut</shortDescription> + <description>Kutenai</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>shs</name> + <shortDescription>shs</shortDescription> + <description>Secwepemctsin</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Multilingual (Canada, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>de</name> + <shortDescription>de</shortDescription> + <description>German</description> + <languageList> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>us</name> + <description>German (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>hu</name> + <description>German (with Hungarian letters, no dead keys)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>hun</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>pl</name> + <description>Polish (Germany, no dead keys)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>German (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>adnw</name> + <description>German (Aus der Neo-Welt)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>koy</name> + <description>German (KOY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>bone</name> + <description>German (Bone)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>bone_eszett_home</name> + <description>German (Bone, eszett in the home row)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>neo_qwertz</name> + <description>German (Neo, QWERTZ)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>neo_qwerty</name> + <description>German (Neo, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ru-recom</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, recommended)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ru-translit</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, transliteration)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>lld</name> + <shortDescription>de_lld</shortDescription> + <description>German (Ladin)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>lld</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>eg</name> + <shortDescription>ⲕⲏⲙⲉ</shortDescription> + <description>Coptic</description> + <languageList> + <iso639Id>cop</iso639Id> + <iso639Id>egy</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>hu</name> + <description>Hungarian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>oldhun</name> + <shortDescription>oldhun</shortDescription> + <description>Old Hungarian</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ohu_lig</name> + <shortDescription>ohu_lig</shortDescription> + <description>Old Hungarian (for ligatures)</description> + </configItem> + </variant> + + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ir</name> + <shortDescription>fa</shortDescription> + <description>Persian</description> + <languageList> + <iso639Id>per</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>ave</name> + <description>Avestan</description> + <languageList> + <iso639Id>ave</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>lt</name> + <shortDescription>lt</shortDescription> + <description>Lithuanian</description> + <languageList> + <iso639Id>lit</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>us_dvorak</name> + <description>Lithuanian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Lithuanian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>lv</name> + <shortDescription>lv</shortDescription> + <description>Latvian</description> + <languageList> + <iso639Id>lav</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dvorak</name> + <description>Latvian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ykeydvorak</name> + <description>Latvian (Dvorak, with Y)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>minuskeydvorak</name> + <description>Latvian (Dvorak, with minus)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>dvorakprogr</name> + <description>Latvian (programmer Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ykeydvorakprogr</name> + <description>Latvian (programmer Dvorak, with Y)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>minuskeydvorakprogr</name> + <description>Latvian (programmer Dvorak, with minus)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Latvian (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>apostrophecolemak</name> + <description>Latvian (Colemak, with apostrophe)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Latvian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>us</name> + <shortDescription>en</shortDescription> + <description>English (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>intl-unicode</name> + <description>English (US, intl., AltGr Unicode combining)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>alt-intl-unicode</name> + <description>English (US, intl., AltGr Unicode combining, alt.)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ats</name> + <description>Atsina</description> + <!-- No ISO code in ISO639-2, only draft ISO693-3 --> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>crd</name> + <description>Coeur d'Alene Salish</description> + <languageList> + <iso639Id>crd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>cz_sk_de</name> + <description>Czech Slovak and German (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>cze</iso639Id> + <iso639Id>slo</iso639Id> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>drix</name> + <description>English (Drix)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>de_se_fi</name> + <description>German, Swedish and Finnish (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>ger</iso639Id> + <iso639Id>swe</iso639Id> + <iso639Id>fin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ibm238l</name> + <description>English (US, IBM Arabic 238_L)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>English (US, Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx</name> + <description>English (Carpalx)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-intl</name> + <description>English (Carpalx, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-altgr-intl</name> + <description>English (Carpalx, intl., with AltGr dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full</name> + <description>English (Carpalx, full optimization)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full-intl</name> + <description>English (Carpalx, full optimization, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full-altgr-intl</name> + <description>English (Carpalx, full optimization, intl., with AltGr dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l</name> + <description>English (3l)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l-cros</name> + <description>English (3l, Chromebook)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l-emacs</name> + <description>English (3l, emacs)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>scn</name> + <description>Sicilian (US keyboard)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>scn</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pl</name> + <shortDescription>pl</shortDescription> + <description>Polish</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>intl</name> + <description>Polish (intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Polish (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Polish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>glagolica</name> + <description>Polish (Glagolica)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ro</name> + <shortDescription>ro</shortDescription> + <description>Romanian</description> + <languageList> + <iso639Id>rum</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>crh_dobruja</name> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Dobruja Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ergonomic</name> + <description>Romanian (ergonomic Touchtype)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Romanian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>rs</name> + <shortDescription>sr</shortDescription> + <description>Serbian</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>combiningkeys</name> + <description>Serbian (combining accents instead of dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ru</name> + <shortDescription>ru</shortDescription> + <description>Russian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>chu</name> + <description>Church Slavonic</description> + <languageList> + <iso639Id>chu</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ruu</name> + <shortDescription>ru</shortDescription> + <description>Russian (with Ukrainian-Belorussian layout)</description> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>ukr</iso639Id> + <iso639Id>bel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>rulemak</name> + <description>Russian (Rulemak, phonetic Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>phonetic_mac</name> + <description>Russian (phonetic Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Russian (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>unipunct</name> + <description>Russian (with US punctuation)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prxn</name> + <shortDescription>ru</shortDescription> + <description>Russian (Polyglot and Reactionary)</description> + <countryList> + <iso3166Id>RU</iso3166Id> + <iso3166Id>RS</iso3166Id> + <iso3166Id>BA</iso3166Id> + <iso3166Id>ME</iso3166Id> + <iso3166Id>MK</iso3166Id> + <iso3166Id>BG</iso3166Id> + <iso3166Id>MD</iso3166Id> + <iso3166Id>UA</iso3166Id> + <iso3166Id>BY</iso3166Id> + <iso3166Id>KZ</iso3166Id> + <iso3166Id>MN</iso3166Id> + <iso3166Id>KG</iso3166Id> + <iso3166Id>TJ</iso3166Id> + <iso3166Id>UZ</iso3166Id> + <iso3166Id>TM</iso3166Id> + <iso3166Id>AZ</iso3166Id> + </countryList> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>rus-petr1708</iso639Id> + <iso639Id>ukr</iso639Id> + <iso639Id>bel</iso639Id> + <iso639Id>srp</iso639Id> + <iso639Id>mkd</iso639Id> + <iso639Id>bul</iso639Id> + <iso639Id>chu</iso639Id> + <iso639Id>rum-Cyrl</iso639Id> + <iso639Id>kaz</iso639Id> + <iso639Id>kir</iso639Id> + <iso639Id>uzb</iso639Id> + <iso639Id>bak</iso639Id> + <iso639Id>aze</iso639Id> + <iso639Id>tat</iso639Id> + <iso639Id>uig</iso639Id> + <iso639Id>kdr</iso639Id> + <iso639Id>tyv</iso639Id> + <iso639Id>kjh</iso639Id> + <iso639Id>crh</iso639Id> + <iso639Id>tgk</iso639Id> + <iso639Id>abk</iso639Id> + <iso639Id>sah</iso639Id> + <iso639Id>mon</iso639Id> + <iso639Id>kal</iso639Id> + <iso639Id>sjd</iso639Id> + <iso639Id>chv</iso639Id> + <iso639Id>oss</iso639Id> + <iso639Id>krl</iso639Id> + <iso639Id>ale</iso639Id> + <iso639Id>wbl</iso639Id> + <iso639Id>kur</iso639Id> + <iso639Id>niv</iso639Id> + <iso639Id>dng</iso639Id> + <iso639Id>kom</iso639Id> + <iso639Id>udm</iso639Id> + <iso639Id>sel</iso639Id> + <iso639Id>ulc</iso639Id> + <iso639Id>ude</iso639Id> + <iso639Id>oac</iso639Id> + <iso639Id>oaa</iso639Id> + <iso639Id>gld</iso639Id> + <iso639Id>eve</iso639Id> + <iso639Id>evn</iso639Id> + <iso639Id>kca</iso639Id> + <iso639Id>itl</iso639Id> + <iso639Id>yrk</iso639Id> + <iso639Id>neg</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>am</name> + <shortDescription>hy</shortDescription> + <description>Armenian</description> + <languageList> + <iso639Id>hye</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>olpc-phonetic</name> + <description>Armenian (OLPC, phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>il</name> + <shortDescription>he</shortDescription> + <description>Hebrew</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>biblicalSIL</name> + <description>Hebrew (Biblical, SIL phonetic)</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ara</name> + <shortDescription>ar</shortDescription> + <description>Arabic</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Arabic (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>basic_ext</name> + <description>Arabic (Arabic numerals, extensions in the 4th level)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>basic_ext_digits</name> + <description>Arabic (Eastern Arabic numerals, extensions in the 4th level)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>uga</name> + <description>Ugaritic instead of Arabic</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>be</name> + <shortDescription>be</shortDescription> + <description>Belgian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Belgian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>br</name> + <shortDescription>pt</shortDescription> + <description>Portuguese (Brazil)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Portuguese (Brazil, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>cz</name> + <shortDescription>cs</shortDescription> + <description>Czech</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Czech (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prog</name> + <description>Czech (programming)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>typo</name> + <description>Czech (typographic)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>coder</name> + <description>Czech (coder)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prog_typo</name> + <description>Czech (programming, typographic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>dk</name> + <shortDescription>da</shortDescription> + <description>Danish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Danish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>nl</name> + <shortDescription>nl</shortDescription> + <description>Dutch</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Dutch (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ee</name> + <shortDescription>et</shortDescription> + <description>Estonian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Estonian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>fi</name> + <shortDescription>fi</shortDescription> + <description>Finnish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Finnish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>das</name> + <description>Finnish (DAS)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>fidvorak</name> + <description>Finnish (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>fr</name> + <shortDescription>fr</shortDescription> + <description>French</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>French (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>us-alt</name> + <description>French (US with dead keys, alt.)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>us-azerty</name> + <description>French (US, AZERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>gr</name> + <shortDescription>gr</shortDescription> + <description>Greek</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Greek (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Greek (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>it</name> + <shortDescription>it</shortDescription> + <description>Italian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Italian (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>lld</name> + <shortDescription>it_lld</shortDescription> + <description>Italian (Ladin)</description> + <languageList> + <iso639Id>it</iso639Id> + <iso639Id>lld</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>jp</name> + <shortDescription>ja</shortDescription> + <description>Japanese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Japanese (Sun Type 6)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type7</name> + <description>Japanese (Sun Type 7, PC-compatible)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type7_suncompat</name> + <description>Japanese (Sun Type 7, Sun-compatible)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>no</name> + <shortDescription>no</shortDescription> + <description>Norwegian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Norwegian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pt</name> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Portuguese (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pt</name> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Portuguese (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>sk</name> + <shortDescription>sk</shortDescription> + <description>Slovak</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>acc</name> + <description>Slovak (ACC layout, only accented letters)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Slovak (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>es</name> + <shortDescription>es</shortDescription> + <description>Spanish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Spanish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>se</name> + <shortDescription>sv</shortDescription> + <description>Swedish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dvorak_a5</name> + <description>Swedish (Dvorak A5)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Swedish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ovd</name> + <description>Elfdalian (Swedish, with combining ogonek)</description> + <languageList> + <iso639Id>ovd</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ch</name> + <shortDescription>de</shortDescription> + <description>German (Switzerland)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6_de</name> + <description>German (Switzerland, Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6_fr</name> + <description>French (Switzerland, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>tr</name> + <shortDescription>tr</shortDescription> + <description>Turkish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Turkish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ua</name> + <shortDescription>uk</shortDescription> + <description>Ukrainian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Ukrainian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>gb</name> + <shortDescription>en</shortDescription> + <description>English (UK)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>English (UK, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>kr</name> + <shortDescription>ko</shortDescription> + <description>Korean</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Korean (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>vn</name> + <!-- Keyboard indicator for Vietnamese layouts --> + <shortDescription>vi</shortDescription> + <description>Vietnamese</description> + <languageList> + <iso639Id>vie</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>aderty</name> + <description>Vietnamese (AÐERTY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>qderty</name> + <description>Vietnamese (QĐERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>eu</name> + <!-- Keyboard indicator for European layouts --> + <shortDescription>eu</shortDescription> + <description>EurKEY (US)</description> + <languageList> + <iso639Id>cat</iso639Id> + <iso639Id>dan</iso639Id> + <iso639Id>eng</iso639Id> + <iso639Id>est</iso639Id> + <iso639Id>fao</iso639Id> + <iso639Id>fin</iso639Id> + <iso639Id>ger</iso639Id> + <iso639Id>gre</iso639Id> + <iso639Id>gsw</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>lav</iso639Id> + <iso639Id>lit</iso639Id> + <iso639Id>nld</iso639Id> + <iso639Id>nor</iso639Id> + <iso639Id>por</iso639Id> + <iso639Id>spa</iso639Id> + <iso639Id>swe</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem popularity="exotic"> + <name>cm</name> + <shortDescription>cm</shortDescription> + <description>English (Cameroon)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>mmuock</name> + <description>Mmuock</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>trans</name> + <!-- Keyboard layouts for transcription and transliteration systems --> + <description>International Phonetic Alphabet</description> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>in</name> + <!-- Keyboard indicator for Indian layouts --> + <shortDescription>in</shortDescription> + <description>Indian</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>modi-kagapa</name> + <shortDescription>mr</shortDescription> + <description>Modi (KaGaPa phonetic)</description> + <languageList> + <iso639Id>mar</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + </layoutList> + <optionList> + <group allowMultipleSelection="true"> + <!-- The key combination used to choose the 3rd (and 4th, together with Shift) + level of symbols --> + <configItem popularity="exotic"> + <name>lv3</name> + <description>Key to choose the 3rd level</description> + </configItem> + <option> + <configItem popularity="exotic"> + <name>lv3:4_switch_isolated</name> + <description>Number key 4 when pressed in isolation</description> + </configItem> + </option> + <option> + <configItem popularity="exotic"> + <name>lv3:9_switch_isolated</name> + <description>Number key 9 when pressed in isolation</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "(" and ")" keys --> + <configItem popularity="exotic"> + <name>parens</name> + <description>Parentheses position</description> + </configItem> + <option> + <configItem popularity="exotic"> + <name>parens:swap_brackets</name> + <description>Swap with square brackets</description> + </configItem> + </option> + </group> + </optionList> +</xkbConfigRegistry> diff --git a/test/data/rules/base.xml b/test/data/rules/base.xml new file mode 100644 index 0000000..a13af8f --- /dev/null +++ b/test/data/rules/base.xml @@ -0,0 +1,7705 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> +<xkbConfigRegistry version="1.1"> + <modelList> + <model> + <configItem> + <name>pc86</name> + <description>Generic 86-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc101</name> + <description>Generic 101-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc102</name> + <description>Generic 102-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc104</name> + <description>Generic 104-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc104alt</name> + <description>Generic 104-key PC with L-shaped Enter key</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc105</name> + <description>Generic 105-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell101</name> + <description>Dell 101-key PC</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>latitude</name> + <description>Dell Latitude laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellm65</name> + <description>Dell Precision M65 laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>everex</name> + <description>Everex STEPnote</description> + <vendor>Everex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>flexpro</name> + <description>Keytronic FlexPro</description> + <vendor>Keytronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft</name> + <description>Microsoft Natural</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>omnikey101</name> + <description>Northgate OmniKey 101</description> + <vendor>Northgate</vendor> + </configItem> + </model> + <model> + <configItem> + <name>winbook</name> + <description>Winbook Model XP5</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc98</name> + <description>PC-98</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKB21</name> + <description>A4Tech KB-21</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKBS8</name> + <description>A4Tech KBS-8</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4_rfkb23</name> + <description>A4Tech Wireless Desktop RFKB-23</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>airkey</name> + <description>Acer AirKey V</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>azonaRF2300</name> + <description>Azona RF2300 wireless Internet</description> + <vendor>Azona</vendor> + </configItem> + </model> + <model> + <configItem> + <name>scorpius</name> + <description>Advance Scorpius KI</description> + <vendor>Scorpius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>brother</name> + <description>Brother Internet</description> + <vendor>Brother</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5113rf</name> + <description>BTC 5113RF Multimedia</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5126t</name> + <description>BTC 5126T</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc6301urf</name> + <description>BTC 6301URF</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000</name> + <description>BTC 9000</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000a</name> + <description>BTC 9000A</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9001ah</name> + <description>BTC 9001AH</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5090</name> + <description>BTC 5090</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9019u</name> + <description>BTC 9019U</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9116u</name> + <description>BTC 9116U Mini Wireless Internet and Gaming</description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblue</name> + <description>Cherry Blue Line CyBo@rd</description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblueb</name> + <description>Cherry CyMotion Master XPress</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybluea</name> + <description>Cherry Blue Line CyBo@rd (alt.)</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycyboard</name> + <description>Cherry CyBo@rd USB-Hub</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycmexpert</name> + <description>Cherry CyMotion Expert</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybunlim</name> + <description>Cherry B.UNLIMITED</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony</name> + <description>Chicony Internet</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0108</name> + <description>Chicony KU-0108</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0420</name> + <description>Chicony KU-0420</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony9885</name> + <description>Chicony KB-9885</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqeak8</name> + <description>Compaq Easy Access</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik7</name> + <description>Compaq Internet (7 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik13</name> + <description>Compaq Internet (13 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik18</name> + <description>Compaq Internet (18 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cymotionlinux</name> + <description>Cherry CyMotion Master Linux</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>armada</name> + <description>Compaq Armada laptop</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>presario</name> + <description>Compaq Presario laptop</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ipaq</name> + <description>Compaq iPaq</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell</name> + <description>Dell</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8125</name> + <description>Dell SK-8125</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8135</name> + <description>Dell SK-8135</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellusbmm</name> + <description>Dell USB Multimedia</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>inspiron</name> + <description>Dell Inspiron 6000/8000 laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>precision_m</name> + <description>Dell Precision M laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dexxa</name> + <description>Dexxa Wireless Desktop</description> + <vendor>Dexxa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>diamond</name> + <description>Diamond 9801/9802</description> + <vendor>Diamond</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dtk2000</name> + <description>DTK2000</description> + </configItem> + </model> + <model> + <configItem> + <name>ennyah_dkb1008</name> + <description>Ennyah DKB-1008</description> + <vendor>Ennyah</vendor> + </configItem> + </model> + <model> + <configItem> + <name>fscaa1667g</name> + <description>Fujitsu-Siemens Amilo laptop</description> + <vendor>Fujitsu-Siemens</vendor> + </configItem> + </model> + <model> + <configItem> + <name>genius</name> + <description>Genius Comfy KB-16M/Multimedia KWD-910</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy</name> + <description>Genius Comfy KB-12e</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy2</name> + <description>Genius Comfy KB-21e-Scroll</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskb19e</name> + <description>Genius KB-19e NB</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskkb2050hs</name> + <description>Genius KKB-2050HS</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>gyration</name> + <description>Gyration</description> + <vendor>Gyration</vendor> + </configItem> + </model> + <model> + <configItem> + <name>kinesis</name> + <description>Kinesis</description> + <vendor>Kinesis</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_base</name> + <description>Logitech</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_g15</name> + <description>Logitech G15 extra keys via G15daemon</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpi6</name> + <description>Hewlett-Packard Internet</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp250x</name> + <description>Hewlett-Packard NEC SK-2500 Multimedia</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gc</name> + <description>Hewlett-Packard Omnibook XE3 GC</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gf</name> + <description>Hewlett-Packard Omnibook XE3 GF</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxt1000</name> + <description>Hewlett-Packard Omnibook XT1000</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpdv5</name> + <description>Hewlett-Packard Pavilion dv5</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpzt11xx</name> + <description>Hewlett-Packard Pavilion ZT1100</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp500fa</name> + <description>Hewlett-Packard Omnibook 500 FA</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp5xx</name> + <description>Hewlett-Packard Omnibook 500</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpnx9020</name> + <description>Hewlett-Packard nx9020</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp6000</name> + <description>Hewlett-Packard Omnibook 6000/6100</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>honeywell_euroboard</name> + <description>Honeywell Euroboard</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpmini110</name> + <description>Hewlett-Packard Mini 110 laptop</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess</name> + <description>IBM Rapid Access</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess2</name> + <description>IBM Rapid Access II</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad</name> + <description>IBM ThinkPad 560Z/600/600E/A22E</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad60</name> + <description>IBM ThinkPad R60/T60/R61/T61</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpadz60</name> + <description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ibm_spacesaver</name> + <description>IBM Space Saver</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiaccess</name> + <description>Logitech Access</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiclx300</name> + <description>Logitech Cordless Desktop LX-300</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logii350</name> + <description>Logitech Internet 350</description> + <vendor>Logitech</vendor> + <hwList> <hwId>046d:c313</hwId></hwList> + </configItem> + </model> + <model> + <configItem> + <name>logimel</name> + <description>Logitech Internet 350</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd</name> + <description>Logitech Cordless Desktop</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_it</name> + <description>Logitech Cordless Desktop iTouch</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_nav</name> + <description>Logitech Cordless Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_opt</name> + <description>Logitech Cordless Desktop Optical</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicda</name> + <description>Logitech Cordless Desktop (alt.)</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdpa2</name> + <description>Logitech Cordless Desktop Pro (2nd alt.)</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicfn</name> + <description>Logitech Cordless Freedom/Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdn</name> + <description>Logitech Cordless Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiitc</name> + <description>Logitech iTouch Cordless Y-RB6</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiik</name> + <description>Logitech Internet</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>itouch</name> + <description>Logitech iTouch</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicink</name> + <description>Logitech Internet Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiex110</name> + <description>Logitech Cordless Desktop EX110</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkse</name> + <description>Logitech iTouch Internet Navigator SE</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkseusb</name> + <description>Logitech iTouch Internet Navigator SE USB</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultrax</name> + <description>Logitech Ultra-X</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultraxc</name> + <description>Logitech Ultra-X Cordless Media Desktop</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovo</name> + <description>Logitech diNovo</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovoedge</name> + <description>Logitech diNovo Edge</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx1998</name> + <description>Memorex MX1998</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2500</name> + <description>Memorex MX2500 EZ-Access</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2750</name> + <description>Memorex MX2750</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft4000</name> + <description>Microsoft Natural Ergonomic 4000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft7000</name> + <description>Microsoft Natural Wireless Ergonomic 7000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftinet</name> + <description>Microsoft Internet</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftpro</name> + <description>Microsoft Natural Pro/Internet Pro</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprousb</name> + <description>Microsoft Natural Pro USB/Internet Pro</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprooem</name> + <description>Microsoft Natural Pro OEM</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>vsonku306</name> + <description>ViewSonic KU-306 Internet</description> + <vendor>ViewSonic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprose</name> + <description>Microsoft Internet Pro (Swedish)</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftoffice</name> + <description>Microsoft Office Keyboard</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftmult</name> + <description>Microsoft Wireless Multimedia 1.0A</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftsurface</name> + <description>Microsoft Surface</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftelite</name> + <description>Microsoft Natural Elite</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftccurve2k</name> + <description>Microsoft Comfort Curve 2000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>oretec</name> + <description>Ortek Multimedia/Internet MCK-800</description> + <vendor>Ortek</vendor> + </configItem> + </model> + <model> + <configItem> + <name>propeller</name> + <description>Propeller Voyager KTEZ-1000</description> + <vendor>KeyTronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>qtronix</name> + <description>QTronix Scorpius 98N+</description> + <vendor>QTronix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4500</name> + <description>Samsung SDM 4500P</description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4510</name> + <description>Samsung SDM 4510P</description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sanwaskbkg3</name> + <description>Sanwa Supply SKB-KG3</description> + <vendor>Sanwa Supply Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk1300</name> + <description>NEC SK-1300</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk2500</name> + <description>NEC SK-2500</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk6200</name> + <description>NEC SK-6200</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk7100</name> + <description>NEC SK-7100</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sp_inet</name> + <description>Super Power Multimedia</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven</name> + <description>SVEN Ergonomic 2500</description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven303</name> + <description>SVEN Slim 303</description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>symplon</name> + <description>Symplon PaceBook tablet</description> + <vendor>Symplon</vendor> + </configItem> + </model> + <model> + <configItem> + <name>toshiba_s3000</name> + <description>Toshiba Satellite S3000</description> + <vendor>Toshiba</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust</name> + <description>Trust Wireless Classic</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trustda</name> + <description>Trust Direct Access</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust_slimline</name> + <description>Trust Slimline</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2020</name> + <description>TypeMatrix EZ-Reach 2020</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030PS2</name> + <description>TypeMatrix EZ-Reach 2030 PS2</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB</name> + <description>TypeMatrix EZ-Reach 2030 USB</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-102</name> + <description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-106</name> + <description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>yahoo</name> + <description>Yahoo! Internet</description> + <vendor>Yahoo!</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook78</name> + <description>MacBook/MacBook Pro</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook79</name> + <description>MacBook/MacBook Pro (intl.)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh</name> + <description>Macintosh</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_old</name> + <description>Macintosh Old</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_hhk</name> + <description>Happy Hacking for Mac</description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_c300</name> + <description>Acer C300</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_ferrari4k</name> + <description>Acer Ferrari 4000</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_laptop</name> + <description>Acer laptop</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>asus_laptop</name> + <description>Asus laptop</description> + <vendor>Asus</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple</name> + <description>Apple</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple_laptop</name> + <description>Apple laptop</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_ansi</name> + <description>Apple Aluminium (ANSI)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_iso</name> + <description>Apple Aluminium (ISO)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_jis</name> + <description>Apple Aluminium (JIS)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>silvercrest</name> + <description>Silvercrest Multimedia Wireless</description> + <vendor>Silvercrest</vendor> + </configItem> + </model> + <model> + <configItem> + <name>emachines</name> + <description>eMachines m6800 laptop</description> + <vendor>eMachines</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx</name> + <description>BenQ X-Touch</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx730</name> + <description>BenQ X-Touch 730</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx800</name> + <description>BenQ X-Touch 800</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hhk</name> + <description>Happy Hacking</description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>classmate</name> + <description>Classmate PC</description> + <vendor>Intel</vendor> + </configItem> + </model> + <model> + <configItem> + <name>olpc</name> + <description>OLPC</description> + <vendor>OLPC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_usb</name> + <description>Sun Type 7 USB</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_euro_usb</name> + <description>Sun Type 7 USB (European)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_unix_usb</name> + <description>Sun Type 7 USB (Unix)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_jp_usb</name> + <description>Sun Type 7 USB (Japanese)/Japanese 106-key</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_usb</name> + <description>Sun Type 6/7 USB</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_euro_usb</name> + <description>Sun Type 6/7 USB (European)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_unix_usb</name> + <description>Sun Type 6 USB (Unix)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_jp_usb</name> + <description>Sun Type 6 USB (Japanese)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_jp</name> + <description>Sun Type 6 (Japanese)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>targa_v811</name> + <description>Targa Visionary 811</description> + <vendor>Targa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>unitekkb1925</name> + <description>Unitek KB-1925</description> + <vendor>Unitek Group</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compalfl90</name> + <description>FL90</description> + <vendor>Compal Electronics</vendor> + </configItem> + </model> + <model> + <configItem> + <name>creativedw7000</name> + <description>Creative Desktop Wireless 7000</description> + <vendor>Creative</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck227</name> + <description>Truly Ergonomic 227</description> + <vendor>Truly Ergonomic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck229</name> + <description>Truly Ergonomic 229</description> + <vendor>Truly Ergonomic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apex300</name> + <description>SteelSeries Apex 300 (Apex RAW)</description> + <vendor>SteelSeries</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chromebook</name> + <description>Chromebook</description> + <vendor>Google</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck227</name> + <description>Truly Ergonomic Computer Keyboard Model 227 (Wide Alt keys)</description> + <vendor>Megawin Technology</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck229</name> + <description>Truly Ergonomic Computer Keyboard Model 229 (Standard sized Alt keys, additional Super and Menu key)</description> + <vendor>Megawin Technology</vendor> + </configItem> + </model> + </modelList> + <layoutList> + <layout> + <configItem> + <name>us</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>chr</name> + <!-- Keyboard indicator for Cherokee layouts --> + <shortDescription>chr</shortDescription> + <description>Cherokee</description> + <languageList> + <iso639Id>chr</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>haw</name> + <shortDescription>haw</shortDescription> + <description>Hawaiian</description> + <languageList> + <iso639Id>haw</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>euro</name> + <description>English (US, euro on 5)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>English (US, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-intl</name> + <description>English (US, alt. intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>English (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>English (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-intl</name> + <description>English (Dvorak, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-alt-intl</name> + <description>English (Dvorak, alt. intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-l</name> + <description>English (Dvorak, left-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-r</name> + <description>English (Dvorak, right-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-classic</name> + <description>English (classic Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <description>English (programmer Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (US, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>English (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>altgr-intl</name> + <description>English (intl., with AltGr dead keys)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>fra</iso639Id> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc2</name> + <description>English (the divide/multiply toggle the layout)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>hbs</name> + <description>Serbo-Croatian (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bos</iso639Id> + <iso639Id>hbs</iso639Id> + <iso639Id>hrv</iso639Id> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>norman</name> + <description>English (Norman)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>workman</name> + <description>English (Workman)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>workman-intl</name> + <description>English (Workman, intl., with dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>af</name> + <!-- Keyboard indicator for Afghani layouts --> + <shortDescription>fa</shortDescription> + <description>Afghani</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ps</name> + <!-- Keyboard indicator for Pashto layouts --> + <shortDescription>ps</shortDescription> + <description>Pashto</description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>uz</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek (Afghanistan)</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc-ps</name> + <!-- Keyboard indicator for Pashto layouts --> + <shortDescription>ps</shortDescription> + <description>Pashto (Afghanistan, OLPC)</description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fa-olpc</name> + <!-- Keyboard indicator for Persian layouts --> + <shortDescription>fa</shortDescription> + <description>Persian (Afghanistan, Dari OLPC)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>uz-olpc</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek (Afghanistan, OLPC)</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ara</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic</description> + <countryList> + <iso3166Id>AE</iso3166Id> + <iso3166Id>BH</iso3166Id> + <iso3166Id>DZ</iso3166Id> + <iso3166Id>EG</iso3166Id> + <iso3166Id>EH</iso3166Id> + <iso3166Id>JO</iso3166Id> + <iso3166Id>KW</iso3166Id> + <iso3166Id>LB</iso3166Id> + <iso3166Id>LY</iso3166Id> + <iso3166Id>MA</iso3166Id> + <iso3166Id>MR</iso3166Id> + <iso3166Id>OM</iso3166Id> + <iso3166Id>PS</iso3166Id> + <iso3166Id>QA</iso3166Id> + <iso3166Id>SA</iso3166Id> + <iso3166Id>SD</iso3166Id> + <iso3166Id>SY</iso3166Id> + <iso3166Id>TN</iso3166Id> + <iso3166Id>YE</iso3166Id> + </countryList> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>azerty</name> + <description>Arabic (AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty_digits</name> + <description>Arabic (AZERTY, Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>digits</name> + <description>Arabic (Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Arabic (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_digits</name> + <description>Arabic (QWERTY, Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>buckwalter</name> + <description>Arabic (Buckwalter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc</name> + <description>Arabic (OLPC)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Arabic (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>al</name> + <!-- Keyboard indicator for Albanian layouts --> + <shortDescription>sq</shortDescription> + <description>Albanian</description> + <languageList> + <iso639Id>sqi</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>plisi</name> + <description>Albanian (Plisi)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>veqilharxhi</name> + <description>Albanian (Veqilharxhi)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>am</name> + <!-- Keyboard indicator for Armenian layouts --> + <shortDescription>hy</shortDescription> + <description>Armenian</description> + <languageList> + <iso639Id>hye</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Armenian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic-alt</name> + <description>Armenian (alt. phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern</name> + <description>Armenian (eastern)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>western</name> + <description>Armenian (western)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern-alt</name> + <description>Armenian (alt. eastern)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>at</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Austria)</description> + <languageList> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>German (Austria, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>German (Austria, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>German (Austria, Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>au</name> + <!-- Keyboard indicator for Australian layouts --> + <shortDescription>en</shortDescription> + <description>English (Australian)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>az</name> + <!-- Keyboard indicator for Azerbaijani layouts --> + <shortDescription>az</shortDescription> + <description>Azerbaijani</description> + <languageList> + <iso639Id>aze</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <description>Azerbaijani (Cyrillic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>by</name> + <!-- Keyboard indicator for Belarusian layouts --> + <shortDescription>by</shortDescription> + <description>Belarusian</description> + <languageList> + <iso639Id>bel</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Belarusian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Belarusian (Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <description>Russian (Belarus)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Belarusian (intl.)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>be</name> + <!-- Keyboard indicator for Belgian layouts --> + <shortDescription>be</shortDescription> + <description>Belgian</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>nld</iso639Id> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>oss</name> + <description>Belgian (alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <description>Belgian (Latin-9 only, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <description>Belgian (Sun dead keys, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>iso-alternate</name> + <description>Belgian (ISO, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Belgian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Belgian (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>wang</name> + <description>Belgian (Wang 724 AZERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bd</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>probhat</name> + <description>Bangla (Probhat)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>in</name> + <!-- Keyboard indicator for Indian layouts --> + <shortDescription>in</shortDescription> + <description>Indian</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ben</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla (India)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_probhat</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla (India, Probhat)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_baishakhi</name> + <description>Bangla (India, Baishakhi)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_bornona</name> + <description>Bangla (India, Bornona)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_gitanjali</name> + <description>Bangla (India, Gitanjali)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_inscript</name> + <description>Bangla (India, Baishakhi Inscript)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eeyek</name> + <description>Manipuri (Eeyek)</description> + <languageList> + <iso639Id>mni</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guj</name> + <!-- Keyboard indicator for Gujarati layouts --> + <shortDescription>gu</shortDescription> + <description>Gujarati</description> + <languageList> + <iso639Id>guj</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guru</name> + <!-- Keyboard indicator for Punjabi layouts --> + <shortDescription>pa</shortDescription> + <description>Punjabi (Gurmukhi)</description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>jhelum</name> + <!-- Keyboard indicator for Punjabi layouts --> + <shortDescription>pa</shortDescription> + <description>Punjabi (Gurmukhi Jhelum)</description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kan</name> + <!-- Keyboard indicator for Kannada layouts --> + <shortDescription>kn</shortDescription> + <description>Kannada</description> + <languageList> + <iso639Id>kan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kan-kagapa</name> + <!-- Keyboard indicator for Kannada layouts --> + <shortDescription>kn</shortDescription> + <description>Kannada (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>kan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_lalitha</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam (Lalitha)</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_enhanced</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam (enhanced Inscript, with rupee)</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ori</name> + <!-- Keyboard indicator for Oriya layouts --> + <shortDescription>or</shortDescription> + <description>Oriya</description> + <languageList> + <iso639Id>ori</iso639Id> + <!-- sat-Orya: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olck</name> + <!-- Keyboard indicator for Ol Chiki layouts --> + <shortDescription>sat</shortDescription> + <description>Ol Chiki</description> + <languageList> + <!-- sat-Olck: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_with_tam_nums</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99 with Tamil numerals)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_TAB</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99, TAB encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_TSCII</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99, TSCII encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (Inscript)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-kagapa</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-sarala</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (Sarala)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-kagapa</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (phonetic)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic3</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (alt. phonetic)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-winkeys</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (Windows)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bolnagri</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (Bolnagri)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hin-wx</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (Wx)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hin-kagapa</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>san-kagapa</name> + <!-- Keyboard indicator for Sanskrit layouts --> + <shortDescription>sa</shortDescription> + <description>Sanskrit (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>san</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mar-kagapa</name> + <!-- Keyboard indicator for Marathi layouts --> + <shortDescription>mr</shortDescription> + <description>Marathi (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>mar</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (India, with rupee)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>iipa</name> + <shortDescription>iipa</shortDescription> + <description>Indic IPA (IIPA)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + + <variant> + <configItem> + <name>marathi</name> + <shortDescription>ins</shortDescription> + <description>मराठी इन्स्क्रिप्ट</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ba</name> + <!-- Keyboard indicator for Bosnian layouts --> + <shortDescription>bs</shortDescription> + <description>Bosnian</description> + <languageList> + <iso639Id>bos</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Bosnian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <description>Bosnian (with Bosnian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <description>Bosnian (US, with Bosnian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Bosnian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>br</name> + <!-- Keyboard indicator for Portuguese layouts --> + <shortDescription>pt</shortDescription> + <description>Portuguese (Brazil)</description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Portuguese (Brazil, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Portuguese (Brazil, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <description>Portuguese (Brazil, Nativo)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <description>Portuguese (Brazil, Nativo for US keyboards)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <description>Esperanto (Brazil, Nativo)</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>thinkpad</name> + <description>Portuguese (Brazil, IBM/Lenovo ThinkPad)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bg</name> + <!-- Keyboard indicator for Bulgarian layouts --> + <shortDescription>bg</shortDescription> + <description>Bulgarian</description> + <languageList> + <iso639Id>bul</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Bulgarian (traditional phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bas_phonetic</name> + <description>Bulgarian (new phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>dz</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (azerty layout, no dead keys)</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>azerty-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (azerty layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-gb-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (qwerty-gb layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-us-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (qwerty-us layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ber</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (Algeria, Tifinagh)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ar</name> + <shortDescription>ar</shortDescription> + <description>Arabic (Algeria)</description> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ma</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic (Morocco)</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>french</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Morocco)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh alt.)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh phonetic, alt.)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh extended)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh phonetic)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh extended phonetic)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cm</name> + <!-- Keyboard indicator for Cameroon layouts --> + <shortDescription>cm</shortDescription> + <description>English (Cameroon)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>french</name> + <description>French (Cameroon)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Cameroon Multilingual (QWERTY, intl.)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bas</iso639Id> + <iso639Id>nmg</iso639Id> + <iso639Id>fub</iso639Id> + <iso639Id>ewo</iso639Id> + <iso639Id>xmd</iso639Id> + <iso639Id>mfh</iso639Id> + <iso639Id>bkm</iso639Id> + <iso639Id>ozm</iso639Id> + <iso639Id>lns</iso639Id> + <iso639Id>sox</iso639Id> + <iso639Id>pny</iso639Id> + <iso639Id>wes</iso639Id> + <iso639Id>lem</iso639Id> + <iso639Id>nyj</iso639Id> + <iso639Id>mfk</iso639Id> + <iso639Id>mcp</iso639Id> + <iso639Id>ass</iso639Id> + <iso639Id>xed</iso639Id> + <iso639Id>dua</iso639Id> + <iso639Id>anv</iso639Id> + <iso639Id>bum</iso639Id> + <iso639Id>btb</iso639Id> + <iso639Id>bfd</iso639Id> + <iso639Id>azo</iso639Id> + <iso639Id>ken</iso639Id> + <iso639Id>yam</iso639Id> + <iso639Id>yat</iso639Id> + <iso639Id>yas</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty</name> + <description>Cameroon (AZERTY, intl.)</description> + <languageList> + <iso639Id>fra</iso639Id> + <iso639Id>bas</iso639Id> + <iso639Id>nmg</iso639Id> + <iso639Id>fub</iso639Id> + <iso639Id>ewo</iso639Id> + <iso639Id>xmd</iso639Id> + <iso639Id>mfh</iso639Id> + <iso639Id>bkm</iso639Id> + <iso639Id>ozm</iso639Id> + <iso639Id>lns</iso639Id> + <iso639Id>sox</iso639Id> + <iso639Id>pny</iso639Id> + <iso639Id>wes</iso639Id> + <iso639Id>lem</iso639Id> + <iso639Id>nyj</iso639Id> + <iso639Id>mfk</iso639Id> + <iso639Id>mcp</iso639Id> + <iso639Id>ass</iso639Id> + <iso639Id>xed</iso639Id> + <iso639Id>dua</iso639Id> + <iso639Id>anv</iso639Id> + <iso639Id>bum</iso639Id> + <iso639Id>btb</iso639Id> + <iso639Id>bfd</iso639Id> + <iso639Id>azo</iso639Id> + <iso639Id>ken</iso639Id> + <iso639Id>yam</iso639Id> + <iso639Id>yat</iso639Id> + <iso639Id>yas</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Cameroon (Dvorak, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mmuock</name> + <description>Mmuock</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mm</name> + <!-- Keyboard indicator for Burmese layouts --> + <shortDescription>my</shortDescription> + <description>Burmese</description> + <languageList> + <iso639Id>mya</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>zawgyi</name> + <shortDescription>zg</shortDescription> + <description>Burmese Zawgyi</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ca</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-dvorak</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr-legacy</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multix</name> + <description>Canadian (intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi</name> + <description>Canadian (intl., 1st part)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi-2gr</name> + <description>Canadian (intl., 2nd part)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ike</name> + <!-- Keyboard indicator for Inuktikut layouts --> + <shortDescription>ike</shortDescription> + <description>Inuktitut</description> + <languageList> + <iso639Id>iku</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Canada)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cd</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Democratic Republic of the Congo)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>cn</name> + <!-- Keyboard indicator for Chinese layouts --> + <shortDescription>zh</shortDescription> + <description>Chinese</description> + <languageList> + <iso639Id>zho</iso639Id> + </languageList> + </configItem> + <variantList> + + <variant> + <configItem> + <name>mon_trad</name> + <description>Mongolian (Bichig)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_todo</name> + <description>Mongolian (Todo)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_xibe</name> + <description>Mongolian (Xibe)</description> + <languageList> + <iso639Id>sjo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_manchu</name> + <description>Mongolian (Manchu)</description> + <languageList> + <iso639Id>mnc</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_galik</name> + <description>Mongolian (Galik)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_todo_galik</name> + <description>Mongolian (Todo Galik)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_manchu_galik</name> + <description>Mongolian (Manchu Galik)</description> + <languageList> + <iso639Id>mnc</iso639Id> + </languageList> + </configItem> + </variant> + + <variant> + <configItem> + <name>tib</name> + <description>Tibetan</description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tib_asciinum</name> + <description>Tibetan (with ASCII numerals)</description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ug</name> + <shortDescription>ug</shortDescription> + <description>Uyghur</description> + <languageList> + <iso639Id>uig</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>altgr-pinyin</name> + <description>Hanyu Pinyin (with AltGr dead keys)</description> + <languageList> + <iso639Id>zho</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hr</name> + <!-- Keyboard indicator for Croatian layouts --> + <shortDescription>hr</shortDescription> + <description>Croatian</description> + <languageList> + <iso639Id>hrv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Croatian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <description>Croatian (with Croatian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <description>Croatian (US, with Croatian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Croatian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cz</name> + <!-- Keyboard indicator for Chech layouts --> + <shortDescription>cs</shortDescription> + <description>Czech</description> + <languageList> + <iso639Id>ces</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <description>Czech (with <\|> key)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Czech (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <description>Czech (QWERTY, extended backslash)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-mac</name> + <description>Czech (QWERTY, Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ucw</name> + <description>Czech (UCW, only accented letters)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-ucw</name> + <description>Czech (US, Dvorak, UCW support)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Czech, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>dk</name> + <!-- Keyboard indicator for Danish layouts --> + <shortDescription>da</shortDescription> + <description>Danish</description> + <languageList> + <iso639Id>dan</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Danish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Danish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Danish (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Danish (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Danish (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nl</name> + <!-- Keyboard indicator for Dutch layouts --> + <shortDescription>nl</shortDescription> + <description>Dutch</description> + <languageList> + <iso639Id>nld</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Dutch (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Dutch (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <description>Dutch (standard)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bt</name> + <!-- Keyboard indicator for Dzongkha layouts --> + <shortDescription>dz</shortDescription> + <description>Dzongkha</description> + <languageList> + <iso639Id>dzo</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ee</name> + <!-- Keyboard indicator for Estonian layouts --> + <shortDescription>et</shortDescription> + <description>Estonian</description> + <languageList> + <iso639Id>est</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Estonian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Estonian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Estonian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ir</name> + <!-- Keyboard indicator for Persian layouts --> + <shortDescription>fa</shortDescription> + <description>Persian</description> + <languageList> + <iso639Id>fas</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>pes_keypad</name> + <description>Persian (with Persian keypad)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Arabic-Latin)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>iq</name> + <!-- Keyboard indicator for Iraqi layouts --> + <shortDescription>ar</shortDescription> + <description>Iraqi</description> + <languageList> + <iso639Id>ara</iso639Id> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Arabic-Latin)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fo</name> + <!-- Keyboard indicator for Faroese layouts --> + <shortDescription>fo</shortDescription> + <description>Faroese</description> + <languageList> + <iso639Id>fao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Faroese (no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fi</name> + <!-- Keyboard indicator for Finnish layouts --> + <shortDescription>fi</shortDescription> + <description>Finnish</description> + <languageList> + <iso639Id>fin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>winkeys</name> + <description>Finnish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>classic</name> + <description>Finnish (classic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Finnish (classic, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Finland)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Finnish (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fr</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>French (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>French (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss</name> + <description>French (alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <description>French (alt., Latin-9 only)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_nodeadkeys</name> + <description>French (alt., no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <description>French (alt., Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9</name> + <description>French (legacy, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_nodeadkeys</name> + <description>French (legacy, alt., no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_sundeadkeys</name> + <description>French (legacy, alt., Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo</name> + <description>French (BEPO)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo_latin9</name> + <description>French (BEPO, Latin-9 only)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo_afnor</name> + <description>French (BEPO, AFNOR)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>French (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>French (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty</name> + <description>French (AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>afnor</name> + <description>French (AZERTY, AFNOR)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bre</name> + <description>French (Breton)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oci</name> + <description>Occitan</description> + <languageList> + <iso639Id>oci</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <description>Georgian (France, AZERTY Tskapo)</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>French (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gh</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Ghana)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>generic</name> + <description>English (Ghana, multilingual)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>akan</name> + <!-- Keyboard indicator for Akan layouts --> + <shortDescription>ak</shortDescription> + <description>Akan</description> + <languageList> + <iso639Id>aka</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ewe</name> + <!-- Keyboard indicator for Ewe layouts --> + <shortDescription>ee</shortDescription> + <description>Ewe</description> + <languageList> + <iso639Id>ewe</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fula</name> + <!-- Keyboard indicator for Fula layouts --> + <shortDescription>ff</shortDescription> + <description>Fula</description> + <languageList> + <iso639Id>ful</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ga</name> + <!-- Keyboard indicator for Ga layouts --> + <shortDescription>gaa</shortDescription> + <description>Ga</description> + <languageList> + <iso639Id>gaa</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <!-- Keyboard indicator for Hausa layouts --> + <shortDescription>ha</shortDescription> + <description>Hausa (Ghana)</description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>avn</name> + <!-- Keyboard indicator for Avatime layouts --> + <shortDescription>avn</shortDescription> + <description>Avatime</description> + <languageList> + <iso639Id>avn</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>gillbt</name> + <description>English (Ghana, GILLBT)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gn</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Guinea)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>ge</name> + <!-- Keyboard indicator for Georgian layouts --> + <shortDescription>ka</shortDescription> + <description>Georgian</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ergonomic</name> + <description>Georgian (ergonomic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mess</name> + <description>Georgian (MESS)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Georgia)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os</name> + <description>Ossetian (Georgia)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>de</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German</description> + <languageList> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>deadacute</name> + <description>German (dead acute)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadgraveacute</name> + <description>German (dead grave acute)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>German (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>T3</name> + <description>German (T3)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ro</name> + <description>Romanian (Germany)</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ro_nodeadkeys</name> + <description>Romanian (Germany, no dead keys)</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>German (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>German (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>neo</name> + <description>German (Neo 2)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>German (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>German (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb</name> + <description>Lower Sorbian</description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb_qwertz</name> + <description>Lower Sorbian (QWERTZ)</description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>German (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tr</name> + <description>Turkish (Germany)</description> + <languageList> + <iso639Id>tr</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>German (dead tilde)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gr</name> + <!-- Keyboard indicator for Greek layouts --> + <shortDescription>gr</shortDescription> + <description>Greek</description> + <languageList> + <iso639Id>ell</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>simple</name> + <description>Greek (simple)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>extended</name> + <description>Greek (extended)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Greek (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>polytonic</name> + <description>Greek (polytonic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hu</name> + <!-- Keyboard indicator for Hungarian layouts --> + <shortDescription>hu</shortDescription> + <description>Hungarian</description> + <languageList> + <iso639Id>hun</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>standard</name> + <description>Hungarian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Hungarian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Hungarian (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_dead</name> + <description>Hungarian (QWERTZ, 101-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_nodead</name> + <description>Hungarian (QWERTZ, 101-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_dead</name> + <description>Hungarian (QWERTZ, 101-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_nodead</name> + <description>Hungarian (QWERTZ, 101-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_dead</name> + <description>Hungarian (QWERTY, 101-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_nodead</name> + <description>Hungarian (QWERTY, 101-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_dead</name> + <description>Hungarian (QWERTY, 101-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_nodead</name> + <description>Hungarian (QWERTY, 101-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_dead</name> + <description>Hungarian (QWERTZ, 102-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_nodead</name> + <description>Hungarian (QWERTZ, 102-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_dead</name> + <description>Hungarian (QWERTZ, 102-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_nodead</name> + <description>Hungarian (QWERTZ, 102-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_dead</name> + <description>Hungarian (QWERTY, 102-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_nodead</name> + <description>Hungarian (QWERTY, 102-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_dead</name> + <description>Hungarian (QWERTY, 102-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_nodead</name> + <description>Hungarian (QWERTY, 102-key, dot, no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>is</name> + <!-- Keyboard indicator for Icelandic layouts --> + <shortDescription>is</shortDescription> + <description>Icelandic</description> + <languageList> + <iso639Id>isl</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>Sundeadkeys</name> + <description>Icelandic (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Icelandic (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_legacy</name> + <description>Icelandic (Macintosh, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Icelandic (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Icelandic (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>il</name> + <!-- Keyboard indicator for Hebrew layouts --> + <shortDescription>he</shortDescription> + <description>Hebrew</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>lyx</name> + <description>Hebrew (lyx)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic</name> + <description>Hebrew (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>biblical</name> + <description>Hebrew (Biblical, Tiro)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>it</name> + <!-- Keyboard indicator for Italian layouts --> + <shortDescription>it</shortDescription> + <description>Italian</description> + <languageList> + <iso639Id>ita</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Italian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Italian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Italian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Italian (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <description>Georgian (Italy)</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ibm</name> + <description>Italian (IBM 142)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Italian (intl., with dead keys)</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>fra</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>slk</iso639Id> + <iso639Id>srd</iso639Id> + <iso639Id>nap</iso639Id> + <iso639Id>scn</iso639Id> + <iso639Id>fur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>scn</name> + <description>Sicilian</description> + <languageList> + <iso639Id>ita</iso639Id> + <iso639Id>scn</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fur</name> + <description>Friulian (Italy)</description> + <languageList> + <iso639Id>fur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>jp</name> + <!-- Keyboard indicator for Japaneses --> + <shortDescription>ja</shortDescription> + <description>Japanese</description> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kana</name> + <description>Japanese (Kana)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>kana86</name> + <description>Japanese (Kana 86)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>OADG109A</name> + <description>Japanese (OADG 109A)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Japanese (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Japanese (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kg</name> + <!-- Keyboard indicator for Kyrgyz layouts --> + <shortDescription>ki</shortDescription> + <description>Kyrgyz</description> + <languageList> + <iso639Id>kir</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Kyrgyz (phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kh</name> + <!-- Keyboard indicator for Khmer layouts --> + <shortDescription>km</shortDescription> + <description>Khmer (Cambodia)</description> + <languageList> + <iso639Id>khm</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>kz</name> + <!-- Keyboard indicator for Kazakh layouts --> + <shortDescription>kk</shortDescription> + <description>Kazakh</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ruskaz</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Kazakhstan, with Kazakh)</description> + <languageList> + <iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kazrus</name> + <description>Kazakh (with Russian)</description> + <languageList> + <iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ext</name> + <description>Kazakh (extended)</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Kazakh (Latin)</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>la</name> + <!-- Keyboard indicator for Lao layouts --> + <shortDescription>lo</shortDescription> + <description>Lao</description> + <languageList> + <iso639Id>lao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>stea</name> + <description>Lao (STEA)</description> + <languageList> + <iso639Id>lao</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>latam</name> + <!-- Keyboard indicator for Spanish layouts --> + <shortDescription>es</shortDescription> + <description>Spanish (Latin American)</description> + <countryList> + <iso3166Id>AR</iso3166Id> + <iso3166Id>BO</iso3166Id> + <iso3166Id>CL</iso3166Id> + <iso3166Id>CO</iso3166Id> + <iso3166Id>CR</iso3166Id> + <iso3166Id>CU</iso3166Id> + <iso3166Id>DO</iso3166Id> + <iso3166Id>EC</iso3166Id> + <iso3166Id>GT</iso3166Id> + <iso3166Id>HN</iso3166Id> + <iso3166Id>HT</iso3166Id> + <iso3166Id>MX</iso3166Id> + <iso3166Id>NI</iso3166Id> + <iso3166Id>PA</iso3166Id> + <iso3166Id>PE</iso3166Id> + <iso3166Id>PR</iso3166Id> + <iso3166Id>PY</iso3166Id> + <iso3166Id>SV</iso3166Id> + <iso3166Id>US</iso3166Id> + <iso3166Id>UY</iso3166Id> + <iso3166Id>VE</iso3166Id> + </countryList> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Spanish (Latin American, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>Spanish (Latin American, dead tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Spanish (Latin American, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Spanish (Latin American, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Spanish (Latin American, Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak-gaming</name> + <description>Spanish (Latin American, Colemak for gaming)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lt</name> + <!-- Keyboard indicator for Lithuanian layouts --> + <shortDescription>lt</shortDescription> + <description>Lithuanian</description> + <languageList> + <iso639Id>lit</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>std</name> + <description>Lithuanian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Lithuanian (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ibm</name> + <description>Lithuanian (IBM LST 1205-92)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekp</name> + <description>Lithuanian (LEKP)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekpa</name> + <description>Lithuanian (LEKPa)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sgs</name> + <description>Samogitian</description> + <languageList> + <iso639Id>sgs</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lv</name> + <!-- Keyboard indicator for Latvian layouts --> + <shortDescription>lv</shortDescription> + <description>Latvian</description> + <languageList> + <iso639Id>lav</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>apostrophe</name> + <description>Latvian (apostrophe)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tilde</name> + <description>Latvian (tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fkey</name> + <description>Latvian (F)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>modern</name> + <description>Latvian (modern)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ergonomic</name> + <description>Latvian (ergonomic, ŪGJRMV)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>adapted</name> + <description>Latvian (adapted)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mao</name> + <!-- Keyboard indicator for Maori layouts --> + <shortDescription>mi</shortDescription> + <description>Maori</description> + <languageList> + <iso639Id>mri</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>me</name> + <!-- Keyboard indicator for Montenegrin layouts --> + <shortDescription>sr</shortDescription> + <description>Montenegrin</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <description>Montenegrin (Cyrillic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicyz</name> + <description>Montenegrin (Cyrillic, ZE and ZHE swapped)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <description>Montenegrin (Latin, Unicode)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <description>Montenegrin (Latin, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <description>Montenegrin (Latin, Unicode, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicalternatequotes</name> + <description>Montenegrin (Cyrillic, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <description>Montenegrin (Latin, with guillemets)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mk</name> + <!-- Keyboard indicator for Macedonian layouts --> + <shortDescription>mk</shortDescription> + <description>Macedonian</description> + <languageList> + <iso639Id>mkd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Macedonian (no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mt</name> + <!-- Keyboard indicator for Maltese layouts --> + <shortDescription>mt</shortDescription> + <description>Maltese</description> + <languageList> + <iso639Id>mlt</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>us</name> + <description>Maltese (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-us</name> + <description>Maltese (US layout with AltGr overrides)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-gb</name> + <description>Maltese (UK, with AltGr overrides)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mn</name> + <!-- Keyboard indicator for Mongolian layouts --> + <shortDescription>mn</shortDescription> + <description>Mongolian</description> + <languageList> + <iso639Id>mon</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>no</name> + <!-- Keyboard indicator for Norwegian layouts --> + <shortDescription>no</shortDescription> + <description>Norwegian</description> + <languageList> + <iso639Id>nor</iso639Id> + <iso639Id>nob</iso639Id> + <iso639Id>nno</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Norwegian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Norwegian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Norwegian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Norway)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi_nodeadkeys</name> + <description>Northern Saami (Norway, no dead keys)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Norwegian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Norwegian (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Norwegian (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pl</name> + <!-- Keyboard indicator for Polish layouts --> + <shortDescription>pl</shortDescription> + <description>Polish</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Polish (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwertz</name> + <description>Polish (QWERTZ)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Polish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_quotes</name> + <description>Polish (Dvorak, with Polish quotes on quotemark key)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_altquotes</name> + <description>Polish (Dvorak, with Polish quotes on key 1)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>csb</name> + <description>Kashubian</description> + <languageList> + <iso639Id>csb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>szl</name> + <description>Silesian</description> + <languageList> + <iso639Id>szl</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ru_phonetic_dvorak</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Poland, phonetic Dvorak)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <description>Polish (programmer Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pt</name> + <!-- Keyboard indicator for Portuguese layouts --> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Portuguese (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Portuguese (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Portuguese (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Portuguese (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_sundeadkeys</name> + <description>Portuguese (Macintosh, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <description>Portuguese (Nativo)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <description>Portuguese (Nativo for US keyboards)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <description>Esperanto (Portugal, Nativo)</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ro</name> + <!-- Keyboard indicator for Romanian layouts --> + <shortDescription>ro</shortDescription> + <description>Romanian</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cedilla</name> + <description>Romanian (cedilla)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <description>Romanian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std_cedilla</name> + <description>Romanian (standard cedilla)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Romanian (Windows)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Russian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_winkeys</name> + <description>Russian (phonetic, Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_YAZHERTY</name> + <description>Russian (phonetic, YAZHERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <description>Russian (typewriter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <description>Russian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter-legacy</name> + <description>Russian (typewriter, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tt</name> + <description>Tatar</description> + <languageList> + <iso639Id>tat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_legacy</name> + <description>Ossetian (legacy)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_winkeys</name> + <description>Ossetian (Windows)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv</name> + <description>Chuvash</description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv_latin</name> + <description>Chuvash (Latin)</description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>udm</name> + <description>Udmurt</description> + <languageList> + <iso639Id>udm</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kom</name> + <description>Komi</description> + <languageList> + <iso639Id>kom</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>sah</name> + <description>Yakut</description> + <languageList> + <iso639Id>sah</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>xal</name> + <description>Kalmyk</description> + <languageList> + <iso639Id>xal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dos</name> + <description>Russian (DOS)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Russian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>srp</name> + <description>Serbian (Russia)</description> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bak</name> + <description>Bashkirian</description> + <languageList> + <iso639Id>bak</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>chm</name> + <description>Mari</description> + <languageList> + <iso639Id>chm</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_azerty</name> + <description>Russian (phonetic, AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_dvorak</name> + <description>Russian (phonetic, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_fr</name> + <description>Russian (phonetic, French)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>rs</name> + <!-- Keyboard indicator for Serbian layouts --> + <shortDescription>sr</shortDescription> + <description>Serbian</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>yz</name> + <description>Serbian (Cyrillic, ZE and ZHE swapped)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Serbian (Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <description>Serbian (Latin, Unicode)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <description>Serbian (Latin, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <description>Serbian (Latin, Unicode, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Serbian (Cyrillic, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <description>Serbian (Latin, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rue</name> + <description>Pannonian Rusyn</description> + <languageList> + <iso639Id>rue</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>si</name> + <!-- Keyboard indicator for Slovenian layouts --> + <shortDescription>sl</shortDescription> + <description>Slovenian</description> + <languageList> + <iso639Id>slv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Slovenian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Slovenian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sk</name> + <!-- Keyboard indicator for Slovak layouts --> + <shortDescription>sk</shortDescription> + <description>Slovak</description> + <languageList> + <iso639Id>slk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <description>Slovak (extended backslash)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Slovak (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <description>Slovak (QWERTY, extended backslash)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>es</name> + <!-- Keyboard indicator for Spanish layouts --> + <shortDescription>es</shortDescription> + <description>Spanish</description> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Spanish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Spanish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>Spanish (dead tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Spanish (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Spanish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ast</name> + <shortDescription>ast</shortDescription> + <description>Asturian (Spain, with bottom-dot H and L)</description> + <languageList> + <iso639Id>ast</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cat</name> + <shortDescription>ca</shortDescription> + <description>Catalan (Spain, with middle-dot L)</description> + <languageList> + <iso639Id>cat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Spanish (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>se</name> + <!-- Keyboard indicator for Swedish layouts --> + <shortDescription>sv</shortDescription> + <description>Swedish</description> + <languageList> + <iso639Id>swe</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Swedish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Swedish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Sweden, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>rus_nodeadkeys</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Sweden, phonetic, no dead keys)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Sweden)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Swedish (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>svdvorak</name> + <description>Swedish (Svdvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us_dvorak</name> + <description>Swedish (Dvorak, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Swedish (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>swl</name> + <description>Swedish Sign Language</description> + <languageList> + <iso639Id>swl</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ch</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland)</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>gsw</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>German (Switzerland, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_nodeadkeys</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_sundeadkeys</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_nodeadkeys</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, no dead keys)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_sundeadkeys</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, Sun dead keys)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_mac</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, Macintosh)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>de_mac</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sy</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic (Syria)</description> + <languageList> + <iso639Id>syr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>syc</name> + <!-- Keyboard indicator for Syriac layouts --> + <shortDescription>syc</shortDescription> + <description>Syriac</description> + </configItem> + </variant> + <variant> + <configItem> + <name>syc_phonetic</name> + <!-- Keyboard indicator for Syriac layouts --> + <shortDescription>syc</shortDescription> + <description>Syriac (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tj</name> + <!-- Keyboard indicator for Tajik layouts --> + <shortDescription>tg</shortDescription> + <description>Tajik</description> + <languageList> + <iso639Id>tgk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Tajik (legacy)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lk</name> + <!-- Keyboard indicator for Sinhala layouts --> + <shortDescription>si</shortDescription> + <description>Sinhala (phonetic)</description> + <languageList> + <iso639Id>sin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tam_unicode</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (Sri Lanka, TamilNet '99)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_TAB</name> + <description>Tamil (Sri Lanka, TamilNet '99, TAB encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <!-- Keyboard indicator for US layouts --> + <shortDescription>us</shortDescription> + <description>Sinhala (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>th</name> + <!-- Keyboard indicator for Thai layouts --> + <shortDescription>th</shortDescription> + <description>Thai</description> + <languageList> + <iso639Id>tha</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tis</name> + <description>Thai (TIS-820.2538)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>pat</name> + <description>Thai (Pattachote)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tr</name> + <!-- Keyboard indicator for Turkish layouts --> + <shortDescription>tr</shortDescription> + <description>Turkish</description> + <languageList> + <iso639Id>tur</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>f</name> + <description>Turkish (F)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt</name> + <description>Turkish (Alt-Q)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Turkish (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Turkish (intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish F)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish Alt-Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tw</name> + <!-- Keyboard indicator for Taiwanese layouts --> + <shortDescription>zh</shortDescription> + <description>Taiwanese</description> + <languageList> + <iso639Id>fox</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>indigenous</name> + <description>Taiwanese (indigenous)</description> + <languageList> + <iso639Id>ami</iso639Id> + <iso639Id>tay</iso639Id> + <iso639Id>bnn</iso639Id> + <iso639Id>ckv</iso639Id> + <iso639Id>pwn</iso639Id> + <iso639Id>pyu</iso639Id> + <iso639Id>dru</iso639Id> + <iso639Id>ais</iso639Id> + <iso639Id>ssf</iso639Id> + <iso639Id>tao</iso639Id> + <iso639Id>tsu</iso639Id> + <iso639Id>trv</iso639Id> + <iso639Id>xnb</iso639Id> + <iso639Id>sxr</iso639Id> + <iso639Id>uun</iso639Id> + <iso639Id>fos</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>saisiyat</name> + <!-- Keyboard indicator for Saisiyat layouts --> + <shortDescription>xsy</shortDescription> + <description>Saisiyat (Taiwan)</description> + <languageList> + <iso639Id>xsy</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ua</name> + <!-- Keyboard indicator for Ukranian layouts --> + <shortDescription>uk</shortDescription> + <description>Ukrainian</description> + <languageList> + <iso639Id>ukr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Ukrainian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <description>Ukrainian (typewriter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Ukrainian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <description>Ukrainian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu</name> + <description>Ukrainian (standard RSTU)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu_ru</name> + <description>Russian (Ukraine, standard RSTU)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>homophonic</name> + <description>Ukrainian (homophonic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gb</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (UK)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>extd</name> + <description>English (UK, extended, Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>English (UK, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>English (UK, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorakukp</name> + <description>English (UK, Dvorak, with UK punctuation)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>English (UK, Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_intl</name> + <description>English (UK, Macintosh, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>English (UK, Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>pl</name> + <!-- Keyboard indicator for Polish layouts --> + <shortDescription>pl</shortDescription> + <description>Polish (British keyboard)</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>uz</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>latin</name> + <description>Uzbek (Latin)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>vn</name> + <!-- Keyboard indicator for Vietnamese layouts --> + <shortDescription>vi</shortDescription> + <description>Vietnamese</description> + <languageList> + <iso639Id>vie</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>us</name> + <description>Vietnamese (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr</name> + <description>Vietnamese (French)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kr</name> + <!-- Keyboard indicator for Korean layouts --> + <shortDescription>ko</shortDescription> + <description>Korean</description> + <languageList> + <iso639Id>kor</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kr104</name> + <description>Korean (101/104-key compatible)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nec_vndr/jp</name> + <!-- Keyboard indicator for Japaneses --> + <shortDescription>ja</shortDescription> + <description>Japanese (PC-98)</description> + <countryList> + <iso3166Id>JP</iso3166Id> + </countryList> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ie</name> + <!-- Keyboard indicator for Irish layouts --> + <shortDescription>ie</shortDescription> + <description>Irish</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>CloGaelach</name> + <description>CloGaelach</description> + <languageList> + <iso639Id>gle</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>UnicodeExpert</name> + <description>Irish (UnicodeExpert)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam</name> + <description>Ogham</description> + <languageList> + <iso639Id>sga</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam_is434</name> + <description>Ogham (IS434)</description> + <languageList> + <iso639Id>sga</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pk</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (Pakistan)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>urd-crulp</name> + <description>Urdu (Pakistan, CRULP)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-nla</name> + <description>Urdu (Pakistan, NLA)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ara</name> + <shortDescription>ar</shortDescription> + <description>Arabic (Pakistan)</description> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>snd</name> + <!-- Keyboard indicator for Sindhi layouts --> + <shortDescription>sd</shortDescription> + <description>Sindhi</description> + <languageList> + <iso639Id>snd</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mv</name> + <!-- Keyboard indicator for Dhivehi layouts --> + <shortDescription>dv</shortDescription> + <description>Dhivehi</description> + <languageList> + <iso639Id>div</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>za</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (South Africa)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>epo</name> + <!-- Keyboard indicator for Esperanto layouts --> + <shortDescription>eo</shortDescription> + <description>Esperanto</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Esperanto (legacy)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>np</name> + <!-- Keyboard indicator for Nepali layouts --> + <shortDescription>ne</shortDescription> + <description>Nepali</description> + <languageList> + <iso639Id>nep</iso639Id> + <!-- sat-Deva used in Nepal: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Nigeria)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>igbo</name> + <!-- Keyboard indicator for Igbo layouts --> + <shortDescription>ig</shortDescription> + <description>Igbo</description> + <languageList> + <iso639Id>ibo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>yoruba</name> + <!-- Keyboard indicator for Yoruba layouts --> + <shortDescription>yo</shortDescription> + <description>Yoruba</description> + <languageList> + <iso639Id>yor</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <!-- Keyboard indicator for Hausa layouts --> + <shortDescription>ha</shortDescription> + <description>Hausa (Nigeria)</description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>et</name> + <!-- Keyboard indicator for Amharic layouts --> + <shortDescription>am</shortDescription> + <description>Amharic</description> + <languageList> + <iso639Id>amh</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>sn</name> + <!-- Keyboard indicator for Wolof layouts --> + <shortDescription>wo</shortDescription> + <description>Wolof</description> + <languageList> + <iso639Id>wol</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>brai</name> + <!-- Keyboard indicator for Braille layouts --> + <shortDescription>brl</shortDescription> + <description>Braille</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>left_hand</name> + <description>Braille (left-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>left_hand_invert</name> + <description>Braille (left-handed inverted thumb)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>right_hand</name> + <description>Braille (right-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>right_hand_invert</name> + <description>Braille (right-handed inverted thumb)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tm</name> + <!-- Keyboard indicator for Turkmen layouts --> + <shortDescription>tk</shortDescription> + <description>Turkmen</description> + <languageList> + <iso639Id>tuk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alt</name> + <description>Turkmen (Alt-Q)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ml</name> + <!-- Keyboard indicator for Bambara layouts --> + <shortDescription>bm</shortDescription> + <description>Bambara</description> + <languageList> + <iso639Id>bam</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-oss</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Mali, alt.)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us-mac</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Mali, US, Macintosh)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us-intl</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Mali, US, intl.)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tz</name> + <!-- Keyboard indicator for Swahili layouts --> + <shortDescription>sw</shortDescription> + <description>Swahili (Tanzania)</description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>tg</name> + <shortDescription>fr-tg</shortDescription> + <description>French (Togo)</description> + <languageList> + <iso639Id>fra</iso639Id> + <iso639Id>ajg</iso639Id> + <iso639Id>blo</iso639Id> + <iso639Id>kpo</iso639Id> + <iso639Id>ewe</iso639Id> + <iso639Id>fon</iso639Id> + <iso639Id>fue</iso639Id> + <iso639Id>gej</iso639Id> + <iso639Id>ife</iso639Id> + <iso639Id>kbp</iso639Id> + <iso639Id>las</iso639Id> + <iso639Id>dop</iso639Id> + <iso639Id>mfg</iso639Id> + <iso639Id>nmz</iso639Id> + <iso639Id>bud</iso639Id> + <iso639Id>gng</iso639Id> + <iso639Id>kdh</iso639Id> + <iso639Id>soy</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ke</name> + <!-- Keyboard indicator for Swahili layouts --> + <shortDescription>sw</shortDescription> + <description>Swahili (Kenya)</description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kik</name> + <!-- Keyboard indicator for Kikuyu layouts --> + <shortDescription>ki</shortDescription> + <description>Kikuyu</description> + <languageList> + <iso639Id>kik</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bw</name> + <!-- Keyboard indicator for Tswana layouts --> + <shortDescription>tn</shortDescription> + <description>Tswana</description> + <languageList> + <iso639Id>tsn</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ph</name> + <!-- Keyboard indicator for Filipino layouts --> + <shortDescription>ph</shortDescription> + <description>Filipino</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>qwerty-bay</name> + <description>Filipino (QWERTY, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak</name> + <description>Filipino (Capewell-Dvorak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak-bay</name> + <description>Filipino (Capewell-Dvorak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6</name> + <description>Filipino (Capewell-QWERF 2006, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6-bay</name> + <description>Filipino (Capewell-QWERF 2006, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Filipino (Colemak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak-bay</name> + <description>Filipino (Colemak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Filipino (Dvorak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-bay</name> + <description>Filipino (Dvorak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>md</name> + <shortDescription>md</shortDescription> + <description>Moldavian</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>gag</name> + <shortDescription>gag</shortDescription> + <description>Moldavian (Gagauz)</description> + <languageList> + <iso639Id>gag</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>id</name> + <shortDescription>id</shortDescription> + <description>Indonesian (Arab Melayu, phonetic)</description> + <languageList> + <iso639Id>ind</iso639Id> + <iso639Id>msa</iso639Id> + <iso639Id>min</iso639Id> + <iso639Id>ace</iso639Id> + <iso639Id>bjn</iso639Id> + <iso639Id>tsg</iso639Id> + <iso639Id>mfa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phoneticx</name> + <description>Indonesian (Arab Melayu, extended phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>jv</name> + <shortDescription>jv</shortDescription> + <description>Indonesian (Javanese)</description> + <languageList> + <iso639Id>jv</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>my</name> + <shortDescription>ms</shortDescription> + <description>Malay (Jawi, Arabic Keyboard)</description> + <languageList> + <iso639Id>ind</iso639Id> + <iso639Id>msa</iso639Id> + <iso639Id>min</iso639Id> + <iso639Id>ace</iso639Id> + <iso639Id>bjn</iso639Id> + <iso639Id>tsg</iso639Id> + <iso639Id>mfa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Malay (Jawi, phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + </layoutList> + <optionList> + <group allowMultipleSelection="true"> + <!-- The key combination used to switch between groups --> + <configItem> + <name>grp</name> + <description>Switching to another layout</description> + </configItem> + <option> + <configItem> + <name>grp:switch</name> + <description>Right Alt (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lswitch</name> + <description>Left Alt (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_switch</name> + <description>Left Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_switch</name> + <description>Right Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_switch</name> + <description>Any Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:menu_switch</name> + <description>Menu (while pressed), Shift+Menu for Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_switch</name> + <description>Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_switch</name> + <description>Right Ctrl (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:toggle</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lalt_toggle</name> + <description>Left Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_toggle</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_toggle</name> + <description>Shift+Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_switch</name> + <description>Caps Lock to first layout; Shift+Caps Lock to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_menu_switch</name> + <description>Left Win to first layout; Right Win/Menu to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_rctrl_switch</name> + <description>Left Ctrl to first layout; Right Ctrl to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_caps_toggle</name> + <description>Alt+Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shifts_toggle</name> + <description>Both Shift together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alts_toggle</name> + <description>Both Alt together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrls_toggle</name> + <description>Both Ctrl together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_shift_toggle</name> + <description>Ctrl+Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lshift_toggle</name> + <description>Left Ctrl+Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_rshift_toggle</name> + <description>Right Ctrl+Right Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_alt_toggle</name> + <description>Alt+Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_shift_toggle</name> + <description>Alt+Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lalt_lshift_toggle</name> + <description>Left Alt+Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_space_toggle</name> + <description>Alt+Space</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:menu_toggle</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_toggle</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_space_toggle</name> + <description>Win+Space</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_toggle</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lshift_toggle</name> + <description>Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rshift_toggle</name> + <description>Right Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_toggle</name> + <description>Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_toggle</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:sclk_toggle</name> + <description>Scroll Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lwin_rctrl_menu</name> + <description>Left Ctrl+Left Win to first layout; Right Ctrl+Menu to second layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lwin_toggle</name> + <description>Left Ctrl+Left Win</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- The key combination used to choose the 3rd (and 4th, together with Shift) + level of symbols --> + <configItem> + <name>lv3</name> + <description>Key to choose the 3rd level</description> + </configItem> + <option> + <configItem> + <name>lv3:switch</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:menu_switch</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:win_switch</name> + <description>Any Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lwin_switch</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:rwin_switch</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:alt_switch</name> + <description>Any Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lalt_switch</name> + <description>Left Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch_multikey</name> + <description>Right Alt; Shift+Right Alt as Compose</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_alt</name> + <description>Right Alt never chooses 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:enter_switch</name> + <description>Enter on keypad</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch</name> + <description>Backslash</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch</name> + <description>The "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch_latch</name> + <description>Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch_latch</name> + <description>Backslash; acts as onetime lock when pressed together with another 3rd level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch_latch</name> + <description>The "< >" key; acts as onetime lock when pressed together with another 3rd level chooser</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Ctrl" key --> + <configItem> + <name>ctrl</name> + <description>Ctrl position</description> + </configItem> + <option> + <configItem> + <name>ctrl:nocaps</name> + <description>Caps Lock as Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:lctrl_meta</name> + <description>Left Ctrl as Meta</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swapcaps</name> + <description>Swap Ctrl and Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swapcaps_hyper</name> + <description>Caps Lock as Ctrl, Ctrl as Hyper</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ac_ctrl</name> + <description>To the left of "A"</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:aa_ctrl</name> + <description>At the bottom left</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:rctrl_ralt</name> + <description>Right Ctrl as Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:menu_rctrl</name> + <description>Menu as Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lalt_lctl</name> + <description>Swap Left Alt with Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lwin_lctl</name> + <description>Swap Left Win with Left Ctrl</description> + </configItem> + </option><option> + <configItem> + <name>ctrl:swap_rwin_rctl</name> + <description>Swap Right Win with Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lalt_lctl_lwin</name> + <description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Using startard LEDs to indicate the alternative (not first) group(s) --> + <configItem> + <name>grp_led</name> + <description>Use keyboard LED to show alternative layout</description> + </configItem> + <option> + <configItem> + <name>grp_led:num</name> + <description>Num Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:caps</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:scroll</name> + <description>Scroll Lock</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Using LEDs to indicate modifiers --> + <configItem> + <name>mod_led</name> + <description>Use keyboard LED to indicate modifiers</description> + </configItem> + <option> + <configItem> + <name>mod_led:compose</name> + <description>Compose</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Select a keypad type --> + <configItem> + <name>keypad</name> + <description>Layout of numeric keypad</description> + </configItem> + <option> + <configItem> + <name>keypad:legacy</name> + <description>Legacy</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss</name> + <description>Unicode arrows and math operators</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future</name> + <description>Unicode arrows and math operators on default level</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:legacy_wang</name> + <description>Legacy Wang 724</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss_wang</name> + <description>Wang 724 keypad with Unicode arrows and math operators</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future_wang</name> + <description>Wang 724 keypad with Unicode arrows and math operators on default level</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:hex</name> + <description>Hexadecimal</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:atm</name> + <description>Phone and ATM style</description> + </configItem> + </option> + </group> + <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place --> + <group allowMultipleSelection="false"> + <!-- Select a keypad KPDL variant --> + <configItem> + <name>kpdl</name> + <description>Numeric keypad Delete behavior</description> + </configItem> + <option> + <configItem> + <!-- Actually, with KP_DECIMAL, as the old keypad(dot) --> + <name>kpdl:dot</name> + <description>Legacy key with dot</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:comma</name> + <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) --> + <description>Legacy key with comma</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss</name> + <description>Four-level key with dot</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss_latin9</name> + <description>Four-level key with dot, Latin-9 only</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:commaoss</name> + <description>Four-level key with comma</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:momayyezoss</name> + <description>Four-level key with momayyez</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:kposs</name> + <!-- This assumes the KP_ abstract symbols are actually useful for some apps + The description needs to be rewritten --> + <description>Four-level key with abstract separators</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:semi</name> + <description>Semicolon on third level</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Caps Lock tweaks. + "Internal" capitalization means capitalization using some internal tables. + Otherwise "as Shift" - means using next group. --> + <configItem> + <name>caps</name> + <description>Caps Lock behavior</description> + </configItem> + <option> + <configItem> + <name>caps:internal</name> + <description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:internal_nocancel</name> + <description>Caps Lock uses internal capitalization; Shift does not affect Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift</name> + <description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift_nocancel</name> + <description>Caps Lock acts as Shift with locking; Shift does not affect Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:capslock</name> + <description>Caps Lock toggles normal capitalization of alphabetic characters</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shiftlock</name> + <description>Caps Lock toggles Shift Lock (affects all keys)</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:swapescape</name> + <description>Swap Esc and Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:escape</name> + <description>Make Caps Lock an additional Esc</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:escape_shifted_capslock</name> + <description>Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:backspace</name> + <description>Make Caps Lock an additional Backspace</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:super</name> + <description>Make Caps Lock an additional Super</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:hyper</name> + <description>Make Caps Lock an additional Hyper</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:menu</name> + <description>Make Caps Lock an additional Menu key</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:numlock</name> + <description>Make Caps Lock an additional Num Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:ctrl_modifier</name> + <description>Caps Lock is also a Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:none</name> + <description>Caps Lock is disabled</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) --> + <configItem> + <name>altwin</name> + <description>Alt and Win behavior</description> + </configItem> + <option> + <configItem> + <name>altwin:menu</name> + <description>Add the standard behavior to Menu key</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:menu_win</name> + <description>Menu is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_alt</name> + <description>Alt and Meta are on Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:alt_win</name> + <description>Alt is mapped to Win and the usual Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_win</name> + <description>Ctrl is mapped to Win and the usual Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_alt_win</name> + <description>Ctrl is mapped to Alt, Alt to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_win</name> + <description>Meta is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:left_meta_win</name> + <description>Meta is mapped to Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:hyper_win</name> + <description>Hyper is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:alt_super_win</name> + <description>Alt is mapped to Right Win, Super to Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:swap_lalt_lwin</name> + <description>Left Alt is swapped with Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:swap_alt_win</name> + <description>Alt is swapped with Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:prtsc_rwin</name> + <description>Win is mapped to PrtSc and the usual Win</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys --> + <configItem> + <name>Compose key</name> + <description>Position of Compose key</description> + </configItem> + <option> + <configItem> + <name>compose:ralt</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lwin</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lwin-altgr</name> + <description>3rd level of Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rwin</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rwin-altgr</name> + <description>3rd level of Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:menu</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:menu-altgr</name> + <description>3rd level of Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lctrl</name> + <description>Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lctrl-altgr</name> + <description>3rd level of Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rctrl</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rctrl-altgr</name> + <description>3rd level of Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:caps</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:caps-altgr</name> + <description>3rd level of Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:102</name> + <description>The "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:102-altgr</name> + <description>3rd level of the "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:paus</name> + <description>Pause</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:prsc</name> + <description>PrtSc</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:sclk</name> + <description>Scroll Lock</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>compat</name> + <description>Compatibility options</description> + </configItem> + <option> + <configItem> + <name>numpad:pc</name> + <description>Default numeric keypad keys</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:mac</name> + <description>Numeric keypad always enters digits (as in macOS)</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:microsoft</name> + <description>Num Lock on: digits; Shift for arrows. Num Lock off: arrows (as in Windows)</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:shift3</name> + <description>Shift does not cancel Num Lock, chooses 3rd level instead</description> + </configItem> + </option> + <option> + <configItem> + <name>srvrkeys:none</name> + <description>Special keys (Ctrl+Alt+<key>) handled in a server</description> + </configItem> + </option> + <option> + <configItem> + <name>apple:alupckeys</name> + <description>Apple Aluminium emulates Pause, PrtSc, Scroll Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:breaks_caps</name> + <description>Shift cancels Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>misc:typo</name> + <description>Enable extra typographic characters</description> + </configItem> + </option> + <option> + <configItem> + <name>misc:apl</name> + <description>Enable APL overlay characters</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock</name> + <description>Both Shift together enable Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock_cancel</name> + <description>Both Shift together enable Caps Lock; one Shift key disables it</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_shiftlock</name> + <description>Both Shift together enable Shift Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:pointerkeys</name> + <description>Shift + Num Lock enables PointerKeys</description> + </configItem> + </option> + <option> + <configItem> + <name>grab:break_actions</name> + <description>Allow breaking grabs with keyboard actions (warning: security risk)</description> + </configItem> + </option> + <option> + <configItem> + <name>grab:debug</name> + <description>Allow grab and window tree logging</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Special shortcuts for the Euro character --> + <configItem> + <name>currencysign</name> + <description>Currency signs</description> + </configItem> + <option> + <configItem> + <name>eurosign:e</name> + <description>Euro on E</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:2</name> + <description>Euro on 2</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:4</name> + <description>Euro on 4</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:5</name> + <description>Euro on 5</description> + </configItem> + </option> + <option> + <configItem> + <name>rupeesign:4</name> + <description>Rupee on 4</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>lv5</name> + <description>Key to choose 5th level</description> + </configItem> + <option> + <configItem> + <name>lv5:lsgt_switch</name> + <description>The "< >" key chooses 5th level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch</name> + <description>Right Alt chooses 5th level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock</name> + <description>The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock</name> + <description>Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock</name> + <description>Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> +<!-- + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <description>The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock_cancel</name> + <description>Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock_cancel</name> + <description>Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <description>The "< >" key chooses 5th level; acts as onetime lock lock when pressed together with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> +--> + </group> + <group allowMultipleSelection="false"> + <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level --> + <configItem> + <name>nbsp</name> + <description>Non-breaking space input</description> + </configItem> + <option> + <configItem> + <name>nbsp:none</name> + <description>Usual space at any level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level2</name> + <description>Non-breaking space at the 2nd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3</name> + <description>Non-breaking space at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3s</name> + <description>Non-breaking space at the 3rd level, nothing at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3n</name> + <description>Non-breaking space at the 3rd level, thin non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4</name> + <description>Non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4n</name> + <description>Non-breaking space at the 4th level, thin non-breaking space at the 6th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4nl</name> + <description>Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift)</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2</name> + <description>Zero-width non-joiner at the 2nd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3</name> + <description>Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3nb4</name> + <description>Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3s</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, nothing at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3zwj4</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3nnb4</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj3zwj4</name> + <description>Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>japan</name> + <description>Japanese keyboard options</description> + </configItem> + <option> + <configItem> + <name>japan:kana_lock</name> + <description>Kana Lock key is locking</description> + </configItem> + </option> + <option> + <configItem> + <name>japan:nicola_f_bs</name> + <description>NICOLA-F style Backspace</description> + </configItem> + </option> + <option> + <configItem> + <name>japan:hztg_escape</name> + <description>Make Zenkaku Hankaku an additional Esc</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>korean</name> + <description>Korean Hangul/Hanja keys</description> + </configItem> + <option> + <configItem> + <name>korean:ralt_hangul</name> + <description>Make right Alt a Hangul key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:rctrl_hangul</name> + <description>Make right Ctrl a Hangul key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:ralt_hanja</name> + <description>Make right Alt a Hanja key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:rctrl_hanja</name> + <description>Make right Ctrl a Hanja key</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <configItem> + <name>esperanto</name> + <description>Esperanto letters with superscripts</description> + </configItem> + <option> + <configItem> + <name>esperanto:qwerty</name> + <description>At the corresponding key in a QWERTY layout</description> + </configItem> + </option> + <option> + <configItem> + <name>esperanto:dvorak</name> + <description>At the corresponding key in a Dvorak layout</description> + </configItem> + </option> + <option> + <configItem> + <name>esperanto:colemak</name> + <description>At the corresponding key in a Colemak layout</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>solaris</name> + <description>Old Solaris keycodes compatibility</description> + </configItem> + <option> + <configItem> + <name>solaris:sun_compat</name> + <description>Sun key compatibility</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>terminate</name> + <description>Key sequence to kill the X server</description> + </configItem> + <option> + <configItem> + <name>terminate:ctrl_alt_bksp</name> + <description>Ctrl+Alt+Backspace</description> + </configItem> + </option> + </group> + </optionList> +</xkbConfigRegistry> diff --git a/test/data/rules/evdev b/test/data/rules/evdev index 872e1de..e949490 100644 --- a/test/data/rules/evdev +++ b/test/data/rules/evdev @@ -1,4 +1,5 @@ -// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part +// // // Rules for resolving XKB components for use with XFree86 // Copyright 1996 by Joseph Moss @@ -13,20 +14,17 @@ // ori pk ru scc sy syr tel th tj tam ua uz // PC models -! $pcmodels = pc101 pc102 pc104 pc105 +! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 // Jolla devices and keyboards ! $jollamodels = jollasbj // Microsoft models (using MS geometry) -! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface // Nokia devices and keyboards ! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 -// PC geometries - they have special geometry but symbols are mostly pc105 -! $pcgeometries = latitude - // TypeMatrix geometries ! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 @@ -85,14 +83,12 @@ ! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat -! $htcdreamlayouts = us it de ! $evdevkbds = ibm_spacesaver ! $dvoraklayouts = br ca de ee es fr gb no pl se us ! model = keycodes - pc98 = evdev(pc98) applealu_jis = evdev+macintosh(jisevdev) $jollamodels = evdev+jolla(jolla) olpc = evdev+olpc(olpc) @@ -127,7 +123,6 @@ omnikey101 = northgate(omnikey101) sanwaskbkg3 = sanwa(sanwaskbkg3) $pcmodels = pc(%m) - $pcgeometries = pc(%m) everex = everex(STEPnote) thinkpad = thinkpad(intl) thinkpad60 = thinkpad(60) @@ -321,86 +316,85 @@ ws007sh * = pc+sharp_vndr/ws007sh(basic) ws011sh * = pc+sharp_vndr/ws011sh(basic) ws020sh * = pc+sharp_vndr/ws020sh(basic) - htcdream $htcdreamlayouts = %l(htcdream) * $nonlatin = pc+us+%l%(v):2 * * = pc+%l%(v) -! model layout[1] = symbols - * ar = pc+ara%(v[1]) - * ben = pc+in(ben) - * bs = pc+ba%(v[1]) - * cs = pc+rs%(v[1]) - * cz_qwerty = pc+cz(qwerty) - * dev = pc+in(deva) - * dvorak = pc+us(dvorak) - * dzdwi = pc+bt%(v[1]) - * el = pc+gr%(v[1]) - * en_US = pc+latin%(v[1]) - * guj = pc+in(guj) - * gur = pc+in(guru) - * iu = pc+ca(ike) - * lo = pc+la%(v[1]) - * kan = pc+in(kan) - * mi = pc+mao%(v[1]) - * ogham = pc+ie(ogam) - * ori = pc+ie(ori) - * sapmi = pc+no(smi) - * sr = pc+srp%(v[1]) - * syr = pc+sy(syc) - * tel = pc+in(tel) - * tml = pc+in(tam) - * yu = pc+srp%(v[1]) - * fr-latin9 = pc+fr(latin9) - * us_intl = pc+us(alt-intl) - * ben(basic) = pc+in(ben) - * ben(probhat) = pc+in(ben_probhat) - * dev(basic) = pc+in(deva) - * dvorak($dvoraklayouts) = pc+%v(dvorak) - * dvorak(basic) = pc+us(dvorak) - * dvorak(pl_basic) = pc+pl(dvorak) - * dvorak(pl) = pc+pl(dvorak_quotes) - * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) - * dzdwi(basic) = pc+bt(basic) - * fi(basic) = pc+fi(classic) - * ge(azerty_tskapo) = pc+fr(geo) - * guj(basic) = pc+in(guj) - * gur(basic) = pc+in(guru) - * ie(laptop) = pc+ie(basic) - * ie(CloGaelachLaptop) = pc+ie(CloGaelach) - * in(urd) = pc+in(urd-phonetic) - * iu(basic) = pc+ca(ike) - * lo(basic) = pc+la(basic) - * kan(basic) = pc+in(kan) - * mal(basic) = pc+in(mal) - * mal(mlplusnum) = pc+in(mal) - * ogham(basic) = pc+ie(ogam) - * ogham(laptop) = pc+ie(ogam) - * ogham(is434) = pc+ie(ogam_is434) - * ogham(is434laptop) = pc+ie(ogam_is434) - * ori(basic) = pc+in(ori) - * ro(de) = pc+ro(winkeys) - * ro(us) = pc+ro(std) - * ro(academic) = pc+ro(std) - * ro(std_comma) = pc+ro(std) - * ro(comma) = pc+ro(basic) - * ru(os) = pc+ru(os_legacy) - * pk(urd) = pc+pk(urd-phonetic) - * sapmi(basic) = pc+no(smi) - * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) - * sapmi(sefi) = pc+fi(smi) - * sin(phonetic-static) = pc+in(sin_phonetic) - * syr(basic) = pc+sy(syc) - * syr(phonetic) = pc+sy(syc_phonetic) - * tam(INSCRIPT) = pc+in(tam) - * tam(UNI) = pc+in(tam_unicode) - * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) - * tam(TAB) = pc+in(tam_TAB) - * tam(TSCII) = pc+in(tam_TSCII) - * tel(basic) = pc+in(tel) - * yu(basic) = pc+srp(latin) - * yu(unicode) = pc+srp(latinunicode) - * yu(yz) = pc+srp(latinyz) - * yu(unicodeyz) = pc+srp(latinunicodeyz) +! model layout[1] = symbols + * ar = pc+ara%(v[1]) + * ben = pc+in(ben) + * bs = pc+ba%(v[1]) + * cs = pc+rs%(v[1]) + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt%(v[1]) + * el = pc+gr%(v[1]) + * en_US = pc+latin%(v[1]) + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la%(v[1]) + * kan = pc+in(kan) + * mi = pc+mao%(v[1]) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp%(v[1]) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp%(v[1]) + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) @@ -418,55 +412,55 @@ * * = pc+%l[1]%(v[1]) ! model layout[1] variant[1] = symbols - * ben basic = pc+in(ben) - * ben probhat = pc+in(ben_probhat) - * dev basic = pc+in(deva) - * dvorak $dvoraklayouts = pc+%v(dvorak) - * dvorak basic = pc+us(dvorak) - * dvorak pl_basic = pc+pl(dvorak) - * dvorak pl = pc+pl(dvorak_quotes) - * dvorak pl_altquotes = pc+pl(dvorak_altquotes) - * dzdwi basic = pc+bt(basic) - * fi basic = pc+fi(classic) - * ge azerty_tskapo = pc+fr(geo) - * guj basic = pc+in(guj) - * gur basic = pc+in(guru) - * ie laptop = pc+ie(basic) - * ie CloGaelachLaptop = pc+ie(CloGaelach) - * in urd = pc+in(urd-phonetic) - * iu basic = pc+ca(ike) - * lo basic = pc+la(basic) - * kan basic = pc+in(kan) - * mal basic = pc+in(mal) - * mal mlplusnum = pc+in(mal) - * ogham basic = pc+ie(ogam) - * ogham laptop = pc+ie(ogam) - * ogham is434 = pc+ie(ogam_is434) - * ogham is434laptop = pc+ie(ogam_is434) - * ori basic = pc+in(ori) - * ro de = pc+ro(winkeys) - * ro us = pc+ro(std) - * ro academic = pc+ro(std) - * ro std_comma = pc+ro(std) - * ro comma = pc+ro(basic) - * ru os = pc+ru(os_legacy) - * pk urd = pc+pk(urd-phonetic) - * sapmi basic = pc+no(smi) - * sapmi nodeadkeys = pc+no(smi_nodeadkeys) - * sapmi sefi = pc+fi(smi) - * sin phonetic-static = pc+in(sin_phonetic) - * syr basic = pc+sy(syc) - * syr phonetic = pc+sy(syc_phonetic) - * tam INSCRIPT = pc+in(tam) - * tam UNI = pc+in(tam_unicode) - * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) - * tam TAB = pc+in(tam_TAB) - * tam TSCII = pc+in(tam_TSCII) - * tel basic = pc+in(tel) - * yu basic = pc+srp(latin) - * yu unicode = pc+srp(latinunicode) - * yu yz = pc+srp(latinyz) - * yu unicodeyz = pc+srp(latinunicodeyz) + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) ! model layout[2] = symbols * ar = +ara%(v[2]):2 @@ -495,55 +489,55 @@ * yu = +srp%(v[2]):2 * fr-latin9 = +fr(latin9):2 * us_intl = +us(alt-intl):2 - * ben(basic) = +in(ben):2 - * ben(probhat) = +in(ben_probhat):2 - * dev(basic) = +in(deva):2 - * dvorak($dvoraklayouts) = +%v(dvorak):2 - * dvorak(basic) = +us(dvorak):2 - * dvorak(pl_basic) = +pl(dvorak):2 - * dvorak(pl) = +pl(dvorak_quotes):2 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 - * dzdwi(basic) = +bt(basic):2 - * fi(basic) = +fi(classic):2 - * ge(azerty_tskapo) = +fr(geo):2 - * guj(basic) = +in(guj):2 - * gur(basic) = +in(guru):2 - * ie(laptop) = +ie(basic):2 - * ie(CloGaelachLaptop) = +ie(CloGaelach):2 - * in(urd) = +in(urd-phonetic):2 - * iu(basic) = +ca(ike):2 - * lo(basic) = +la(basic):2 - * kan(basic) = +in(kan):2 - * mal(basic) = +in(mal):2 - * mal(mlplusnum) = +in(mal):2 - * ogham(basic) = +ie(ogam):2 - * ogham(laptop) = +ie(ogam):2 - * ogham(is434) = +ie(ogam_is434):2 - * ogham(is434laptop) = +ie(ogam_is434):2 - * ori(basic) = +in(ori):2 - * ro(de) = +ro(winkeys):2 - * ro(us) = +ro(std):2 - * ro(academic) = +ro(std):2 - * ro(std_comma) = +ro(std):2 - * ro(comma) = +ro(basic):2 - * ru(os) = +ru(os_legacy):2 - * pk(urd) = +pk(urd-phonetic):2 - * sapmi(basic) = +no(smi):2 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 - * sapmi(sefi) = +fi(smi):2 - * sin(phonetic-static) = +in(sin_phonetic):2 - * syr(basic) = +sy(syc):2 - * syr(phonetic) = +sy(syc_phonetic):2 - * tam(INSCRIPT) = +in(tam):2 - * tam(UNI) = +in(tam_unicode):2 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 - * tam(TAB) = +in(tam_TAB):2 - * tam(TSCII) = +in(tam_TSCII):2 - * tel(basic) = +in(tel):2 - * yu(basic) = +srp(latin):2 - * yu(unicode) = +srp(latinunicode):2 - * yu(yz) = +srp(latinyz):2 - * yu(unicodeyz) = +srp(latinunicodeyz):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * dvorak($dvoraklayouts) = +%v(dvorak):2 + * dvorak(basic) = +us(dvorak):2 + * dvorak(pl_basic) = +pl(dvorak):2 + * dvorak(pl) = +pl(dvorak_quotes):2 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 + * dzdwi(basic) = +bt(basic):2 + * fi(basic) = +fi(classic):2 + * ge(azerty_tskapo) = +fr(geo):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * ie(laptop) = +ie(basic):2 + * ie(CloGaelachLaptop) = +ie(CloGaelach):2 + * in(urd) = +in(urd-phonetic):2 + * iu(basic) = +ca(ike):2 + * lo(basic) = +la(basic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * mal(mlplusnum) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(laptop) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ogham(is434laptop) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * sapmi(basic) = +no(smi):2 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 + * sapmi(sefi) = +fi(smi):2 + * sin(phonetic-static) = +in(sin_phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tam(INSCRIPT) = +in(tam):2 + * tam(UNI) = +in(tam_unicode):2 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 + * tam(TAB) = +in(tam_TAB):2 + * tam(TSCII) = +in(tam_TSCII):2 + * tel(basic) = +in(tel):2 + * yu(basic) = +srp(latin):2 + * yu(unicode) = +srp(latinunicode):2 + * yu(yz) = +srp(latinyz):2 + * yu(unicodeyz) = +srp(latinunicodeyz):2 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2 nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2 $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 @@ -576,55 +570,55 @@ * yu = +srp%(v[3]):3 * fr-latin9 = +fr(latin9):3 * us_intl = +us(alt-intl):3 - * ben(basic) = +in(ben):3 - * ben(probhat) = +in(ben_probhat):3 - * dev(basic) = +in(deva):3 - * dvorak($dvoraklayouts) = +%v(dvorak):3 - * dvorak(basic) = +us(dvorak):3 - * dvorak(pl_basic) = +pl(dvorak):3 - * dvorak(pl) = +pl(dvorak_quotes):3 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 - * dzdwi(basic) = +bt(basic):3 - * fi(basic) = +fi(classic):3 - * ge(azerty_tskapo) = +fr(geo):3 - * guj(basic) = +in(guj):3 - * gur(basic) = +in(guru):3 - * ie(laptop) = +ie(basic):3 - * ie(CloGaelachLaptop) = +ie(CloGaelach):3 - * in(urd) = +in(urd-phonetic):3 - * iu(basic) = +ca(ike):3 - * lo(basic) = +la(basic):3 - * kan(basic) = +in(kan):3 - * mal(basic) = +in(mal):3 - * mal(mlplusnum) = +in(mal):3 - * ogham(basic) = +ie(ogam):3 - * ogham(laptop) = +ie(ogam):3 - * ogham(is434) = +ie(ogam_is434):3 - * ogham(is434laptop) = +ie(ogam_is434):3 - * ori(basic) = +in(ori):3 - * ro(de) = +ro(winkeys):3 - * ro(us) = +ro(std):3 - * ro(academic) = +ro(std):3 - * ro(std_comma) = +ro(std):3 - * ro(comma) = +ro(basic):3 - * ru(os) = +ru(os_legacy):3 - * pk(urd) = +pk(urd-phonetic):3 - * sapmi(basic) = +no(smi):3 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 - * sapmi(sefi) = +fi(smi):3 - * sin(phonetic-static) = +in(sin_phonetic):3 - * syr(basic) = +sy(syc):3 - * syr(phonetic) = +sy(syc_phonetic):3 - * tam(INSCRIPT) = +in(tam):3 - * tam(UNI) = +in(tam_unicode):3 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 - * tam(TAB) = +in(tam_TAB):3 - * tam(TSCII) = +in(tam_TSCII):3 - * tel(basic) = +in(tel):3 - * yu(basic) = +srp(latin):3 - * yu(unicode) = +srp(latinunicode):3 - * yu(yz) = +srp(latinyz):3 - * yu(unicodeyz) = +srp(latinunicodeyz):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * dvorak($dvoraklayouts) = +%v(dvorak):3 + * dvorak(basic) = +us(dvorak):3 + * dvorak(pl_basic) = +pl(dvorak):3 + * dvorak(pl) = +pl(dvorak_quotes):3 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 + * dzdwi(basic) = +bt(basic):3 + * fi(basic) = +fi(classic):3 + * ge(azerty_tskapo) = +fr(geo):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * ie(laptop) = +ie(basic):3 + * ie(CloGaelachLaptop) = +ie(CloGaelach):3 + * in(urd) = +in(urd-phonetic):3 + * iu(basic) = +ca(ike):3 + * lo(basic) = +la(basic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * mal(mlplusnum) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(laptop) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ogham(is434laptop) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * sapmi(basic) = +no(smi):3 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 + * sapmi(sefi) = +fi(smi):3 + * sin(phonetic-static) = +in(sin_phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tam(INSCRIPT) = +in(tam):3 + * tam(UNI) = +in(tam_unicode):3 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 + * tam(TAB) = +in(tam_TAB):3 + * tam(TSCII) = +in(tam_TSCII):3 + * tel(basic) = +in(tel):3 + * yu(basic) = +srp(latin):3 + * yu(unicode) = +srp(latinunicode):3 + * yu(yz) = +srp(latinyz):3 + * yu(unicodeyz) = +srp(latinunicodeyz):3 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3 nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3 $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 @@ -657,55 +651,55 @@ * yu = +srp%(v[4]):4 * fr-latin9 = +fr(latin9):4 * us_intl = +us(alt-intl):4 - * ben(basic) = +in(ben):4 - * ben(probhat) = +in(ben_probhat):4 - * dev(basic) = +in(deva):4 - * dvorak($dvoraklayouts) = +%v(dvorak):4 - * dvorak(basic) = +us(dvorak):4 - * dvorak(pl_basic) = +pl(dvorak):4 - * dvorak(pl) = +pl(dvorak_quotes):4 - * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 - * dzdwi(basic) = +bt(basic):4 - * fi(basic) = +fi(classic):4 - * ge(azerty_tskapo) = +fr(geo):4 - * guj(basic) = +in(guj):4 - * gur(basic) = +in(guru):4 - * ie(laptop) = +ie(basic):4 - * ie(CloGaelachLaptop) = +ie(CloGaelach):4 - * in(urd) = +in(urd-phonetic):4 - * iu(basic) = +ca(ike):4 - * lo(basic) = +la(basic):4 - * kan(basic) = +in(kan):4 - * mal(basic) = +in(mal):4 - * mal(mlplusnum) = +in(mal):4 - * ogham(basic) = +ie(ogam):4 - * ogham(laptop) = +ie(ogam):4 - * ogham(is434) = +ie(ogam_is434):4 - * ogham(is434laptop) = +ie(ogam_is434):4 - * ori(basic) = +in(ori):4 - * ro(de) = +ro(winkeys):4 - * ro(us) = +ro(std):4 - * ro(academic) = +ro(std):4 - * ro(std_comma) = +ro(std):4 - * ro(comma) = +ro(basic):4 - * ru(os) = +ru(os_legacy):4 - * pk(urd) = +pk(urd-phonetic):4 - * sapmi(basic) = +no(smi):4 - * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 - * sapmi(sefi) = +fi(smi):4 - * sin(phonetic-static) = +in(sin_phonetic):4 - * syr(basic) = +sy(syc):4 - * syr(phonetic) = +sy(syc_phonetic):4 - * tam(INSCRIPT) = +in(tam):4 - * tam(UNI) = +in(tam_unicode):4 - * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 - * tam(TAB) = +in(tam_TAB):4 - * tam(TSCII) = +in(tam_TSCII):4 - * tel(basic) = +in(tel):4 - * yu(basic) = +srp(latin):4 - * yu(unicode) = +srp(latinunicode):4 - * yu(yz) = +srp(latinyz):4 - * yu(unicodeyz) = +srp(latinunicodeyz):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * dvorak($dvoraklayouts) = +%v(dvorak):4 + * dvorak(basic) = +us(dvorak):4 + * dvorak(pl_basic) = +pl(dvorak):4 + * dvorak(pl) = +pl(dvorak_quotes):4 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 + * dzdwi(basic) = +bt(basic):4 + * fi(basic) = +fi(classic):4 + * ge(azerty_tskapo) = +fr(geo):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * ie(laptop) = +ie(basic):4 + * ie(CloGaelachLaptop) = +ie(CloGaelach):4 + * in(urd) = +in(urd-phonetic):4 + * iu(basic) = +ca(ike):4 + * lo(basic) = +la(basic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * mal(mlplusnum) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(laptop) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ogham(is434laptop) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * sapmi(basic) = +no(smi):4 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 + * sapmi(sefi) = +fi(smi):4 + * sin(phonetic-static) = +in(sin_phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tam(INSCRIPT) = +in(tam):4 + * tam(UNI) = +in(tam_unicode):4 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 + * tam(TAB) = +in(tam_TAB):4 + * tam(TSCII) = +in(tam_TSCII):4 + * tel(basic) = +in(tel):4 + * yu(basic) = +srp(latin):4 + * yu(unicode) = +srp(latinunicode):4 + * yu(yz) = +srp(latinyz):4 + * yu(unicodeyz) = +srp(latinunicodeyz):4 nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4 nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4 $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 @@ -941,26 +935,32 @@ ! layout option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle) * misc:typo = +typo(base) + * misc:apl = +apl(level3) ! layout[1] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1 * misc:typo = +typo(base):1 + * misc:apl = +apl(level3):1 ! layout[2] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2 * misc:typo = +typo(base):2 + * misc:apl = +apl(level3):2 ! layout[3] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3 * misc:typo = +typo(base):3 + * misc:apl = +apl(level3):3 ! layout[4] option = symbols $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4 * misc:typo = +typo(base):4 + * misc:apl = +apl(level3):4 ! option = symbols grp:shift_toggle = +group(shifts_toggle) altwin:menu = +altwin(menu) + altwin:menu_win = +altwin(menu_win) altwin:meta_alt = +altwin(meta_alt) altwin:alt_win = +altwin(alt_win) altwin:ctrl_win = +altwin(ctrl_win) @@ -1027,11 +1027,14 @@ lv3:lwin_switch = +level3(lwin_switch) lv3:rwin_switch = +level3(rwin_switch) lv3:enter_switch = +level3(enter_switch) + lv3:4_switch_isolated = +level3(4_switch_isolated) + lv3:9_switch_isolated = +level3(9_switch_isolated) caps:capslock = +capslock(capslock) caps:numlock = +capslock(numlock) caps:shiftlock = +capslock(shiftlock) caps:swapescape = +capslock(swapescape) caps:escape = +capslock(escape) + caps:escape_shifted_capslock = +capslock(escape_shifted_capslock) caps:backspace = +capslock(backspace) caps:super = +capslock(super) caps:hyper = +capslock(hyper) @@ -1041,6 +1044,8 @@ ctrl:nocaps = +ctrl(nocaps) ctrl:lctrl_meta = +ctrl(lctrl_meta) ctrl:swapcaps = +ctrl(swapcaps) + ctrl:swapcaps_hyper = +ctrl(swapcaps_hyper) + ctrl:swapcaps_and_switch_layout = +ctrl(swapcaps_and_switch_layout) ctrl:ac_ctrl = +ctrl(ac_ctrl) ctrl:aa_ctrl = +ctrl(aa_ctrl) ctrl:rctrl_ralt = +ctrl(rctrl_ralt) @@ -1090,10 +1095,20 @@ nbsp:level4 = +nbsp(level4) nbsp:level4n = +nbsp(level4n) nbsp:level4nl = +nbsp(level4nl) + nbsp:zwnj2 = +nbsp(zwnj2) + nbsp:zwnj2zwj3 = +nbsp(zwnj2zwj3) + nbsp:zwnj2zwj3nb4 = +nbsp(zwnj2zwj3nb4) + nbsp:zwnj2nb3 = +nbsp(zwnj2nb3) + nbsp:zwnj2nb3s = +nbsp(zwnj2nb3s) + nbsp:zwnj2nb3zwj4 = +nbsp(zwnj2nb3zwj4) + nbsp:zwnj2nb3nnb4 = +nbsp(zwnj2nb3nnb4) + nbsp:zwnj3zwj4 = +nbsp(zwnj3zwj4) japan:nicola_f_bs = +jp(nicola_f_bs) japan:hztg_escape = +jp(hztg_escape) - korean:ralt_rctrl = +kr(ralt_hangul)+kr(rctrl_hanja) - korean:rctrl_ralt = +kr(rctrl_hangul)+kr(ralt_hanja) + korean:ralt_hangul = +kr(ralt_hangul) + korean:rctrl_hangul = +kr(rctrl_hangul) + korean:ralt_hanja = +kr(ralt_hanja) + korean:rctrl_hanja = +kr(rctrl_hanja) kpdl:dot = +kpdl(dot) kpdl:comma = +kpdl(comma) kpdl:dotoss = +kpdl(dotoss) @@ -1125,6 +1140,8 @@ lv3:caps_switch_latch = +level3(caps_switch_latch) lv3:bksl_switch_latch = +level3(bksl_switch_latch) lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv5:lsgt_switch = +level5(lsgt_switch) + lv5:ralt_switch = +level5(ralt_switch) lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) lv5:ralt_switch_lock = +level5(ralt_switch_lock) lv5:lwin_switch_lock = +level5(lwin_switch_lock) @@ -1140,6 +1157,7 @@ grp_led:num = +lednum(group_lock) grp_led:caps = +ledcaps(group_lock) grp_led:scroll = +ledscroll(group_lock) + mod_led:compose = +ledcompose(compose) japan:kana_lock = +japan(kana_lock) caps:shiftlock = +ledcaps(shift_lock) grab:break_actions = +xfree86(grab_break) diff --git a/test/data/rules/evdev.extras.xml b/test/data/rules/evdev.extras.xml new file mode 100644 index 0000000..850f110 --- /dev/null +++ b/test/data/rules/evdev.extras.xml @@ -0,0 +1,1354 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> +<xkbConfigRegistry> + <modelList/> + <layoutList> + <layout> + <configItem popularity="exotic"> + <name>apl</name> + <shortDescription>apl</shortDescription> + <description>APL</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dyalog</name> + <shortDescription>dlg</shortDescription> + <description>APL symbols (Dyalog APL)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sax</name> + <shortDescription>sax</shortDescription> + <description>APL symbols (SAX, Sharp APL for Unix)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>unified</name> + <shortDescription>ufd</shortDescription> + <description>APL symbols (unified)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>apl2</name> + <shortDescription>apl2</shortDescription> + <description>APL symbols (IBM APL2)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>aplplusII</name> + <shortDescription>aplII</shortDescription> + <description>APL symbols (Manugistics APL*PLUS II)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>aplx</name> + <shortDescription>aplx</shortDescription> + <description>APL symbols (APLX unified)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ca</name> + <shortDescription>fr</shortDescription> + <description>French (Canada)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>kut</name> + <shortDescription>kut</shortDescription> + <description>Kutenai</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>shs</name> + <shortDescription>shs</shortDescription> + <description>Secwepemctsin</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Multilingual (Canada, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>de</name> + <shortDescription>de</shortDescription> + <description>German</description> + <languageList> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>us</name> + <description>German (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>hu</name> + <description>German (with Hungarian letters, no dead keys)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>hun</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>pl</name> + <description>Polish (Germany, no dead keys)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>German (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>adnw</name> + <description>German (Aus der Neo-Welt)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>koy</name> + <description>German (KOY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>bone</name> + <description>German (Bone)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>bone_eszett_home</name> + <description>German (Bone, eszett in the home row)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>neo_qwertz</name> + <description>German (Neo, QWERTZ)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>neo_qwerty</name> + <description>German (Neo, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ru-recom</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, recommended)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ru-translit</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, transliteration)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>lld</name> + <shortDescription>de_lld</shortDescription> + <description>German (Ladin)</description> + <languageList> + <iso639Id>ger</iso639Id> + <iso639Id>lld</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>eg</name> + <shortDescription>ⲕⲏⲙⲉ</shortDescription> + <description>Coptic</description> + <languageList> + <iso639Id>cop</iso639Id> + <iso639Id>egy</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>hu</name> + <description>Hungarian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>oldhun</name> + <shortDescription>oldhun</shortDescription> + <description>Old Hungarian</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ohu_lig</name> + <shortDescription>ohu_lig</shortDescription> + <description>Old Hungarian (for ligatures)</description> + </configItem> + </variant> + + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ir</name> + <shortDescription>fa</shortDescription> + <description>Persian</description> + <languageList> + <iso639Id>per</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>ave</name> + <description>Avestan</description> + <languageList> + <iso639Id>ave</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>lt</name> + <shortDescription>lt</shortDescription> + <description>Lithuanian</description> + <languageList> + <iso639Id>lit</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>us_dvorak</name> + <description>Lithuanian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Lithuanian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>lv</name> + <shortDescription>lv</shortDescription> + <description>Latvian</description> + <languageList> + <iso639Id>lav</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dvorak</name> + <description>Latvian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ykeydvorak</name> + <description>Latvian (Dvorak, with Y)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>minuskeydvorak</name> + <description>Latvian (Dvorak, with minus)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>dvorakprogr</name> + <description>Latvian (programmer Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ykeydvorakprogr</name> + <description>Latvian (programmer Dvorak, with Y)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>minuskeydvorakprogr</name> + <description>Latvian (programmer Dvorak, with minus)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Latvian (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>apostrophecolemak</name> + <description>Latvian (Colemak, with apostrophe)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Latvian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>us</name> + <shortDescription>en</shortDescription> + <description>English (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>intl-unicode</name> + <description>English (US, intl., AltGr Unicode combining)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>alt-intl-unicode</name> + <description>English (US, intl., AltGr Unicode combining, alt.)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ats</name> + <description>Atsina</description> + <!-- No ISO code in ISO639-2, only draft ISO693-3 --> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>crd</name> + <description>Coeur d'Alene Salish</description> + <languageList> + <iso639Id>crd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>cz_sk_de</name> + <description>Czech Slovak and German (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>cze</iso639Id> + <iso639Id>slo</iso639Id> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>drix</name> + <description>English (Drix)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>de_se_fi</name> + <description>German, Swedish and Finnish (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>ger</iso639Id> + <iso639Id>swe</iso639Id> + <iso639Id>fin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ibm238l</name> + <description>English (US, IBM Arabic 238_L)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>English (US, Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx</name> + <description>English (Carpalx)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-intl</name> + <description>English (Carpalx, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-altgr-intl</name> + <description>English (Carpalx, intl., with AltGr dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full</name> + <description>English (Carpalx, full optimization)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full-intl</name> + <description>English (Carpalx, full optimization, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>carpalx-full-altgr-intl</name> + <description>English (Carpalx, full optimization, intl., with AltGr dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l</name> + <description>English (3l)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l-cros</name> + <description>English (3l, Chromebook)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>3l-emacs</name> + <description>English (3l, emacs)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>scn</name> + <description>Sicilian (US keyboard)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>scn</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pl</name> + <shortDescription>pl</shortDescription> + <description>Polish</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>intl</name> + <description>Polish (intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Polish (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Polish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>glagolica</name> + <description>Polish (Glagolica)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ro</name> + <shortDescription>ro</shortDescription> + <description>Romanian</description> + <languageList> + <iso639Id>rum</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>crh_dobruja</name> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Dobruja Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ergonomic</name> + <description>Romanian (ergonomic Touchtype)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Romanian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>rs</name> + <shortDescription>sr</shortDescription> + <description>Serbian</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>combiningkeys</name> + <description>Serbian (combining accents instead of dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ru</name> + <shortDescription>ru</shortDescription> + <description>Russian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>chu</name> + <description>Church Slavonic</description> + <languageList> + <iso639Id>chu</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ruu</name> + <shortDescription>ru</shortDescription> + <description>Russian (with Ukrainian-Belorussian layout)</description> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>ukr</iso639Id> + <iso639Id>bel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>rulemak</name> + <description>Russian (Rulemak, phonetic Colemak)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>phonetic_mac</name> + <description>Russian (phonetic Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Russian (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>unipunct</name> + <description>Russian (with US punctuation)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prxn</name> + <shortDescription>ru</shortDescription> + <description>Russian (Polyglot and Reactionary)</description> + <countryList> + <iso3166Id>RU</iso3166Id> + <iso3166Id>RS</iso3166Id> + <iso3166Id>BA</iso3166Id> + <iso3166Id>ME</iso3166Id> + <iso3166Id>MK</iso3166Id> + <iso3166Id>BG</iso3166Id> + <iso3166Id>MD</iso3166Id> + <iso3166Id>UA</iso3166Id> + <iso3166Id>BY</iso3166Id> + <iso3166Id>KZ</iso3166Id> + <iso3166Id>MN</iso3166Id> + <iso3166Id>KG</iso3166Id> + <iso3166Id>TJ</iso3166Id> + <iso3166Id>UZ</iso3166Id> + <iso3166Id>TM</iso3166Id> + <iso3166Id>AZ</iso3166Id> + </countryList> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>rus-petr1708</iso639Id> + <iso639Id>ukr</iso639Id> + <iso639Id>bel</iso639Id> + <iso639Id>srp</iso639Id> + <iso639Id>mkd</iso639Id> + <iso639Id>bul</iso639Id> + <iso639Id>chu</iso639Id> + <iso639Id>rum-Cyrl</iso639Id> + <iso639Id>kaz</iso639Id> + <iso639Id>kir</iso639Id> + <iso639Id>uzb</iso639Id> + <iso639Id>bak</iso639Id> + <iso639Id>aze</iso639Id> + <iso639Id>tat</iso639Id> + <iso639Id>uig</iso639Id> + <iso639Id>kdr</iso639Id> + <iso639Id>tyv</iso639Id> + <iso639Id>kjh</iso639Id> + <iso639Id>crh</iso639Id> + <iso639Id>tgk</iso639Id> + <iso639Id>abk</iso639Id> + <iso639Id>sah</iso639Id> + <iso639Id>mon</iso639Id> + <iso639Id>kal</iso639Id> + <iso639Id>sjd</iso639Id> + <iso639Id>chv</iso639Id> + <iso639Id>oss</iso639Id> + <iso639Id>krl</iso639Id> + <iso639Id>ale</iso639Id> + <iso639Id>wbl</iso639Id> + <iso639Id>kur</iso639Id> + <iso639Id>niv</iso639Id> + <iso639Id>dng</iso639Id> + <iso639Id>kom</iso639Id> + <iso639Id>udm</iso639Id> + <iso639Id>sel</iso639Id> + <iso639Id>ulc</iso639Id> + <iso639Id>ude</iso639Id> + <iso639Id>oac</iso639Id> + <iso639Id>oaa</iso639Id> + <iso639Id>gld</iso639Id> + <iso639Id>eve</iso639Id> + <iso639Id>evn</iso639Id> + <iso639Id>kca</iso639Id> + <iso639Id>itl</iso639Id> + <iso639Id>yrk</iso639Id> + <iso639Id>neg</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>am</name> + <shortDescription>hy</shortDescription> + <description>Armenian</description> + <languageList> + <iso639Id>hye</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>olpc-phonetic</name> + <description>Armenian (OLPC, phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>il</name> + <shortDescription>he</shortDescription> + <description>Hebrew</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>biblicalSIL</name> + <description>Hebrew (Biblical, SIL phonetic)</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ara</name> + <shortDescription>ar</shortDescription> + <description>Arabic</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Arabic (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>basic_ext</name> + <description>Arabic (Arabic numerals, extensions in the 4th level)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>basic_ext_digits</name> + <description>Arabic (Eastern Arabic numerals, extensions in the 4th level)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>uga</name> + <description>Ugaritic instead of Arabic</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>be</name> + <shortDescription>be</shortDescription> + <description>Belgian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Belgian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>br</name> + <shortDescription>pt</shortDescription> + <description>Portuguese (Brazil)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Portuguese (Brazil, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>cz</name> + <shortDescription>cs</shortDescription> + <description>Czech</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Czech (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prog</name> + <description>Czech (programming)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>typo</name> + <description>Czech (typographic)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>coder</name> + <description>Czech (coder)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>prog_typo</name> + <description>Czech (programming, typographic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>dk</name> + <shortDescription>da</shortDescription> + <description>Danish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Danish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>nl</name> + <shortDescription>nl</shortDescription> + <description>Dutch</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Dutch (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ee</name> + <shortDescription>et</shortDescription> + <description>Estonian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Estonian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>fi</name> + <shortDescription>fi</shortDescription> + <description>Finnish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Finnish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>das</name> + <description>Finnish (DAS)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>fidvorak</name> + <description>Finnish (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>fr</name> + <shortDescription>fr</shortDescription> + <description>French</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>French (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>us-alt</name> + <description>French (US with dead keys, alt.)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>us-azerty</name> + <description>French (US, AZERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>gr</name> + <shortDescription>gr</shortDescription> + <description>Greek</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Greek (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Greek (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>it</name> + <shortDescription>it</shortDescription> + <description>Italian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Italian (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>lld</name> + <shortDescription>it_lld</shortDescription> + <description>Italian (Ladin)</description> + <languageList> + <iso639Id>it</iso639Id> + <iso639Id>lld</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>jp</name> + <shortDescription>ja</shortDescription> + <description>Japanese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Japanese (Sun Type 6)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type7</name> + <description>Japanese (Sun Type 7, PC-compatible)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type7_suncompat</name> + <description>Japanese (Sun Type 7, Sun-compatible)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>no</name> + <shortDescription>no</shortDescription> + <description>Norwegian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Norwegian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pt</name> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Portuguese (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>pt</name> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>colemak</name> + <description>Portuguese (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>sk</name> + <shortDescription>sk</shortDescription> + <description>Slovak</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>acc</name> + <description>Slovak (ACC layout, only accented letters)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Slovak (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>es</name> + <shortDescription>es</shortDescription> + <description>Spanish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Spanish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>se</name> + <shortDescription>sv</shortDescription> + <description>Swedish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>dvorak_a5</name> + <description>Swedish (Dvorak A5)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Swedish (Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>ovd</name> + <description>Elfdalian (Swedish, with combining ogonek)</description> + <languageList> + <iso639Id>ovd</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ch</name> + <shortDescription>de</shortDescription> + <description>German (Switzerland)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6_de</name> + <description>German (Switzerland, Sun Type 6/7)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>sun_type6_fr</name> + <description>French (Switzerland, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>tr</name> + <shortDescription>tr</shortDescription> + <description>Turkish</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Turkish (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>ua</name> + <shortDescription>uk</shortDescription> + <description>Ukrainian</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Ukrainian (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>gb</name> + <shortDescription>en</shortDescription> + <description>English (UK)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>English (UK, Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>kr</name> + <shortDescription>ko</shortDescription> + <description>Korean</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>sun_type6</name> + <description>Korean (Sun Type 6/7)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>vn</name> + <!-- Keyboard indicator for Vietnamese layouts --> + <shortDescription>vi</shortDescription> + <description>Vietnamese</description> + <languageList> + <iso639Id>vie</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>aderty</name> + <description>Vietnamese (AÐERTY)</description> + </configItem> + </variant> + <variant> + <configItem popularity="exotic"> + <name>qderty</name> + <description>Vietnamese (QĐERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>eu</name> + <!-- Keyboard indicator for European layouts --> + <shortDescription>eu</shortDescription> + <description>EurKEY (US)</description> + <languageList> + <iso639Id>cat</iso639Id> + <iso639Id>dan</iso639Id> + <iso639Id>eng</iso639Id> + <iso639Id>est</iso639Id> + <iso639Id>fao</iso639Id> + <iso639Id>fin</iso639Id> + <iso639Id>ger</iso639Id> + <iso639Id>gre</iso639Id> + <iso639Id>gsw</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>lav</iso639Id> + <iso639Id>lit</iso639Id> + <iso639Id>nld</iso639Id> + <iso639Id>nor</iso639Id> + <iso639Id>por</iso639Id> + <iso639Id>spa</iso639Id> + <iso639Id>swe</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem popularity="exotic"> + <name>cm</name> + <shortDescription>cm</shortDescription> + <description>English (Cameroon)</description> + </configItem> + <variantList> + <variant> + <configItem popularity="exotic"> + <name>mmuock</name> + <description>Mmuock</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem popularity="exotic"> + <name>trans</name> + <!-- Keyboard layouts for transcription and transliteration systems --> + <description>International Phonetic Alphabet</description> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>in</name> + <!-- Keyboard indicator for Indian layouts --> + <shortDescription>in</shortDescription> + <description>Indian</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>modi-kagapa</name> + <shortDescription>mr</shortDescription> + <description>Modi (KaGaPa phonetic)</description> + <languageList> + <iso639Id>mar</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + </layoutList> + <optionList> + <group allowMultipleSelection="true"> + <!-- The key combination used to choose the 3rd (and 4th, together with Shift) + level of symbols --> + <configItem popularity="exotic"> + <name>lv3</name> + <description>Key to choose the 3rd level</description> + </configItem> + <option> + <configItem popularity="exotic"> + <name>lv3:4_switch_isolated</name> + <description>Number key 4 when pressed in isolation</description> + </configItem> + </option> + <option> + <configItem popularity="exotic"> + <name>lv3:9_switch_isolated</name> + <description>Number key 9 when pressed in isolation</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "(" and ")" keys --> + <configItem popularity="exotic"> + <name>parens</name> + <description>Parentheses position</description> + </configItem> + <option> + <configItem popularity="exotic"> + <name>parens:swap_brackets</name> + <description>Swap with square brackets</description> + </configItem> + </option> + </group> + </optionList> +</xkbConfigRegistry> diff --git a/test/data/rules/evdev.xml b/test/data/rules/evdev.xml new file mode 100644 index 0000000..a13af8f --- /dev/null +++ b/test/data/rules/evdev.xml @@ -0,0 +1,7705 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> +<xkbConfigRegistry version="1.1"> + <modelList> + <model> + <configItem> + <name>pc86</name> + <description>Generic 86-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc101</name> + <description>Generic 101-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc102</name> + <description>Generic 102-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc104</name> + <description>Generic 104-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc104alt</name> + <description>Generic 104-key PC with L-shaped Enter key</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc105</name> + <description>Generic 105-key PC</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell101</name> + <description>Dell 101-key PC</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>latitude</name> + <description>Dell Latitude laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellm65</name> + <description>Dell Precision M65 laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>everex</name> + <description>Everex STEPnote</description> + <vendor>Everex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>flexpro</name> + <description>Keytronic FlexPro</description> + <vendor>Keytronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft</name> + <description>Microsoft Natural</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>omnikey101</name> + <description>Northgate OmniKey 101</description> + <vendor>Northgate</vendor> + </configItem> + </model> + <model> + <configItem> + <name>winbook</name> + <description>Winbook Model XP5</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc98</name> + <description>PC-98</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKB21</name> + <description>A4Tech KB-21</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKBS8</name> + <description>A4Tech KBS-8</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4_rfkb23</name> + <description>A4Tech Wireless Desktop RFKB-23</description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>airkey</name> + <description>Acer AirKey V</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>azonaRF2300</name> + <description>Azona RF2300 wireless Internet</description> + <vendor>Azona</vendor> + </configItem> + </model> + <model> + <configItem> + <name>scorpius</name> + <description>Advance Scorpius KI</description> + <vendor>Scorpius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>brother</name> + <description>Brother Internet</description> + <vendor>Brother</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5113rf</name> + <description>BTC 5113RF Multimedia</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5126t</name> + <description>BTC 5126T</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc6301urf</name> + <description>BTC 6301URF</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000</name> + <description>BTC 9000</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000a</name> + <description>BTC 9000A</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9001ah</name> + <description>BTC 9001AH</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5090</name> + <description>BTC 5090</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9019u</name> + <description>BTC 9019U</description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9116u</name> + <description>BTC 9116U Mini Wireless Internet and Gaming</description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblue</name> + <description>Cherry Blue Line CyBo@rd</description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblueb</name> + <description>Cherry CyMotion Master XPress</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybluea</name> + <description>Cherry Blue Line CyBo@rd (alt.)</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycyboard</name> + <description>Cherry CyBo@rd USB-Hub</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycmexpert</name> + <description>Cherry CyMotion Expert</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybunlim</name> + <description>Cherry B.UNLIMITED</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony</name> + <description>Chicony Internet</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0108</name> + <description>Chicony KU-0108</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0420</name> + <description>Chicony KU-0420</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony9885</name> + <description>Chicony KB-9885</description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqeak8</name> + <description>Compaq Easy Access</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik7</name> + <description>Compaq Internet (7 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik13</name> + <description>Compaq Internet (13 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik18</name> + <description>Compaq Internet (18 keys)</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cymotionlinux</name> + <description>Cherry CyMotion Master Linux</description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>armada</name> + <description>Compaq Armada laptop</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>presario</name> + <description>Compaq Presario laptop</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ipaq</name> + <description>Compaq iPaq</description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell</name> + <description>Dell</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8125</name> + <description>Dell SK-8125</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8135</name> + <description>Dell SK-8135</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellusbmm</name> + <description>Dell USB Multimedia</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>inspiron</name> + <description>Dell Inspiron 6000/8000 laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>precision_m</name> + <description>Dell Precision M laptop</description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dexxa</name> + <description>Dexxa Wireless Desktop</description> + <vendor>Dexxa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>diamond</name> + <description>Diamond 9801/9802</description> + <vendor>Diamond</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dtk2000</name> + <description>DTK2000</description> + </configItem> + </model> + <model> + <configItem> + <name>ennyah_dkb1008</name> + <description>Ennyah DKB-1008</description> + <vendor>Ennyah</vendor> + </configItem> + </model> + <model> + <configItem> + <name>fscaa1667g</name> + <description>Fujitsu-Siemens Amilo laptop</description> + <vendor>Fujitsu-Siemens</vendor> + </configItem> + </model> + <model> + <configItem> + <name>genius</name> + <description>Genius Comfy KB-16M/Multimedia KWD-910</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy</name> + <description>Genius Comfy KB-12e</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy2</name> + <description>Genius Comfy KB-21e-Scroll</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskb19e</name> + <description>Genius KB-19e NB</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskkb2050hs</name> + <description>Genius KKB-2050HS</description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>gyration</name> + <description>Gyration</description> + <vendor>Gyration</vendor> + </configItem> + </model> + <model> + <configItem> + <name>kinesis</name> + <description>Kinesis</description> + <vendor>Kinesis</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_base</name> + <description>Logitech</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_g15</name> + <description>Logitech G15 extra keys via G15daemon</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpi6</name> + <description>Hewlett-Packard Internet</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp250x</name> + <description>Hewlett-Packard NEC SK-2500 Multimedia</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gc</name> + <description>Hewlett-Packard Omnibook XE3 GC</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gf</name> + <description>Hewlett-Packard Omnibook XE3 GF</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxt1000</name> + <description>Hewlett-Packard Omnibook XT1000</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpdv5</name> + <description>Hewlett-Packard Pavilion dv5</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpzt11xx</name> + <description>Hewlett-Packard Pavilion ZT1100</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp500fa</name> + <description>Hewlett-Packard Omnibook 500 FA</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp5xx</name> + <description>Hewlett-Packard Omnibook 500</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpnx9020</name> + <description>Hewlett-Packard nx9020</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp6000</name> + <description>Hewlett-Packard Omnibook 6000/6100</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>honeywell_euroboard</name> + <description>Honeywell Euroboard</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpmini110</name> + <description>Hewlett-Packard Mini 110 laptop</description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess</name> + <description>IBM Rapid Access</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess2</name> + <description>IBM Rapid Access II</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad</name> + <description>IBM ThinkPad 560Z/600/600E/A22E</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad60</name> + <description>IBM ThinkPad R60/T60/R61/T61</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpadz60</name> + <description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ibm_spacesaver</name> + <description>IBM Space Saver</description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiaccess</name> + <description>Logitech Access</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiclx300</name> + <description>Logitech Cordless Desktop LX-300</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logii350</name> + <description>Logitech Internet 350</description> + <vendor>Logitech</vendor> + <hwList> <hwId>046d:c313</hwId></hwList> + </configItem> + </model> + <model> + <configItem> + <name>logimel</name> + <description>Logitech Internet 350</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd</name> + <description>Logitech Cordless Desktop</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_it</name> + <description>Logitech Cordless Desktop iTouch</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_nav</name> + <description>Logitech Cordless Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_opt</name> + <description>Logitech Cordless Desktop Optical</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicda</name> + <description>Logitech Cordless Desktop (alt.)</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdpa2</name> + <description>Logitech Cordless Desktop Pro (2nd alt.)</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicfn</name> + <description>Logitech Cordless Freedom/Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdn</name> + <description>Logitech Cordless Desktop Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiitc</name> + <description>Logitech iTouch Cordless Y-RB6</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiik</name> + <description>Logitech Internet</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>itouch</name> + <description>Logitech iTouch</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicink</name> + <description>Logitech Internet Navigator</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiex110</name> + <description>Logitech Cordless Desktop EX110</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkse</name> + <description>Logitech iTouch Internet Navigator SE</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkseusb</name> + <description>Logitech iTouch Internet Navigator SE USB</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultrax</name> + <description>Logitech Ultra-X</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultraxc</name> + <description>Logitech Ultra-X Cordless Media Desktop</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovo</name> + <description>Logitech diNovo</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovoedge</name> + <description>Logitech diNovo Edge</description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx1998</name> + <description>Memorex MX1998</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2500</name> + <description>Memorex MX2500 EZ-Access</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2750</name> + <description>Memorex MX2750</description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft4000</name> + <description>Microsoft Natural Ergonomic 4000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft7000</name> + <description>Microsoft Natural Wireless Ergonomic 7000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftinet</name> + <description>Microsoft Internet</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftpro</name> + <description>Microsoft Natural Pro/Internet Pro</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprousb</name> + <description>Microsoft Natural Pro USB/Internet Pro</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprooem</name> + <description>Microsoft Natural Pro OEM</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>vsonku306</name> + <description>ViewSonic KU-306 Internet</description> + <vendor>ViewSonic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprose</name> + <description>Microsoft Internet Pro (Swedish)</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftoffice</name> + <description>Microsoft Office Keyboard</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftmult</name> + <description>Microsoft Wireless Multimedia 1.0A</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftsurface</name> + <description>Microsoft Surface</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftelite</name> + <description>Microsoft Natural Elite</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftccurve2k</name> + <description>Microsoft Comfort Curve 2000</description> + <vendor>Microsoft</vendor> + </configItem> + </model> + <model> + <configItem> + <name>oretec</name> + <description>Ortek Multimedia/Internet MCK-800</description> + <vendor>Ortek</vendor> + </configItem> + </model> + <model> + <configItem> + <name>propeller</name> + <description>Propeller Voyager KTEZ-1000</description> + <vendor>KeyTronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>qtronix</name> + <description>QTronix Scorpius 98N+</description> + <vendor>QTronix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4500</name> + <description>Samsung SDM 4500P</description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4510</name> + <description>Samsung SDM 4510P</description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sanwaskbkg3</name> + <description>Sanwa Supply SKB-KG3</description> + <vendor>Sanwa Supply Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk1300</name> + <description>NEC SK-1300</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk2500</name> + <description>NEC SK-2500</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk6200</name> + <description>NEC SK-6200</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk7100</name> + <description>NEC SK-7100</description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sp_inet</name> + <description>Super Power Multimedia</description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven</name> + <description>SVEN Ergonomic 2500</description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven303</name> + <description>SVEN Slim 303</description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>symplon</name> + <description>Symplon PaceBook tablet</description> + <vendor>Symplon</vendor> + </configItem> + </model> + <model> + <configItem> + <name>toshiba_s3000</name> + <description>Toshiba Satellite S3000</description> + <vendor>Toshiba</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust</name> + <description>Trust Wireless Classic</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trustda</name> + <description>Trust Direct Access</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust_slimline</name> + <description>Trust Slimline</description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2020</name> + <description>TypeMatrix EZ-Reach 2020</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030PS2</name> + <description>TypeMatrix EZ-Reach 2030 PS2</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB</name> + <description>TypeMatrix EZ-Reach 2030 USB</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-102</name> + <description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-106</name> + <description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>yahoo</name> + <description>Yahoo! Internet</description> + <vendor>Yahoo!</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook78</name> + <description>MacBook/MacBook Pro</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook79</name> + <description>MacBook/MacBook Pro (intl.)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh</name> + <description>Macintosh</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_old</name> + <description>Macintosh Old</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_hhk</name> + <description>Happy Hacking for Mac</description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_c300</name> + <description>Acer C300</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_ferrari4k</name> + <description>Acer Ferrari 4000</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_laptop</name> + <description>Acer laptop</description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>asus_laptop</name> + <description>Asus laptop</description> + <vendor>Asus</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple</name> + <description>Apple</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple_laptop</name> + <description>Apple laptop</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_ansi</name> + <description>Apple Aluminium (ANSI)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_iso</name> + <description>Apple Aluminium (ISO)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_jis</name> + <description>Apple Aluminium (JIS)</description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>silvercrest</name> + <description>Silvercrest Multimedia Wireless</description> + <vendor>Silvercrest</vendor> + </configItem> + </model> + <model> + <configItem> + <name>emachines</name> + <description>eMachines m6800 laptop</description> + <vendor>eMachines</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx</name> + <description>BenQ X-Touch</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx730</name> + <description>BenQ X-Touch 730</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx800</name> + <description>BenQ X-Touch 800</description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hhk</name> + <description>Happy Hacking</description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>classmate</name> + <description>Classmate PC</description> + <vendor>Intel</vendor> + </configItem> + </model> + <model> + <configItem> + <name>olpc</name> + <description>OLPC</description> + <vendor>OLPC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_usb</name> + <description>Sun Type 7 USB</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_euro_usb</name> + <description>Sun Type 7 USB (European)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_unix_usb</name> + <description>Sun Type 7 USB (Unix)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type7_jp_usb</name> + <description>Sun Type 7 USB (Japanese)/Japanese 106-key</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_usb</name> + <description>Sun Type 6/7 USB</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_euro_usb</name> + <description>Sun Type 6/7 USB (European)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_unix_usb</name> + <description>Sun Type 6 USB (Unix)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_jp_usb</name> + <description>Sun Type 6 USB (Japanese)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun_type6_jp</name> + <description>Sun Type 6 (Japanese)</description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>targa_v811</name> + <description>Targa Visionary 811</description> + <vendor>Targa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>unitekkb1925</name> + <description>Unitek KB-1925</description> + <vendor>Unitek Group</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compalfl90</name> + <description>FL90</description> + <vendor>Compal Electronics</vendor> + </configItem> + </model> + <model> + <configItem> + <name>creativedw7000</name> + <description>Creative Desktop Wireless 7000</description> + <vendor>Creative</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck227</name> + <description>Truly Ergonomic 227</description> + <vendor>Truly Ergonomic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck229</name> + <description>Truly Ergonomic 229</description> + <vendor>Truly Ergonomic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apex300</name> + <description>SteelSeries Apex 300 (Apex RAW)</description> + <vendor>SteelSeries</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chromebook</name> + <description>Chromebook</description> + <vendor>Google</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck227</name> + <description>Truly Ergonomic Computer Keyboard Model 227 (Wide Alt keys)</description> + <vendor>Megawin Technology</vendor> + </configItem> + </model> + <model> + <configItem> + <name>teck229</name> + <description>Truly Ergonomic Computer Keyboard Model 229 (Standard sized Alt keys, additional Super and Menu key)</description> + <vendor>Megawin Technology</vendor> + </configItem> + </model> + </modelList> + <layoutList> + <layout> + <configItem> + <name>us</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>chr</name> + <!-- Keyboard indicator for Cherokee layouts --> + <shortDescription>chr</shortDescription> + <description>Cherokee</description> + <languageList> + <iso639Id>chr</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>haw</name> + <shortDescription>haw</shortDescription> + <description>Hawaiian</description> + <languageList> + <iso639Id>haw</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>euro</name> + <description>English (US, euro on 5)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>English (US, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-intl</name> + <description>English (US, alt. intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>English (Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>English (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-intl</name> + <description>English (Dvorak, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-alt-intl</name> + <description>English (Dvorak, alt. intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-l</name> + <description>English (Dvorak, left-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-r</name> + <description>English (Dvorak, right-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-classic</name> + <description>English (classic Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <description>English (programmer Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (US, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>English (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>altgr-intl</name> + <description>English (intl., with AltGr dead keys)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>fra</iso639Id> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc2</name> + <description>English (the divide/multiply toggle the layout)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>hbs</name> + <description>Serbo-Croatian (US)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bos</iso639Id> + <iso639Id>hbs</iso639Id> + <iso639Id>hrv</iso639Id> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>norman</name> + <description>English (Norman)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>workman</name> + <description>English (Workman)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>workman-intl</name> + <description>English (Workman, intl., with dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>af</name> + <!-- Keyboard indicator for Afghani layouts --> + <shortDescription>fa</shortDescription> + <description>Afghani</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ps</name> + <!-- Keyboard indicator for Pashto layouts --> + <shortDescription>ps</shortDescription> + <description>Pashto</description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>uz</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek (Afghanistan)</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc-ps</name> + <!-- Keyboard indicator for Pashto layouts --> + <shortDescription>ps</shortDescription> + <description>Pashto (Afghanistan, OLPC)</description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fa-olpc</name> + <!-- Keyboard indicator for Persian layouts --> + <shortDescription>fa</shortDescription> + <description>Persian (Afghanistan, Dari OLPC)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>uz-olpc</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek (Afghanistan, OLPC)</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ara</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic</description> + <countryList> + <iso3166Id>AE</iso3166Id> + <iso3166Id>BH</iso3166Id> + <iso3166Id>DZ</iso3166Id> + <iso3166Id>EG</iso3166Id> + <iso3166Id>EH</iso3166Id> + <iso3166Id>JO</iso3166Id> + <iso3166Id>KW</iso3166Id> + <iso3166Id>LB</iso3166Id> + <iso3166Id>LY</iso3166Id> + <iso3166Id>MA</iso3166Id> + <iso3166Id>MR</iso3166Id> + <iso3166Id>OM</iso3166Id> + <iso3166Id>PS</iso3166Id> + <iso3166Id>QA</iso3166Id> + <iso3166Id>SA</iso3166Id> + <iso3166Id>SD</iso3166Id> + <iso3166Id>SY</iso3166Id> + <iso3166Id>TN</iso3166Id> + <iso3166Id>YE</iso3166Id> + </countryList> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>azerty</name> + <description>Arabic (AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty_digits</name> + <description>Arabic (AZERTY, Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>digits</name> + <description>Arabic (Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Arabic (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_digits</name> + <description>Arabic (QWERTY, Eastern Arabic numerals)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>buckwalter</name> + <description>Arabic (Buckwalter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc</name> + <description>Arabic (OLPC)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Arabic (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>al</name> + <!-- Keyboard indicator for Albanian layouts --> + <shortDescription>sq</shortDescription> + <description>Albanian</description> + <languageList> + <iso639Id>sqi</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>plisi</name> + <description>Albanian (Plisi)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>veqilharxhi</name> + <description>Albanian (Veqilharxhi)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>am</name> + <!-- Keyboard indicator for Armenian layouts --> + <shortDescription>hy</shortDescription> + <description>Armenian</description> + <languageList> + <iso639Id>hye</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Armenian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic-alt</name> + <description>Armenian (alt. phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern</name> + <description>Armenian (eastern)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>western</name> + <description>Armenian (western)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern-alt</name> + <description>Armenian (alt. eastern)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>at</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Austria)</description> + <languageList> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>German (Austria, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>German (Austria, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>German (Austria, Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>au</name> + <!-- Keyboard indicator for Australian layouts --> + <shortDescription>en</shortDescription> + <description>English (Australian)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>az</name> + <!-- Keyboard indicator for Azerbaijani layouts --> + <shortDescription>az</shortDescription> + <description>Azerbaijani</description> + <languageList> + <iso639Id>aze</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <description>Azerbaijani (Cyrillic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>by</name> + <!-- Keyboard indicator for Belarusian layouts --> + <shortDescription>by</shortDescription> + <description>Belarusian</description> + <languageList> + <iso639Id>bel</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Belarusian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Belarusian (Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <description>Russian (Belarus)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Belarusian (intl.)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>be</name> + <!-- Keyboard indicator for Belgian layouts --> + <shortDescription>be</shortDescription> + <description>Belgian</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>nld</iso639Id> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>oss</name> + <description>Belgian (alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <description>Belgian (Latin-9 only, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <description>Belgian (Sun dead keys, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>iso-alternate</name> + <description>Belgian (ISO, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Belgian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Belgian (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>wang</name> + <description>Belgian (Wang 724 AZERTY)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bd</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>probhat</name> + <description>Bangla (Probhat)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>in</name> + <!-- Keyboard indicator for Indian layouts --> + <shortDescription>in</shortDescription> + <description>Indian</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ben</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla (India)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_probhat</name> + <!-- Keyboard indicator for Bangla layouts --> + <shortDescription>bn</shortDescription> + <description>Bangla (India, Probhat)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_baishakhi</name> + <description>Bangla (India, Baishakhi)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_bornona</name> + <description>Bangla (India, Bornona)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_gitanjali</name> + <description>Bangla (India, Gitanjali)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_inscript</name> + <description>Bangla (India, Baishakhi Inscript)</description> + <languageList> + <iso639Id>ben</iso639Id> + <!-- sat-Beng: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eeyek</name> + <description>Manipuri (Eeyek)</description> + <languageList> + <iso639Id>mni</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guj</name> + <!-- Keyboard indicator for Gujarati layouts --> + <shortDescription>gu</shortDescription> + <description>Gujarati</description> + <languageList> + <iso639Id>guj</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guru</name> + <!-- Keyboard indicator for Punjabi layouts --> + <shortDescription>pa</shortDescription> + <description>Punjabi (Gurmukhi)</description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>jhelum</name> + <!-- Keyboard indicator for Punjabi layouts --> + <shortDescription>pa</shortDescription> + <description>Punjabi (Gurmukhi Jhelum)</description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kan</name> + <!-- Keyboard indicator for Kannada layouts --> + <shortDescription>kn</shortDescription> + <description>Kannada</description> + <languageList> + <iso639Id>kan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kan-kagapa</name> + <!-- Keyboard indicator for Kannada layouts --> + <shortDescription>kn</shortDescription> + <description>Kannada (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>kan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_lalitha</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam (Lalitha)</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_enhanced</name> + <!-- Keyboard indicator for Malayalam layouts --> + <shortDescription>ml</shortDescription> + <description>Malayalam (enhanced Inscript, with rupee)</description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ori</name> + <!-- Keyboard indicator for Oriya layouts --> + <shortDescription>or</shortDescription> + <description>Oriya</description> + <languageList> + <iso639Id>ori</iso639Id> + <!-- sat-Orya: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olck</name> + <!-- Keyboard indicator for Ol Chiki layouts --> + <shortDescription>sat</shortDescription> + <description>Ol Chiki</description> + <languageList> + <!-- sat-Olck: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_with_tam_nums</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99 with Tamil numerals)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_TAB</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99, TAB encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_tamilnet_TSCII</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (TamilNet '99, TSCII encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (Inscript)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-kagapa</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-sarala</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (Sarala)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel-kagapa</name> + <!-- Keyboard indicator for Telugu layouts --> + <shortDescription>te</shortDescription> + <description>Telugu (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (phonetic)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic3</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (alt. phonetic)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-winkeys</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (Windows)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bolnagri</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (Bolnagri)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hin-wx</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (Wx)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hin-kagapa</name> + <!-- Keyboard indicator for Hindi layouts --> + <shortDescription>hi</shortDescription> + <description>Hindi (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>san-kagapa</name> + <!-- Keyboard indicator for Sanskrit layouts --> + <shortDescription>sa</shortDescription> + <description>Sanskrit (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>san</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mar-kagapa</name> + <!-- Keyboard indicator for Marathi layouts --> + <shortDescription>mr</shortDescription> + <description>Marathi (KaGaPa, phonetic)</description> + <languageList> + <iso639Id>mar</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (India, with rupee)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>iipa</name> + <shortDescription>iipa</shortDescription> + <description>Indic IPA (IIPA)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + + <variant> + <configItem> + <name>marathi</name> + <shortDescription>ins</shortDescription> + <description>मराठी इन्स्क्रिप्ट</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ba</name> + <!-- Keyboard indicator for Bosnian layouts --> + <shortDescription>bs</shortDescription> + <description>Bosnian</description> + <languageList> + <iso639Id>bos</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Bosnian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <description>Bosnian (with Bosnian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <description>Bosnian (US, with Bosnian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Bosnian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>br</name> + <!-- Keyboard indicator for Portuguese layouts --> + <shortDescription>pt</shortDescription> + <description>Portuguese (Brazil)</description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Portuguese (Brazil, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Portuguese (Brazil, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <description>Portuguese (Brazil, Nativo)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <description>Portuguese (Brazil, Nativo for US keyboards)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <description>Esperanto (Brazil, Nativo)</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>thinkpad</name> + <description>Portuguese (Brazil, IBM/Lenovo ThinkPad)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bg</name> + <!-- Keyboard indicator for Bulgarian layouts --> + <shortDescription>bg</shortDescription> + <description>Bulgarian</description> + <languageList> + <iso639Id>bul</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Bulgarian (traditional phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bas_phonetic</name> + <description>Bulgarian (new phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>dz</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (azerty layout, no dead keys)</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>azerty-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (azerty layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-gb-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (qwerty-gb layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-us-deadkeys</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (qwerty-us layout, with dead keys)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ber</name> + <shortDescription>kab</shortDescription> + <description>Kabylian (Algeria, Tifinagh)</description> + <languageList> + <iso639Id>kab</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ar</name> + <shortDescription>ar</shortDescription> + <description>Arabic (Algeria)</description> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ma</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic (Morocco)</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>french</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Morocco)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh alt.)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh phonetic, alt.)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh extended)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh phonetic)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended-phonetic</name> + <!-- Keyboard indicator for Berber layouts --> + <shortDescription>ber</shortDescription> + <description>Berber (Morocco, Tifinagh extended phonetic)</description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cm</name> + <!-- Keyboard indicator for Cameroon layouts --> + <shortDescription>cm</shortDescription> + <description>English (Cameroon)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>french</name> + <description>French (Cameroon)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Cameroon Multilingual (QWERTY, intl.)</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bas</iso639Id> + <iso639Id>nmg</iso639Id> + <iso639Id>fub</iso639Id> + <iso639Id>ewo</iso639Id> + <iso639Id>xmd</iso639Id> + <iso639Id>mfh</iso639Id> + <iso639Id>bkm</iso639Id> + <iso639Id>ozm</iso639Id> + <iso639Id>lns</iso639Id> + <iso639Id>sox</iso639Id> + <iso639Id>pny</iso639Id> + <iso639Id>wes</iso639Id> + <iso639Id>lem</iso639Id> + <iso639Id>nyj</iso639Id> + <iso639Id>mfk</iso639Id> + <iso639Id>mcp</iso639Id> + <iso639Id>ass</iso639Id> + <iso639Id>xed</iso639Id> + <iso639Id>dua</iso639Id> + <iso639Id>anv</iso639Id> + <iso639Id>bum</iso639Id> + <iso639Id>btb</iso639Id> + <iso639Id>bfd</iso639Id> + <iso639Id>azo</iso639Id> + <iso639Id>ken</iso639Id> + <iso639Id>yam</iso639Id> + <iso639Id>yat</iso639Id> + <iso639Id>yas</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty</name> + <description>Cameroon (AZERTY, intl.)</description> + <languageList> + <iso639Id>fra</iso639Id> + <iso639Id>bas</iso639Id> + <iso639Id>nmg</iso639Id> + <iso639Id>fub</iso639Id> + <iso639Id>ewo</iso639Id> + <iso639Id>xmd</iso639Id> + <iso639Id>mfh</iso639Id> + <iso639Id>bkm</iso639Id> + <iso639Id>ozm</iso639Id> + <iso639Id>lns</iso639Id> + <iso639Id>sox</iso639Id> + <iso639Id>pny</iso639Id> + <iso639Id>wes</iso639Id> + <iso639Id>lem</iso639Id> + <iso639Id>nyj</iso639Id> + <iso639Id>mfk</iso639Id> + <iso639Id>mcp</iso639Id> + <iso639Id>ass</iso639Id> + <iso639Id>xed</iso639Id> + <iso639Id>dua</iso639Id> + <iso639Id>anv</iso639Id> + <iso639Id>bum</iso639Id> + <iso639Id>btb</iso639Id> + <iso639Id>bfd</iso639Id> + <iso639Id>azo</iso639Id> + <iso639Id>ken</iso639Id> + <iso639Id>yam</iso639Id> + <iso639Id>yat</iso639Id> + <iso639Id>yas</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Cameroon (Dvorak, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mmuock</name> + <description>Mmuock</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mm</name> + <!-- Keyboard indicator for Burmese layouts --> + <shortDescription>my</shortDescription> + <description>Burmese</description> + <languageList> + <iso639Id>mya</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>zawgyi</name> + <shortDescription>zg</shortDescription> + <description>Burmese Zawgyi</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ca</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-dvorak</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr-legacy</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Canada, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multix</name> + <description>Canadian (intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi</name> + <description>Canadian (intl., 1st part)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi-2gr</name> + <description>Canadian (intl., 2nd part)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ike</name> + <!-- Keyboard indicator for Inuktikut layouts --> + <shortDescription>ike</shortDescription> + <description>Inuktitut</description> + <languageList> + <iso639Id>iku</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Canada)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cd</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Democratic Republic of the Congo)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>cn</name> + <!-- Keyboard indicator for Chinese layouts --> + <shortDescription>zh</shortDescription> + <description>Chinese</description> + <languageList> + <iso639Id>zho</iso639Id> + </languageList> + </configItem> + <variantList> + + <variant> + <configItem> + <name>mon_trad</name> + <description>Mongolian (Bichig)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_todo</name> + <description>Mongolian (Todo)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_xibe</name> + <description>Mongolian (Xibe)</description> + <languageList> + <iso639Id>sjo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_manchu</name> + <description>Mongolian (Manchu)</description> + <languageList> + <iso639Id>mnc</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_trad_galik</name> + <description>Mongolian (Galik)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_todo_galik</name> + <description>Mongolian (Todo Galik)</description> + <languageList> + <iso639Id>mvf</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mon_manchu_galik</name> + <description>Mongolian (Manchu Galik)</description> + <languageList> + <iso639Id>mnc</iso639Id> + </languageList> + </configItem> + </variant> + + <variant> + <configItem> + <name>tib</name> + <description>Tibetan</description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tib_asciinum</name> + <description>Tibetan (with ASCII numerals)</description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ug</name> + <shortDescription>ug</shortDescription> + <description>Uyghur</description> + <languageList> + <iso639Id>uig</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>altgr-pinyin</name> + <description>Hanyu Pinyin (with AltGr dead keys)</description> + <languageList> + <iso639Id>zho</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hr</name> + <!-- Keyboard indicator for Croatian layouts --> + <shortDescription>hr</shortDescription> + <description>Croatian</description> + <languageList> + <iso639Id>hrv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Croatian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <description>Croatian (with Croatian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <description>Croatian (US, with Croatian digraphs)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Croatian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cz</name> + <!-- Keyboard indicator for Chech layouts --> + <shortDescription>cs</shortDescription> + <description>Czech</description> + <languageList> + <iso639Id>ces</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <description>Czech (with <\|> key)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Czech (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <description>Czech (QWERTY, extended backslash)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty-mac</name> + <description>Czech (QWERTY, Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ucw</name> + <description>Czech (UCW, only accented letters)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-ucw</name> + <description>Czech (US, Dvorak, UCW support)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Czech, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>dk</name> + <!-- Keyboard indicator for Danish layouts --> + <shortDescription>da</shortDescription> + <description>Danish</description> + <languageList> + <iso639Id>dan</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Danish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Danish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Danish (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Danish (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Danish (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nl</name> + <!-- Keyboard indicator for Dutch layouts --> + <shortDescription>nl</shortDescription> + <description>Dutch</description> + <languageList> + <iso639Id>nld</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Dutch (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Dutch (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <description>Dutch (standard)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bt</name> + <!-- Keyboard indicator for Dzongkha layouts --> + <shortDescription>dz</shortDescription> + <description>Dzongkha</description> + <languageList> + <iso639Id>dzo</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ee</name> + <!-- Keyboard indicator for Estonian layouts --> + <shortDescription>et</shortDescription> + <description>Estonian</description> + <languageList> + <iso639Id>est</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Estonian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Estonian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Estonian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ir</name> + <!-- Keyboard indicator for Persian layouts --> + <shortDescription>fa</shortDescription> + <description>Persian</description> + <languageList> + <iso639Id>fas</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>pes_keypad</name> + <description>Persian (with Persian keypad)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iran, Arabic-Latin)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>iq</name> + <!-- Keyboard indicator for Iraqi layouts --> + <shortDescription>ar</shortDescription> + <description>Iraqi</description> + <languageList> + <iso639Id>ara</iso639Id> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Iraq, Arabic-Latin)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fo</name> + <!-- Keyboard indicator for Faroese layouts --> + <shortDescription>fo</shortDescription> + <description>Faroese</description> + <languageList> + <iso639Id>fao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Faroese (no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fi</name> + <!-- Keyboard indicator for Finnish layouts --> + <shortDescription>fi</shortDescription> + <description>Finnish</description> + <languageList> + <iso639Id>fin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>winkeys</name> + <description>Finnish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>classic</name> + <description>Finnish (classic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Finnish (classic, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Finland)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Finnish (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fr</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>French (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>French (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss</name> + <description>French (alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <description>French (alt., Latin-9 only)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_nodeadkeys</name> + <description>French (alt., no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <description>French (alt., Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9</name> + <description>French (legacy, alt.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_nodeadkeys</name> + <description>French (legacy, alt., no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_sundeadkeys</name> + <description>French (legacy, alt., Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo</name> + <description>French (BEPO)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo_latin9</name> + <description>French (BEPO, Latin-9 only)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo_afnor</name> + <description>French (BEPO, AFNOR)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>French (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>French (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty</name> + <description>French (AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>afnor</name> + <description>French (AZERTY, AFNOR)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>bre</name> + <description>French (Breton)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>oci</name> + <description>Occitan</description> + <languageList> + <iso639Id>oci</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <description>Georgian (France, AZERTY Tskapo)</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>French (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gh</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Ghana)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>generic</name> + <description>English (Ghana, multilingual)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>akan</name> + <!-- Keyboard indicator for Akan layouts --> + <shortDescription>ak</shortDescription> + <description>Akan</description> + <languageList> + <iso639Id>aka</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ewe</name> + <!-- Keyboard indicator for Ewe layouts --> + <shortDescription>ee</shortDescription> + <description>Ewe</description> + <languageList> + <iso639Id>ewe</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fula</name> + <!-- Keyboard indicator for Fula layouts --> + <shortDescription>ff</shortDescription> + <description>Fula</description> + <languageList> + <iso639Id>ful</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ga</name> + <!-- Keyboard indicator for Ga layouts --> + <shortDescription>gaa</shortDescription> + <description>Ga</description> + <languageList> + <iso639Id>gaa</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <!-- Keyboard indicator for Hausa layouts --> + <shortDescription>ha</shortDescription> + <description>Hausa (Ghana)</description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>avn</name> + <!-- Keyboard indicator for Avatime layouts --> + <shortDescription>avn</shortDescription> + <description>Avatime</description> + <languageList> + <iso639Id>avn</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>gillbt</name> + <description>English (Ghana, GILLBT)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gn</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Guinea)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>ge</name> + <!-- Keyboard indicator for Georgian layouts --> + <shortDescription>ka</shortDescription> + <description>Georgian</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ergonomic</name> + <description>Georgian (ergonomic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mess</name> + <description>Georgian (MESS)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Georgia)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os</name> + <description>Ossetian (Georgia)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>de</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German</description> + <languageList> + <iso639Id>deu</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>deadacute</name> + <description>German (dead acute)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadgraveacute</name> + <description>German (dead grave acute)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>German (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>T3</name> + <description>German (T3)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ro</name> + <description>Romanian (Germany)</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ro_nodeadkeys</name> + <description>Romanian (Germany, no dead keys)</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>German (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>German (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>neo</name> + <description>German (Neo 2)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>German (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>German (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb</name> + <description>Lower Sorbian</description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb_qwertz</name> + <description>Lower Sorbian (QWERTZ)</description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>German (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tr</name> + <description>Turkish (Germany)</description> + <languageList> + <iso639Id>tr</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Germany, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>German (dead tilde)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gr</name> + <!-- Keyboard indicator for Greek layouts --> + <shortDescription>gr</shortDescription> + <description>Greek</description> + <languageList> + <iso639Id>ell</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>simple</name> + <description>Greek (simple)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>extended</name> + <description>Greek (extended)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Greek (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>polytonic</name> + <description>Greek (polytonic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hu</name> + <!-- Keyboard indicator for Hungarian layouts --> + <shortDescription>hu</shortDescription> + <description>Hungarian</description> + <languageList> + <iso639Id>hun</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>standard</name> + <description>Hungarian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Hungarian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Hungarian (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_dead</name> + <description>Hungarian (QWERTZ, 101-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_nodead</name> + <description>Hungarian (QWERTZ, 101-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_dead</name> + <description>Hungarian (QWERTZ, 101-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_nodead</name> + <description>Hungarian (QWERTZ, 101-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_dead</name> + <description>Hungarian (QWERTY, 101-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_nodead</name> + <description>Hungarian (QWERTY, 101-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_dead</name> + <description>Hungarian (QWERTY, 101-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_nodead</name> + <description>Hungarian (QWERTY, 101-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_dead</name> + <description>Hungarian (QWERTZ, 102-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_nodead</name> + <description>Hungarian (QWERTZ, 102-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_dead</name> + <description>Hungarian (QWERTZ, 102-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_nodead</name> + <description>Hungarian (QWERTZ, 102-key, dot, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_dead</name> + <description>Hungarian (QWERTY, 102-key, comma, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_nodead</name> + <description>Hungarian (QWERTY, 102-key, comma, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_dead</name> + <description>Hungarian (QWERTY, 102-key, dot, dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_nodead</name> + <description>Hungarian (QWERTY, 102-key, dot, no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>is</name> + <!-- Keyboard indicator for Icelandic layouts --> + <shortDescription>is</shortDescription> + <description>Icelandic</description> + <languageList> + <iso639Id>isl</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>Sundeadkeys</name> + <description>Icelandic (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Icelandic (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_legacy</name> + <description>Icelandic (Macintosh, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Icelandic (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Icelandic (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>il</name> + <!-- Keyboard indicator for Hebrew layouts --> + <shortDescription>he</shortDescription> + <description>Hebrew</description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>lyx</name> + <description>Hebrew (lyx)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic</name> + <description>Hebrew (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>biblical</name> + <description>Hebrew (Biblical, Tiro)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>it</name> + <!-- Keyboard indicator for Italian layouts --> + <shortDescription>it</shortDescription> + <description>Italian</description> + <languageList> + <iso639Id>ita</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Italian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Italian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Italian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Italian (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <description>Georgian (Italy)</description> + <languageList> + <iso639Id>kat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ibm</name> + <description>Italian (IBM 142)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Italian (intl., with dead keys)</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>fra</iso639Id> + <iso639Id>ita</iso639Id> + <iso639Id>slk</iso639Id> + <iso639Id>srd</iso639Id> + <iso639Id>nap</iso639Id> + <iso639Id>scn</iso639Id> + <iso639Id>fur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>scn</name> + <description>Sicilian</description> + <languageList> + <iso639Id>ita</iso639Id> + <iso639Id>scn</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fur</name> + <description>Friulian (Italy)</description> + <languageList> + <iso639Id>fur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>jp</name> + <!-- Keyboard indicator for Japaneses --> + <shortDescription>ja</shortDescription> + <description>Japanese</description> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kana</name> + <description>Japanese (Kana)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>kana86</name> + <description>Japanese (Kana 86)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>OADG109A</name> + <description>Japanese (OADG 109A)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Japanese (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Japanese (Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kg</name> + <!-- Keyboard indicator for Kyrgyz layouts --> + <shortDescription>ki</shortDescription> + <description>Kyrgyz</description> + <languageList> + <iso639Id>kir</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Kyrgyz (phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kh</name> + <!-- Keyboard indicator for Khmer layouts --> + <shortDescription>km</shortDescription> + <description>Khmer (Cambodia)</description> + <languageList> + <iso639Id>khm</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>kz</name> + <!-- Keyboard indicator for Kazakh layouts --> + <shortDescription>kk</shortDescription> + <description>Kazakh</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ruskaz</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Kazakhstan, with Kazakh)</description> + <languageList> + <iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kazrus</name> + <description>Kazakh (with Russian)</description> + <languageList> + <iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ext</name> + <description>Kazakh (extended)</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Kazakh (Latin)</description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>la</name> + <!-- Keyboard indicator for Lao layouts --> + <shortDescription>lo</shortDescription> + <description>Lao</description> + <languageList> + <iso639Id>lao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>stea</name> + <description>Lao (STEA)</description> + <languageList> + <iso639Id>lao</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>latam</name> + <!-- Keyboard indicator for Spanish layouts --> + <shortDescription>es</shortDescription> + <description>Spanish (Latin American)</description> + <countryList> + <iso3166Id>AR</iso3166Id> + <iso3166Id>BO</iso3166Id> + <iso3166Id>CL</iso3166Id> + <iso3166Id>CO</iso3166Id> + <iso3166Id>CR</iso3166Id> + <iso3166Id>CU</iso3166Id> + <iso3166Id>DO</iso3166Id> + <iso3166Id>EC</iso3166Id> + <iso3166Id>GT</iso3166Id> + <iso3166Id>HN</iso3166Id> + <iso3166Id>HT</iso3166Id> + <iso3166Id>MX</iso3166Id> + <iso3166Id>NI</iso3166Id> + <iso3166Id>PA</iso3166Id> + <iso3166Id>PE</iso3166Id> + <iso3166Id>PR</iso3166Id> + <iso3166Id>PY</iso3166Id> + <iso3166Id>SV</iso3166Id> + <iso3166Id>US</iso3166Id> + <iso3166Id>UY</iso3166Id> + <iso3166Id>VE</iso3166Id> + </countryList> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Spanish (Latin American, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>Spanish (Latin American, dead tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Spanish (Latin American, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Spanish (Latin American, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Spanish (Latin American, Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak-gaming</name> + <description>Spanish (Latin American, Colemak for gaming)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lt</name> + <!-- Keyboard indicator for Lithuanian layouts --> + <shortDescription>lt</shortDescription> + <description>Lithuanian</description> + <languageList> + <iso639Id>lit</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>std</name> + <description>Lithuanian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Lithuanian (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ibm</name> + <description>Lithuanian (IBM LST 1205-92)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekp</name> + <description>Lithuanian (LEKP)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekpa</name> + <description>Lithuanian (LEKPa)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sgs</name> + <description>Samogitian</description> + <languageList> + <iso639Id>sgs</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lv</name> + <!-- Keyboard indicator for Latvian layouts --> + <shortDescription>lv</shortDescription> + <description>Latvian</description> + <languageList> + <iso639Id>lav</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>apostrophe</name> + <description>Latvian (apostrophe)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tilde</name> + <description>Latvian (tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fkey</name> + <description>Latvian (F)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>modern</name> + <description>Latvian (modern)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ergonomic</name> + <description>Latvian (ergonomic, ŪGJRMV)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>adapted</name> + <description>Latvian (adapted)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mao</name> + <!-- Keyboard indicator for Maori layouts --> + <shortDescription>mi</shortDescription> + <description>Maori</description> + <languageList> + <iso639Id>mri</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>me</name> + <!-- Keyboard indicator for Montenegrin layouts --> + <shortDescription>sr</shortDescription> + <description>Montenegrin</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <description>Montenegrin (Cyrillic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicyz</name> + <description>Montenegrin (Cyrillic, ZE and ZHE swapped)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <description>Montenegrin (Latin, Unicode)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <description>Montenegrin (Latin, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <description>Montenegrin (Latin, Unicode, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicalternatequotes</name> + <description>Montenegrin (Cyrillic, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <description>Montenegrin (Latin, with guillemets)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mk</name> + <!-- Keyboard indicator for Macedonian layouts --> + <shortDescription>mk</shortDescription> + <description>Macedonian</description> + <languageList> + <iso639Id>mkd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Macedonian (no dead keys)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mt</name> + <!-- Keyboard indicator for Maltese layouts --> + <shortDescription>mt</shortDescription> + <description>Maltese</description> + <languageList> + <iso639Id>mlt</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>us</name> + <description>Maltese (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-us</name> + <description>Maltese (US layout with AltGr overrides)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-gb</name> + <description>Maltese (UK, with AltGr overrides)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mn</name> + <!-- Keyboard indicator for Mongolian layouts --> + <shortDescription>mn</shortDescription> + <description>Mongolian</description> + <languageList> + <iso639Id>mon</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>no</name> + <!-- Keyboard indicator for Norwegian layouts --> + <shortDescription>no</shortDescription> + <description>Norwegian</description> + <languageList> + <iso639Id>nor</iso639Id> + <iso639Id>nob</iso639Id> + <iso639Id>nno</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Norwegian (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Norwegian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Norwegian (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Norway)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi_nodeadkeys</name> + <description>Northern Saami (Norway, no dead keys)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Norwegian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Norwegian (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Norwegian (Colemak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pl</name> + <!-- Keyboard indicator for Polish layouts --> + <shortDescription>pl</shortDescription> + <description>Polish</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Polish (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwertz</name> + <description>Polish (QWERTZ)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Polish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_quotes</name> + <description>Polish (Dvorak, with Polish quotes on quotemark key)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_altquotes</name> + <description>Polish (Dvorak, with Polish quotes on key 1)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>csb</name> + <description>Kashubian</description> + <languageList> + <iso639Id>csb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>szl</name> + <description>Silesian</description> + <languageList> + <iso639Id>szl</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ru_phonetic_dvorak</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Poland, phonetic Dvorak)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <description>Polish (programmer Dvorak)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pt</name> + <!-- Keyboard indicator for Portuguese layouts --> + <shortDescription>pt</shortDescription> + <description>Portuguese</description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Portuguese (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Portuguese (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Portuguese (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <description>Portuguese (Macintosh, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_sundeadkeys</name> + <description>Portuguese (Macintosh, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <description>Portuguese (Nativo)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <description>Portuguese (Nativo for US keyboards)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <description>Esperanto (Portugal, Nativo)</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ro</name> + <!-- Keyboard indicator for Romanian layouts --> + <shortDescription>ro</shortDescription> + <description>Romanian</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cedilla</name> + <description>Romanian (cedilla)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <description>Romanian (standard)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>std_cedilla</name> + <description>Romanian (standard cedilla)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Romanian (Windows)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ru</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Russian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_winkeys</name> + <description>Russian (phonetic, Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_YAZHERTY</name> + <description>Russian (phonetic, YAZHERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <description>Russian (typewriter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <description>Russian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter-legacy</name> + <description>Russian (typewriter, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>tt</name> + <description>Tatar</description> + <languageList> + <iso639Id>tat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_legacy</name> + <description>Ossetian (legacy)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_winkeys</name> + <description>Ossetian (Windows)</description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv</name> + <description>Chuvash</description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv_latin</name> + <description>Chuvash (Latin)</description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>udm</name> + <description>Udmurt</description> + <languageList> + <iso639Id>udm</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kom</name> + <description>Komi</description> + <languageList> + <iso639Id>kom</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>sah</name> + <description>Yakut</description> + <languageList> + <iso639Id>sah</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>xal</name> + <description>Kalmyk</description> + <languageList> + <iso639Id>xal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dos</name> + <description>Russian (DOS)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Russian (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>srp</name> + <description>Serbian (Russia)</description> + <languageList> + <iso639Id>rus</iso639Id> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bak</name> + <description>Bashkirian</description> + <languageList> + <iso639Id>bak</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>chm</name> + <description>Mari</description> + <languageList> + <iso639Id>chm</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_azerty</name> + <description>Russian (phonetic, AZERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_dvorak</name> + <description>Russian (phonetic, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_fr</name> + <description>Russian (phonetic, French)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>rs</name> + <!-- Keyboard indicator for Serbian layouts --> + <shortDescription>sr</shortDescription> + <description>Serbian</description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>yz</name> + <description>Serbian (Cyrillic, ZE and ZHE swapped)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <description>Serbian (Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <description>Serbian (Latin, Unicode)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <description>Serbian (Latin, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <description>Serbian (Latin, Unicode, QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Serbian (Cyrillic, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <description>Serbian (Latin, with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rue</name> + <description>Pannonian Rusyn</description> + <languageList> + <iso639Id>rue</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>si</name> + <!-- Keyboard indicator for Slovenian layouts --> + <shortDescription>sl</shortDescription> + <description>Slovenian</description> + <languageList> + <iso639Id>slv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <description>Slovenian (with guillemets)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Slovenian (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sk</name> + <!-- Keyboard indicator for Slovak layouts --> + <shortDescription>sk</shortDescription> + <description>Slovak</description> + <languageList> + <iso639Id>slk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <description>Slovak (extended backslash)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <description>Slovak (QWERTY)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <description>Slovak (QWERTY, extended backslash)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>es</name> + <!-- Keyboard indicator for Spanish layouts --> + <shortDescription>es</shortDescription> + <description>Spanish</description> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Spanish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Spanish (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <description>Spanish (dead tilde)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Spanish (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Spanish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ast</name> + <shortDescription>ast</shortDescription> + <description>Asturian (Spain, with bottom-dot H and L)</description> + <languageList> + <iso639Id>ast</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cat</name> + <shortDescription>ca</shortDescription> + <description>Catalan (Spain, with middle-dot L)</description> + <languageList> + <iso639Id>cat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Spanish (Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>se</name> + <!-- Keyboard indicator for Swedish layouts --> + <shortDescription>sv</shortDescription> + <description>Swedish</description> + <languageList> + <iso639Id>swe</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <description>Swedish (no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Swedish (Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Sweden, phonetic)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>rus_nodeadkeys</name> + <!-- Keyboard indicator for Russian layouts --> + <shortDescription>ru</shortDescription> + <description>Russian (Sweden, phonetic, no dead keys)</description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <description>Northern Saami (Sweden)</description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>Swedish (Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>svdvorak</name> + <description>Swedish (Svdvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us_dvorak</name> + <description>Swedish (Dvorak, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <description>Swedish (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>swl</name> + <description>Swedish Sign Language</description> + <languageList> + <iso639Id>swl</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ch</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland)</description> + <languageList> + <iso639Id>deu</iso639Id> + <iso639Id>gsw</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>German (Switzerland, legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_nodeadkeys</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, no dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_sundeadkeys</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_nodeadkeys</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, no dead keys)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_sundeadkeys</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, Sun dead keys)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_mac</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Switzerland, Macintosh)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>de_mac</name> + <!-- Keyboard indicator for German layouts --> + <shortDescription>de</shortDescription> + <description>German (Switzerland, Macintosh)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sy</name> + <!-- Keyboard indicator for Arabic layouts --> + <shortDescription>ar</shortDescription> + <description>Arabic (Syria)</description> + <languageList> + <iso639Id>syr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>syc</name> + <!-- Keyboard indicator for Syriac layouts --> + <shortDescription>syc</shortDescription> + <description>Syriac</description> + </configItem> + </variant> + <variant> + <configItem> + <name>syc_phonetic</name> + <!-- Keyboard indicator for Syriac layouts --> + <shortDescription>syc</shortDescription> + <description>Syriac (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Syria, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tj</name> + <!-- Keyboard indicator for Tajik layouts --> + <shortDescription>tg</shortDescription> + <description>Tajik</description> + <languageList> + <iso639Id>tgk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Tajik (legacy)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lk</name> + <!-- Keyboard indicator for Sinhala layouts --> + <shortDescription>si</shortDescription> + <description>Sinhala (phonetic)</description> + <languageList> + <iso639Id>sin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tam_unicode</name> + <!-- Keyboard indicator for Tamil layouts --> + <shortDescription>ta</shortDescription> + <description>Tamil (Sri Lanka, TamilNet '99)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_TAB</name> + <description>Tamil (Sri Lanka, TamilNet '99, TAB encoding)</description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <!-- Keyboard indicator for US layouts --> + <shortDescription>us</shortDescription> + <description>Sinhala (US)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>th</name> + <!-- Keyboard indicator for Thai layouts --> + <shortDescription>th</shortDescription> + <description>Thai</description> + <languageList> + <iso639Id>tha</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tis</name> + <description>Thai (TIS-820.2538)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>pat</name> + <description>Thai (Pattachote)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tr</name> + <!-- Keyboard indicator for Turkish layouts --> + <shortDescription>tr</shortDescription> + <description>Turkish</description> + <languageList> + <iso639Id>tur</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>f</name> + <description>Turkish (F)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt</name> + <description>Turkish (Alt-Q)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <description>Turkish (Sun dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, Latin Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, F)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <!-- Keyboard indicator for Kurdish layouts --> + <shortDescription>ku</shortDescription> + <description>Kurdish (Turkey, Latin Alt-Q)</description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>Turkish (intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish F)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <!-- Keyboard indicator for Crimean Tatar layouts --> + <shortDescription>crh</shortDescription> + <description>Crimean Tatar (Turkish Alt-Q)</description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tw</name> + <!-- Keyboard indicator for Taiwanese layouts --> + <shortDescription>zh</shortDescription> + <description>Taiwanese</description> + <languageList> + <iso639Id>fox</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>indigenous</name> + <description>Taiwanese (indigenous)</description> + <languageList> + <iso639Id>ami</iso639Id> + <iso639Id>tay</iso639Id> + <iso639Id>bnn</iso639Id> + <iso639Id>ckv</iso639Id> + <iso639Id>pwn</iso639Id> + <iso639Id>pyu</iso639Id> + <iso639Id>dru</iso639Id> + <iso639Id>ais</iso639Id> + <iso639Id>ssf</iso639Id> + <iso639Id>tao</iso639Id> + <iso639Id>tsu</iso639Id> + <iso639Id>trv</iso639Id> + <iso639Id>xnb</iso639Id> + <iso639Id>sxr</iso639Id> + <iso639Id>uun</iso639Id> + <iso639Id>fos</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>saisiyat</name> + <!-- Keyboard indicator for Saisiyat layouts --> + <shortDescription>xsy</shortDescription> + <description>Saisiyat (Taiwan)</description> + <languageList> + <iso639Id>xsy</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ua</name> + <!-- Keyboard indicator for Ukranian layouts --> + <shortDescription>uk</shortDescription> + <description>Ukrainian</description> + <languageList> + <iso639Id>ukr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Ukrainian (phonetic)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <description>Ukrainian (typewriter)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <description>Ukrainian (Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <description>Ukrainian (legacy)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu</name> + <description>Ukrainian (standard RSTU)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu_ru</name> + <description>Russian (Ukraine, standard RSTU)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>homophonic</name> + <description>Ukrainian (homophonic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gb</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (UK)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>extd</name> + <description>English (UK, extended, Windows)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <description>English (UK, intl., with dead keys)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>English (UK, Dvorak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorakukp</name> + <description>English (UK, Dvorak, with UK punctuation)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <description>English (UK, Macintosh)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_intl</name> + <description>English (UK, Macintosh, intl.)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>English (UK, Colemak)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>pl</name> + <!-- Keyboard indicator for Polish layouts --> + <shortDescription>pl</shortDescription> + <description>Polish (British keyboard)</description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>uz</name> + <!-- Keyboard indicator for Uzbek layouts --> + <shortDescription>uz</shortDescription> + <description>Uzbek</description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>latin</name> + <description>Uzbek (Latin)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>vn</name> + <!-- Keyboard indicator for Vietnamese layouts --> + <shortDescription>vi</shortDescription> + <description>Vietnamese</description> + <languageList> + <iso639Id>vie</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>us</name> + <description>Vietnamese (US)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr</name> + <description>Vietnamese (French)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kr</name> + <!-- Keyboard indicator for Korean layouts --> + <shortDescription>ko</shortDescription> + <description>Korean</description> + <languageList> + <iso639Id>kor</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kr104</name> + <description>Korean (101/104-key compatible)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nec_vndr/jp</name> + <!-- Keyboard indicator for Japaneses --> + <shortDescription>ja</shortDescription> + <description>Japanese (PC-98)</description> + <countryList> + <iso3166Id>JP</iso3166Id> + </countryList> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ie</name> + <!-- Keyboard indicator for Irish layouts --> + <shortDescription>ie</shortDescription> + <description>Irish</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>CloGaelach</name> + <description>CloGaelach</description> + <languageList> + <iso639Id>gle</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>UnicodeExpert</name> + <description>Irish (UnicodeExpert)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam</name> + <description>Ogham</description> + <languageList> + <iso639Id>sga</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam_is434</name> + <description>Ogham (IS434)</description> + <languageList> + <iso639Id>sga</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pk</name> + <!-- Keyboard indicator for Urdu layouts --> + <shortDescription>ur</shortDescription> + <description>Urdu (Pakistan)</description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>urd-crulp</name> + <description>Urdu (Pakistan, CRULP)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-nla</name> + <description>Urdu (Pakistan, NLA)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>ara</name> + <shortDescription>ar</shortDescription> + <description>Arabic (Pakistan)</description> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>snd</name> + <!-- Keyboard indicator for Sindhi layouts --> + <shortDescription>sd</shortDescription> + <description>Sindhi</description> + <languageList> + <iso639Id>snd</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mv</name> + <!-- Keyboard indicator for Dhivehi layouts --> + <shortDescription>dv</shortDescription> + <description>Dhivehi</description> + <languageList> + <iso639Id>div</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>za</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (South Africa)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>epo</name> + <!-- Keyboard indicator for Esperanto layouts --> + <shortDescription>eo</shortDescription> + <description>Esperanto</description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <description>Esperanto (legacy)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>np</name> + <!-- Keyboard indicator for Nepali layouts --> + <shortDescription>ne</shortDescription> + <description>Nepali</description> + <languageList> + <iso639Id>nep</iso639Id> + <!-- sat-Deva used in Nepal: http://www.ethnologue.com/language/sat --> + <iso639Id>sat</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ng</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Nigeria)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>igbo</name> + <!-- Keyboard indicator for Igbo layouts --> + <shortDescription>ig</shortDescription> + <description>Igbo</description> + <languageList> + <iso639Id>ibo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>yoruba</name> + <!-- Keyboard indicator for Yoruba layouts --> + <shortDescription>yo</shortDescription> + <description>Yoruba</description> + <languageList> + <iso639Id>yor</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <!-- Keyboard indicator for Hausa layouts --> + <shortDescription>ha</shortDescription> + <description>Hausa (Nigeria)</description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>et</name> + <!-- Keyboard indicator for Amharic layouts --> + <shortDescription>am</shortDescription> + <description>Amharic</description> + <languageList> + <iso639Id>amh</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>sn</name> + <!-- Keyboard indicator for Wolof layouts --> + <shortDescription>wo</shortDescription> + <description>Wolof</description> + <languageList> + <iso639Id>wol</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>brai</name> + <!-- Keyboard indicator for Braille layouts --> + <shortDescription>brl</shortDescription> + <description>Braille</description> + </configItem> + <variantList> + <variant> + <configItem> + <name>left_hand</name> + <description>Braille (left-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>left_hand_invert</name> + <description>Braille (left-handed inverted thumb)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>right_hand</name> + <description>Braille (right-handed)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>right_hand_invert</name> + <description>Braille (right-handed inverted thumb)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tm</name> + <!-- Keyboard indicator for Turkmen layouts --> + <shortDescription>tk</shortDescription> + <description>Turkmen</description> + <languageList> + <iso639Id>tuk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alt</name> + <description>Turkmen (Alt-Q)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ml</name> + <!-- Keyboard indicator for Bambara layouts --> + <shortDescription>bm</shortDescription> + <description>Bambara</description> + <languageList> + <iso639Id>bam</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-oss</name> + <!-- Keyboard indicator for French layouts --> + <shortDescription>fr</shortDescription> + <description>French (Mali, alt.)</description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us-mac</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Mali, US, Macintosh)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>us-intl</name> + <!-- Keyboard indicator for English layouts --> + <shortDescription>en</shortDescription> + <description>English (Mali, US, intl.)</description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tz</name> + <!-- Keyboard indicator for Swahili layouts --> + <shortDescription>sw</shortDescription> + <description>Swahili (Tanzania)</description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>tg</name> + <shortDescription>fr-tg</shortDescription> + <description>French (Togo)</description> + <languageList> + <iso639Id>fra</iso639Id> + <iso639Id>ajg</iso639Id> + <iso639Id>blo</iso639Id> + <iso639Id>kpo</iso639Id> + <iso639Id>ewe</iso639Id> + <iso639Id>fon</iso639Id> + <iso639Id>fue</iso639Id> + <iso639Id>gej</iso639Id> + <iso639Id>ife</iso639Id> + <iso639Id>kbp</iso639Id> + <iso639Id>las</iso639Id> + <iso639Id>dop</iso639Id> + <iso639Id>mfg</iso639Id> + <iso639Id>nmz</iso639Id> + <iso639Id>bud</iso639Id> + <iso639Id>gng</iso639Id> + <iso639Id>kdh</iso639Id> + <iso639Id>soy</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ke</name> + <!-- Keyboard indicator for Swahili layouts --> + <shortDescription>sw</shortDescription> + <description>Swahili (Kenya)</description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kik</name> + <!-- Keyboard indicator for Kikuyu layouts --> + <shortDescription>ki</shortDescription> + <description>Kikuyu</description> + <languageList> + <iso639Id>kik</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bw</name> + <!-- Keyboard indicator for Tswana layouts --> + <shortDescription>tn</shortDescription> + <description>Tswana</description> + <languageList> + <iso639Id>tsn</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ph</name> + <!-- Keyboard indicator for Filipino layouts --> + <shortDescription>ph</shortDescription> + <description>Filipino</description> + <languageList> + <iso639Id>eng</iso639Id> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>qwerty-bay</name> + <description>Filipino (QWERTY, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak</name> + <description>Filipino (Capewell-Dvorak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak-bay</name> + <description>Filipino (Capewell-Dvorak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6</name> + <description>Filipino (Capewell-QWERF 2006, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6-bay</name> + <description>Filipino (Capewell-QWERF 2006, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <description>Filipino (Colemak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak-bay</name> + <description>Filipino (Colemak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <description>Filipino (Dvorak, Latin)</description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-bay</name> + <description>Filipino (Dvorak, Baybayin)</description> + <languageList> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>md</name> + <shortDescription>md</shortDescription> + <description>Moldavian</description> + <languageList> + <iso639Id>ron</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>gag</name> + <shortDescription>gag</shortDescription> + <description>Moldavian (Gagauz)</description> + <languageList> + <iso639Id>gag</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>id</name> + <shortDescription>id</shortDescription> + <description>Indonesian (Arab Melayu, phonetic)</description> + <languageList> + <iso639Id>ind</iso639Id> + <iso639Id>msa</iso639Id> + <iso639Id>min</iso639Id> + <iso639Id>ace</iso639Id> + <iso639Id>bjn</iso639Id> + <iso639Id>tsg</iso639Id> + <iso639Id>mfa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phoneticx</name> + <description>Indonesian (Arab Melayu, extended phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>jv</name> + <shortDescription>jv</shortDescription> + <description>Indonesian (Javanese)</description> + <languageList> + <iso639Id>jv</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>my</name> + <shortDescription>ms</shortDescription> + <description>Malay (Jawi, Arabic Keyboard)</description> + <languageList> + <iso639Id>ind</iso639Id> + <iso639Id>msa</iso639Id> + <iso639Id>min</iso639Id> + <iso639Id>ace</iso639Id> + <iso639Id>bjn</iso639Id> + <iso639Id>tsg</iso639Id> + <iso639Id>mfa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <description>Malay (Jawi, phonetic)</description> + </configItem> + </variant> + </variantList> + </layout> + </layoutList> + <optionList> + <group allowMultipleSelection="true"> + <!-- The key combination used to switch between groups --> + <configItem> + <name>grp</name> + <description>Switching to another layout</description> + </configItem> + <option> + <configItem> + <name>grp:switch</name> + <description>Right Alt (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lswitch</name> + <description>Left Alt (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_switch</name> + <description>Left Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_switch</name> + <description>Right Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_switch</name> + <description>Any Win (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:menu_switch</name> + <description>Menu (while pressed), Shift+Menu for Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_switch</name> + <description>Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_switch</name> + <description>Right Ctrl (while pressed)</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:toggle</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lalt_toggle</name> + <description>Left Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_toggle</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_toggle</name> + <description>Shift+Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_switch</name> + <description>Caps Lock to first layout; Shift+Caps Lock to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_menu_switch</name> + <description>Left Win to first layout; Right Win/Menu to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_rctrl_switch</name> + <description>Left Ctrl to first layout; Right Ctrl to last layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_caps_toggle</name> + <description>Alt+Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shifts_toggle</name> + <description>Both Shift together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alts_toggle</name> + <description>Both Alt together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrls_toggle</name> + <description>Both Ctrl together</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_shift_toggle</name> + <description>Ctrl+Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lshift_toggle</name> + <description>Left Ctrl+Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_rshift_toggle</name> + <description>Right Ctrl+Right Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_alt_toggle</name> + <description>Alt+Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_shift_toggle</name> + <description>Alt+Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lalt_lshift_toggle</name> + <description>Left Alt+Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_space_toggle</name> + <description>Alt+Space</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:menu_toggle</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_toggle</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_space_toggle</name> + <description>Win+Space</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_toggle</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lshift_toggle</name> + <description>Left Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rshift_toggle</name> + <description>Right Shift</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_toggle</name> + <description>Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_toggle</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:sclk_toggle</name> + <description>Scroll Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lwin_rctrl_menu</name> + <description>Left Ctrl+Left Win to first layout; Right Ctrl+Menu to second layout</description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lwin_toggle</name> + <description>Left Ctrl+Left Win</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- The key combination used to choose the 3rd (and 4th, together with Shift) + level of symbols --> + <configItem> + <name>lv3</name> + <description>Key to choose the 3rd level</description> + </configItem> + <option> + <configItem> + <name>lv3:switch</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:menu_switch</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:win_switch</name> + <description>Any Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lwin_switch</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:rwin_switch</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:alt_switch</name> + <description>Any Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lalt_switch</name> + <description>Left Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch_multikey</name> + <description>Right Alt; Shift+Right Alt as Compose</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_alt</name> + <description>Right Alt never chooses 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:enter_switch</name> + <description>Enter on keypad</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch</name> + <description>Backslash</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch</name> + <description>The "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch_latch</name> + <description>Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch_latch</name> + <description>Backslash; acts as onetime lock when pressed together with another 3rd level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch_latch</name> + <description>The "< >" key; acts as onetime lock when pressed together with another 3rd level chooser</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Ctrl" key --> + <configItem> + <name>ctrl</name> + <description>Ctrl position</description> + </configItem> + <option> + <configItem> + <name>ctrl:nocaps</name> + <description>Caps Lock as Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:lctrl_meta</name> + <description>Left Ctrl as Meta</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swapcaps</name> + <description>Swap Ctrl and Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swapcaps_hyper</name> + <description>Caps Lock as Ctrl, Ctrl as Hyper</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ac_ctrl</name> + <description>To the left of "A"</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:aa_ctrl</name> + <description>At the bottom left</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:rctrl_ralt</name> + <description>Right Ctrl as Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:menu_rctrl</name> + <description>Menu as Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lalt_lctl</name> + <description>Swap Left Alt with Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lwin_lctl</name> + <description>Swap Left Win with Left Ctrl</description> + </configItem> + </option><option> + <configItem> + <name>ctrl:swap_rwin_rctl</name> + <description>Swap Right Win with Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swap_lalt_lctl_lwin</name> + <description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Using startard LEDs to indicate the alternative (not first) group(s) --> + <configItem> + <name>grp_led</name> + <description>Use keyboard LED to show alternative layout</description> + </configItem> + <option> + <configItem> + <name>grp_led:num</name> + <description>Num Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:caps</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:scroll</name> + <description>Scroll Lock</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Using LEDs to indicate modifiers --> + <configItem> + <name>mod_led</name> + <description>Use keyboard LED to indicate modifiers</description> + </configItem> + <option> + <configItem> + <name>mod_led:compose</name> + <description>Compose</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Select a keypad type --> + <configItem> + <name>keypad</name> + <description>Layout of numeric keypad</description> + </configItem> + <option> + <configItem> + <name>keypad:legacy</name> + <description>Legacy</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss</name> + <description>Unicode arrows and math operators</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future</name> + <description>Unicode arrows and math operators on default level</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:legacy_wang</name> + <description>Legacy Wang 724</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss_wang</name> + <description>Wang 724 keypad with Unicode arrows and math operators</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future_wang</name> + <description>Wang 724 keypad with Unicode arrows and math operators on default level</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:hex</name> + <description>Hexadecimal</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:atm</name> + <description>Phone and ATM style</description> + </configItem> + </option> + </group> + <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place --> + <group allowMultipleSelection="false"> + <!-- Select a keypad KPDL variant --> + <configItem> + <name>kpdl</name> + <description>Numeric keypad Delete behavior</description> + </configItem> + <option> + <configItem> + <!-- Actually, with KP_DECIMAL, as the old keypad(dot) --> + <name>kpdl:dot</name> + <description>Legacy key with dot</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:comma</name> + <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) --> + <description>Legacy key with comma</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss</name> + <description>Four-level key with dot</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss_latin9</name> + <description>Four-level key with dot, Latin-9 only</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:commaoss</name> + <description>Four-level key with comma</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:momayyezoss</name> + <description>Four-level key with momayyez</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:kposs</name> + <!-- This assumes the KP_ abstract symbols are actually useful for some apps + The description needs to be rewritten --> + <description>Four-level key with abstract separators</description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:semi</name> + <description>Semicolon on third level</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Caps Lock tweaks. + "Internal" capitalization means capitalization using some internal tables. + Otherwise "as Shift" - means using next group. --> + <configItem> + <name>caps</name> + <description>Caps Lock behavior</description> + </configItem> + <option> + <configItem> + <name>caps:internal</name> + <description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:internal_nocancel</name> + <description>Caps Lock uses internal capitalization; Shift does not affect Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift</name> + <description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift_nocancel</name> + <description>Caps Lock acts as Shift with locking; Shift does not affect Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:capslock</name> + <description>Caps Lock toggles normal capitalization of alphabetic characters</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shiftlock</name> + <description>Caps Lock toggles Shift Lock (affects all keys)</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:swapescape</name> + <description>Swap Esc and Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:escape</name> + <description>Make Caps Lock an additional Esc</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:escape_shifted_capslock</name> + <description>Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:backspace</name> + <description>Make Caps Lock an additional Backspace</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:super</name> + <description>Make Caps Lock an additional Super</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:hyper</name> + <description>Make Caps Lock an additional Hyper</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:menu</name> + <description>Make Caps Lock an additional Menu key</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:numlock</name> + <description>Make Caps Lock an additional Num Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:ctrl_modifier</name> + <description>Caps Lock is also a Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>caps:none</name> + <description>Caps Lock is disabled</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) --> + <configItem> + <name>altwin</name> + <description>Alt and Win behavior</description> + </configItem> + <option> + <configItem> + <name>altwin:menu</name> + <description>Add the standard behavior to Menu key</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:menu_win</name> + <description>Menu is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_alt</name> + <description>Alt and Meta are on Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:alt_win</name> + <description>Alt is mapped to Win and the usual Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_win</name> + <description>Ctrl is mapped to Win and the usual Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_alt_win</name> + <description>Ctrl is mapped to Alt, Alt to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_win</name> + <description>Meta is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:left_meta_win</name> + <description>Meta is mapped to Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:hyper_win</name> + <description>Hyper is mapped to Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:alt_super_win</name> + <description>Alt is mapped to Right Win, Super to Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:swap_lalt_lwin</name> + <description>Left Alt is swapped with Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:swap_alt_win</name> + <description>Alt is swapped with Win</description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:prtsc_rwin</name> + <description>Win is mapped to PrtSc and the usual Win</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys --> + <configItem> + <name>Compose key</name> + <description>Position of Compose key</description> + </configItem> + <option> + <configItem> + <name>compose:ralt</name> + <description>Right Alt</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lwin</name> + <description>Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lwin-altgr</name> + <description>3rd level of Left Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rwin</name> + <description>Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rwin-altgr</name> + <description>3rd level of Right Win</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:menu</name> + <description>Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:menu-altgr</name> + <description>3rd level of Menu</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lctrl</name> + <description>Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lctrl-altgr</name> + <description>3rd level of Left Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rctrl</name> + <description>Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rctrl-altgr</name> + <description>3rd level of Right Ctrl</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:caps</name> + <description>Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:caps-altgr</name> + <description>3rd level of Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:102</name> + <description>The "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:102-altgr</name> + <description>3rd level of the "< >" key</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:paus</name> + <description>Pause</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:prsc</name> + <description>PrtSc</description> + </configItem> + </option> + <option> + <configItem> + <name>compose:sclk</name> + <description>Scroll Lock</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>compat</name> + <description>Compatibility options</description> + </configItem> + <option> + <configItem> + <name>numpad:pc</name> + <description>Default numeric keypad keys</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:mac</name> + <description>Numeric keypad always enters digits (as in macOS)</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:microsoft</name> + <description>Num Lock on: digits; Shift for arrows. Num Lock off: arrows (as in Windows)</description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:shift3</name> + <description>Shift does not cancel Num Lock, chooses 3rd level instead</description> + </configItem> + </option> + <option> + <configItem> + <name>srvrkeys:none</name> + <description>Special keys (Ctrl+Alt+<key>) handled in a server</description> + </configItem> + </option> + <option> + <configItem> + <name>apple:alupckeys</name> + <description>Apple Aluminium emulates Pause, PrtSc, Scroll Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:breaks_caps</name> + <description>Shift cancels Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>misc:typo</name> + <description>Enable extra typographic characters</description> + </configItem> + </option> + <option> + <configItem> + <name>misc:apl</name> + <description>Enable APL overlay characters</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock</name> + <description>Both Shift together enable Caps Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock_cancel</name> + <description>Both Shift together enable Caps Lock; one Shift key disables it</description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_shiftlock</name> + <description>Both Shift together enable Shift Lock</description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:pointerkeys</name> + <description>Shift + Num Lock enables PointerKeys</description> + </configItem> + </option> + <option> + <configItem> + <name>grab:break_actions</name> + <description>Allow breaking grabs with keyboard actions (warning: security risk)</description> + </configItem> + </option> + <option> + <configItem> + <name>grab:debug</name> + <description>Allow grab and window tree logging</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Special shortcuts for the Euro character --> + <configItem> + <name>currencysign</name> + <description>Currency signs</description> + </configItem> + <option> + <configItem> + <name>eurosign:e</name> + <description>Euro on E</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:2</name> + <description>Euro on 2</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:4</name> + <description>Euro on 4</description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:5</name> + <description>Euro on 5</description> + </configItem> + </option> + <option> + <configItem> + <name>rupeesign:4</name> + <description>Rupee on 4</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>lv5</name> + <description>Key to choose 5th level</description> + </configItem> + <option> + <configItem> + <name>lv5:lsgt_switch</name> + <description>The "< >" key chooses 5th level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch</name> + <description>Right Alt chooses 5th level</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock</name> + <description>The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock</name> + <description>Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock</name> + <description>Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> +<!-- + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <description>The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock_cancel</name> + <description>Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock_cancel</name> + <description>Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <description>The "< >" key chooses 5th level; acts as onetime lock lock when pressed together with another 5th level chooser</description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <description>Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser</description> + </configItem> + </option> +--> + </group> + <group allowMultipleSelection="false"> + <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level --> + <configItem> + <name>nbsp</name> + <description>Non-breaking space input</description> + </configItem> + <option> + <configItem> + <name>nbsp:none</name> + <description>Usual space at any level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level2</name> + <description>Non-breaking space at the 2nd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3</name> + <description>Non-breaking space at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3s</name> + <description>Non-breaking space at the 3rd level, nothing at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3n</name> + <description>Non-breaking space at the 3rd level, thin non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4</name> + <description>Non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4n</name> + <description>Non-breaking space at the 4th level, thin non-breaking space at the 6th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4nl</name> + <description>Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift)</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2</name> + <description>Zero-width non-joiner at the 2nd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3</name> + <description>Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3nb4</name> + <description>Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3s</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, nothing at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3zwj4</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3nnb4</name> + <description>Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level</description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj3zwj4</name> + <description>Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>japan</name> + <description>Japanese keyboard options</description> + </configItem> + <option> + <configItem> + <name>japan:kana_lock</name> + <description>Kana Lock key is locking</description> + </configItem> + </option> + <option> + <configItem> + <name>japan:nicola_f_bs</name> + <description>NICOLA-F style Backspace</description> + </configItem> + </option> + <option> + <configItem> + <name>japan:hztg_escape</name> + <description>Make Zenkaku Hankaku an additional Esc</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>korean</name> + <description>Korean Hangul/Hanja keys</description> + </configItem> + <option> + <configItem> + <name>korean:ralt_hangul</name> + <description>Make right Alt a Hangul key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:rctrl_hangul</name> + <description>Make right Ctrl a Hangul key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:ralt_hanja</name> + <description>Make right Alt a Hanja key</description> + </configItem> + </option> + <option> + <configItem> + <name>korean:rctrl_hanja</name> + <description>Make right Ctrl a Hanja key</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <configItem> + <name>esperanto</name> + <description>Esperanto letters with superscripts</description> + </configItem> + <option> + <configItem> + <name>esperanto:qwerty</name> + <description>At the corresponding key in a QWERTY layout</description> + </configItem> + </option> + <option> + <configItem> + <name>esperanto:dvorak</name> + <description>At the corresponding key in a Dvorak layout</description> + </configItem> + </option> + <option> + <configItem> + <name>esperanto:colemak</name> + <description>At the corresponding key in a Colemak layout</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>solaris</name> + <description>Old Solaris keycodes compatibility</description> + </configItem> + <option> + <configItem> + <name>solaris:sun_compat</name> + <description>Sun key compatibility</description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>terminate</name> + <description>Key sequence to kill the X server</description> + </configItem> + <option> + <configItem> + <name>terminate:ctrl_alt_bksp</name> + <description>Ctrl+Alt+Backspace</description> + </configItem> + </option> + </group> + </optionList> +</xkbConfigRegistry> diff --git a/test/data/rules/xkb.dtd b/test/data/rules/xkb.dtd new file mode 100644 index 0000000..0a37b11 --- /dev/null +++ b/test/data/rules/xkb.dtd @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + + Description: XKB configuration file DTD + Author: Sergey V. Udaltsov + +--> + +<!ELEMENT xkbConfigRegistry (modelList,layoutList,optionList)> + +<!ATTLIST xkbConfigRegistry + version CDATA "1.1"> + +<!ELEMENT modelList (model*)> + +<!ELEMENT model (configItem)> + +<!ELEMENT layoutList (layout*)> + +<!ELEMENT layout (configItem,variantList?)> + +<!ELEMENT optionList (group*)> + +<!ELEMENT variantList (variant*)> + +<!ELEMENT variant (configItem)> + +<!ELEMENT group (configItem,option*)> +<!ATTLIST group + allowMultipleSelection (true|false) "false"> + +<!ELEMENT option (configItem)> + +<!ELEMENT configItem (name,shortDescription*,description*,vendor?,countryList?,languageList?,hwList?)> + +<!ATTLIST configItem + popularity (standard|exotic) "standard"> + +<!ELEMENT name (#PCDATA)> + +<!ELEMENT shortDescription (#PCDATA)> + +<!ELEMENT description (#PCDATA)> + +<!ELEMENT vendor (#PCDATA)> + +<!ELEMENT countryList (iso3166Id+)> + +<!ELEMENT iso3166Id (#PCDATA)> + +<!ELEMENT languageList (iso639Id+)> + +<!ELEMENT iso639Id (#PCDATA)> + +<!ELEMENT hwList (hwId+)> + +<!ELEMENT hwId (#PCDATA)> diff --git a/test/data/symbols/altwin b/test/data/symbols/altwin index 7240ab8..038456b 100644 --- a/test/data/symbols/altwin +++ b/test/data/symbols/altwin @@ -74,6 +74,12 @@ xkb_symbols "menu" { key <MENU> { [ Menu ] }; }; +// Menu is mapped to the right Win key. +partial modifier_keys +xkb_symbols "menu_win" { + key <MENU> { [ Super_R ] }; +}; + // Layout for Tux key caps with additional right Alt key partial modifier_keys xkb_symbols "alt_super_win" { diff --git a/test/data/symbols/ca b/test/data/symbols/ca index 84f153c..41a914f 100644 --- a/test/data/symbols/ca +++ b/test/data/symbols/ca @@ -1,4 +1,4 @@ -default partial +default partial xkb_symbols "fr" { name[Group1] = "French (Canada)"; @@ -170,7 +170,7 @@ xkb_symbols "multi" { include "ca(fr)" - name[Group1] = "Canadian Multilingual (1st part)"; + name[Group1] = "Canadian (intl., 1st part)"; key <TLDE> { [ slash, backslash, bar ] }; key <AE01> { [ 1, exclam ] }; @@ -206,7 +206,7 @@ xkb_symbols "multi" { partial xkb_symbols "multi-2gr" { - name[Group1] = "Canadian Multilingual (2nd part)"; + name[Group1] = "Canadian (intl., 2nd part)"; key <TLDE> { [ NoSymbol, hyphen ] }; key <AE01> { [ onesuperior, exclamdown ] }; @@ -327,7 +327,7 @@ xkb_symbols "ike" { partial xkb_symbols "multix" { - name[Group1] = "Canadian Multilingual"; + name[Group1] = "Canadian (intl.)"; key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; key <TLDE> { [ slash, backslash, bar, NoSymbol, diff --git a/test/data/symbols/capslock b/test/data/symbols/capslock index 6b85c3d..a082b75 100644 --- a/test/data/symbols/capslock +++ b/test/data/symbols/capslock @@ -35,6 +35,15 @@ xkb_symbols "escape" { }; hidden partial modifier_keys +xkb_symbols "escape_shifted_capslock" { + key <CAPS> { + type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Escape, Caps_Lock ], + actions[Group1] = [ NoAction(), LockMods(modifiers = Lock) ] + }; +}; + +hidden partial modifier_keys xkb_symbols "backspace" { key <CAPS> { [ BackSpace ] }; }; diff --git a/test/data/symbols/ch b/test/data/symbols/ch index a87f93a..626778c 100644 --- a/test/data/symbols/ch +++ b/test/data/symbols/ch @@ -1,4 +1,4 @@ -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "basic" { include "latin" @@ -62,7 +62,7 @@ xkb_symbols "de_Sundeadkeys" { partial alphanumeric_keys xkb_symbols "de_sundeadkeys" { include "ch(de_Sundeadkeys)" - name[Group1]= "German (Switzerland, with Sun dead keys)"; + name[Group1]= "German (Switzerland, Sun dead keys)"; }; partial alphanumeric_keys @@ -104,7 +104,7 @@ xkb_symbols "fr_Sundeadkeys" { partial alphanumeric_keys xkb_symbols "fr_sundeadkeys" { include "ch(fr_Sundeadkeys)" - name[Group1]= "French (Switzerland, with Sun dead keys)"; + name[Group1]= "French (Switzerland, Sun dead keys)"; }; partial alphanumeric_keys @@ -153,7 +153,7 @@ xkb_symbols "de_mac" { key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] }; key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] }; key <AC01> { [ a, A, aring, Aring ] }; - key <AC02> { [ s, S, ssharp, NoSymbol ] }; + key <AC02> { [ s, S, ssharp, U1E9E ] }; // ligature fl key <AC03> { [ d, D, Greek_sigma, NoSymbol ] }; // partialderivative is not available here att diff --git a/test/data/symbols/ctrl b/test/data/symbols/ctrl index 8791b49..a9e97f5 100644 --- a/test/data/symbols/ctrl +++ b/test/data/symbols/ctrl @@ -20,6 +20,25 @@ xkb_symbols "swapcaps" { modifier_map Lock { <LCTL> }; }; +// Swap the functions of the CapsLock key and the left Ctrl key, +// but make the Ctrl key a 'Hyper' modifier +partial modifier_keys +xkb_symbols "swapcaps_hyper" { + replace key <CAPS> { [ Control_L ] }; + replace key <LCTL> { [ Hyper_L ] }; + modifier_map Control { <CAPS> }; + modifier_map Mod3 { <LCTL> }; +}; + +// Set CapsLock to left Ctrl and left Ctrl to switch layout. +partial modifier_keys +xkb_symbols "swapcaps_and_switch_layout" { + replace key <CAPS> { [ Control_L ] }; + replace key <LCTL> { [ ISO_Next_Group ] }; + modifier_map Control { <CAPS> }; + modifier_map Lock { <LCTL> }; +}; + // Move Ctrl to the leftmost key on the middle row and CapsLock to the // leftmost key on the bottom row. Only works if the geometry or keycodes // file has defined appropriate aliases for the keys in question. diff --git a/test/data/symbols/cz b/test/data/symbols/cz index 3407e92..8fbff0e 100644 --- a/test/data/symbols/cz +++ b/test/data/symbols/cz @@ -1,4 +1,4 @@ -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "basic" { // This layout conforms to a new Czech compromise standard @@ -108,6 +108,74 @@ xkb_symbols "qwerty_bksl" { key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; }; +partial alphanumeric_keys +xkb_symbols "qwerty-mac" { + + // This layout corresponds to the Apple's Czech - QWERTY. + // 2018 by Jakub Jirutka <jakub@jirutka.cz> + + include "latin" + name[Group1]= "Czech (QWERTY, Macintosh)"; + + key <TLDE> { [ less, greater, lessthanequal, greaterthanequal]}; + key <AE01> { [ plus, 1, grave, notsign ] }; + key <AE02> { [ ecaron, 2, at, enfilledcircbullet]}; + key <AE03> { [ scaron, 3, numbersign, notequal ] }; + key <AE04> { [ ccaron, 4, dollar, sterling ] }; + key <AE05> { [ rcaron, 5, asciitilde, U25CA ] }; + key <AE06> { [ zcaron, 6, asciicircum, dagger ] }; + key <AE07> { [ yacute, 7, ampersand, paragraph ] }; + key <AE08> { [ aacute, 8, asterisk, division ] }; + key <AE09> { [ iacute, 9, braceleft, guillemotleft] }; + key <AE10> { [ eacute, 0, braceright, guillemotright]}; + key <AE11> { [ equal, percent, dead_abovering, dead_cedilla]}; + key <AE12> { [dead_acute, dead_caron, dead_circumflex, dead_macron]}; + + key <AD01> { [ q, Q, NoSymbol, NoSymbol ] }; + key <AD02> { [ w, W, eabovedot, Eabovedot ] }; + key <AD03> { [ e, E, eogonek, Eogonek ] }; + key <AD04> { [ r, R, EuroSign, registered ] }; + key <AD05> { [ t, T, NoSymbol, trademark ] }; + key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; + key <AD07> { [ u, U, NoSymbol, NoSymbol ] }; + key <AD08> { [ i, I, NoSymbol, NoSymbol ] }; + key <AD09> { [ o, O, NoSymbol, NoSymbol ] }; + key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; + + key <AD11> { [ uacute, slash, bracketleft, less ] }; + key <AD12> { [parenright, parenleft, bracketright, greater ] }; + + key <AC01> { [ a, A, aogonek, Aogonekl ] }; + key <AC02> { [ s, S, ssharp, U2211 ] }; + key <AC03> { [ d, D, partialderivate, U2206 ] }; + key <AC04> { [ f, F, NoSymbol, NoSymbol ] }; + key <AC05> { [ g, G, NoSymbol, NoSymbol ] }; + key <AC06> { [ h, H, leftsinglequotemark, leftdoublequotemark]}; + key <AC07> { [ j, J, rightsinglequotemark, rightdoublequotemark]}; + key <AC08> { [ k, K, NoSymbol, NoSymbol ] }; + key <AC09> { [ l, L, lstroke, Lstroke ] }; + + key <AC10> { [ uring, quotedbl, semicolon, ellipsis ] }; + key <AC11> { [ section, exclam, apostrophe, dead_tilde ] }; + key <BKSL> { [dead_diaeresis, grave, dead_diaeresis, dead_doubleacute]}; + + key <LSGT> { [ backslash, bar, NoSymbol, NoSymbol ] }; + key <AB01> { [ z, Z, zabovedot, Zabovedot ] }; + key <AB02> { [ x, X, NoSymbol, NoSymbol ] }; + key <AB03> { [ c, C, NoSymbol, copyright ] }; + key <AB04> { [ v, V, NoSymbol, squareroot ] }; + key <AB05> { [ b, B, NoSymbol, NoSymbol ] }; + key <AB06> { [ n, N, singlelowquotemark, doublelowquotemark]}; + key <AB07> { [ m, M, NoSymbol, NoSymbol ] }; + key <AB08> { [ comma, question, less, lessthanequal] }; + key <AB09> { [ period, colon, greater, greaterthanequal]}; + key <AB10> { [ minus, underscore, endash, emdash ] }; + + key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + partial alphanumeric_keys alternate_group xkb_symbols "ucw" { @@ -118,7 +186,7 @@ xkb_symbols "ucw" { name[Group1]= "Czech (UCW, only accented letters)"; key <AB01> { [zcaron, Zcaron ] }; - key <AB02> { [ssharp ] }; + key <AB02> { [ssharp, U1E9E ] }; key <AB03> { [ccaron, Ccaron ] }; key <AB04> { [ccedilla, Ccedilla ] }; key <AB05> { [ntilde, Ntilde ] }; @@ -253,3 +321,163 @@ partial alphanumeric_keys xkb_symbols "sun_type6" { include "sun_vndr/cz(sun_type6)" }; + +xkb_symbols "prog" { + // cz-prog 1.0 2019-05-15 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com> + // + // Programmer keyboard. Based on the US layout with accented Czech letters and dead keys. + // Using AltGr and a key from the 1st row generates original level 2 US key as level 3 except TLDE and AE12. + // Using AltGr+Shift on accented letters generates its uppercase variant. + // Using AltGr or AltGr+Shift on letters which have accent in Czech but are not on the 1st row directly accessible generate accented letters, + // i.e. [d, D], [t, T], [n, N], [o, O] generate with AltGr and AltGr+Shift: [dcaron, Dcaron], [tcaron, Tcaron], [ncaron, Ncaron], [oacute, Oacute]. + // Other Czech letters besides alphanumeric keys (like uacute, uring) are generated using AltGr. + + name[Group1]="Czech (programming)"; + + key <AB01> { [ z, Z ] }; + key <AB02> { [ x, X ] }; + key <AB03> { [ c, C ] }; + key <AB04> { [ v, V ] }; + key <AB05> { [ b, B ] }; + key <AB06> { [ n, N, ncaron, Ncaron ] }; + key <AB07> { [ m, M ] }; + key <AB08> { [ comma, less, multiply ] }; + key <AB09> { [ period, greater, division ] }; + key <AB10> { [ slash, question, dead_abovedot ] }; + key <AC01> { [ a, A ] }; + key <AC02> { [ s, S ] }; + key <AC03> { [ d, D, dcaron, Dcaron ] }; + key <AC04> { [ f, F ] }; + key <AC05> { [ g, G ] }; + key <AC06> { [ h, H ] }; + key <AC07> { [ j, J ] }; + key <AC08> { [ k, K ] }; + key <AC09> { [ l, L ] }; + key <AC10> { [ semicolon, colon, uring, Uring ] }; + key <AC11> { [ apostrophe, quotedbl, section ] }; + key <AD01> { [ q, Q ] }; + key <AD02> { [ w, W ] }; + key <AD03> { [ e, E ] }; + key <AD04> { [ r, R ] }; + key <AD05> { [ t, T, tcaron, Tcaron ] }; + key <AD06> { [ y, Y ] }; + key <AD07> { [ u, U ] }; + key <AD08> { [ i, I ] }; + key <AD09> { [ o, O, oacute, Oacute ] }; + key <AD10> { [ p, P ] }; + key <AD11> { [ bracketleft, braceleft, uacute, Uacute ] }; + key <AD12> { [ bracketright, braceright ] }; + key <AE01> { [ plus, 1, exclam, NoSymbol ] }; + key <AE02> { [ ecaron, 2, at, Ecaron ] }; + key <AE03> { [ scaron, 3, numbersign, Scaron ] }; + key <AE04> { [ ccaron, 4, dollar, Ccaron ] }; + key <AE05> { [ rcaron, 5, percent, Rcaron ] }; + key <AE06> { [ zcaron, 6, asciicircum, Zcaron ] }; + key <AE07> { [ yacute, 7, ampersand, Yacute ] }; + key <AE08> { [ aacute, 8, asterisk, Aacute ] }; + key <AE09> { [ iacute, 9, parenleft, Iacute ] }; + key <AE10> { [ eacute, 0, parenright, Eacute ] }; + key <AE11> { [ equal, minus, underscore, U2212 ] }; + key <AE12> { [ dead_acute, dead_caron, plusminus, notequal ] }; + key <BKSL> { [ backslash, bar, dead_diaeresis ] }; + key <BKSP> { [ BackSpace, BackSpace ] }; + key <CAPS> { [ Caps_Lock ] }; + key <COMP> { [ Menu, Multi_key ] }; + key <LALT> { [ Alt_L, Meta_L ] }; + key <LCTL> { [ Control_L ] }; + key <LFSH> { [ Shift_L ] }; + key <LWIN> { [ Super_L ] }; + key <RALT> { [ ISO_Level3_Shift ] }; + key <RCTL> { [ Control_R ] }; + key <RTRN> { [ Return ] }; + key <RTSH> { [ Shift_R ] }; + key <RWIN> { [ Super_R ] }; + key <SPCE> { [ space ] }; + key <TAB> { [ Tab, ISO_Left_Tab ] }; + key <TLDE> { [ grave, asciitilde ] }; + + include "level3(ralt_switch)" +}; + +xkb_symbols "typo" { + // cz-typo 1.0 2019-05-15 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com> + // + // Contains typographic symbols in third and fourth level. + // It is intended to be used in conjuction with other existing layout, e.g. setxkbmap -symbols "pc+cz(basic)+cz(typo)+inet(evdev)" + + name[Group1]="Czech (typographic)"; + + key <AB01> { [ NoSymbol, NoSymbol, degree, U2300 ] }; + key <AB02> { [ NoSymbol, NoSymbol, multiply, U22C5 ] }; + key <AB03> { [ NoSymbol, NoSymbol, ampersand, copyright ] }; + key <AB04> { [ NoSymbol, NoSymbol, at, ordfeminine ] }; + key <AB05> { [ NoSymbol, NoSymbol, enfilledcircbullet, enopencircbullet ] }; + key <AB07> { [ NoSymbol, NoSymbol, U203A, U2039 ] }; + key <AB08> { [ NoSymbol, NoSymbol, doublelowquotemark, leftdoublequotemark ] }; + key <AB09> { [ NoSymbol, NoSymbol, ellipsis, rightdoublequotemark ] }; + key <AB10> { [ NoSymbol, NoSymbol, endash, emdash ] }; + key <AC04> { [ NoSymbol, NoSymbol, UFB00, UFB05 ] }; + key <AC06> { [ NoSymbol, NoSymbol, U2010, U2011 ] }; + key <AC07> { [ NoSymbol, NoSymbol, guillemotright, guillemotleft ] }; + key <AC08> { [ NoSymbol, NoSymbol, dagger, doubledagger ] }; + key <AC09> { [ NoSymbol, NoSymbol, UFB02, UFB04 ] }; + key <AC11> { [ NoSymbol, NoSymbol, NoSymbol, UFB03 ] }; + key <AD04> { [ NoSymbol, NoSymbol, U2030, registered ] }; + key <AD06> { [ NoSymbol, NoSymbol, leftarrow ] }; + key <AD07> { [ NoSymbol, NoSymbol, downarrow, uparrow ] }; + key <AD08> { [ NoSymbol, NoSymbol, rightarrow, UFB01 ] }; + key <AD10> { [ NoSymbol, NoSymbol, minutes, seconds ] }; + key <AE01> { [ NoSymbol, NoSymbol, NoSymbol, rightsinglequotemark ] }; + key <AE11> { [ NoSymbol, NoSymbol, underscore, U2212 ] }; + key <SPCE> { [ space, space, space, nobreakspace ] }; + key <TLDE> { [ NoSymbol, NoSymbol, singlelowquotemark, leftsinglequotemark ] }; +}; + +xkb_symbols "coder" { + + // US layout with Czech chars under AltGr + // for touch-typing programmers who need to write Czech occasionally + // https://github.com/michalkahle/czech-coder-xkb + + include "us" + name[Group1]= "Czech (coder)"; + + key <TLDE>{[ grave, asciitilde, semicolon, dead_abovering ]}; + key <AE02>{[ 2, at, ecaron, Ecaron ]}; + key <AE03>{[ 3, numbersign, scaron, Scaron ]}; + key <AE04>{[ 4, dollar, ccaron, Ccaron ]}; + key <AE05>{[ 5, percent, rcaron, Rcaron ]}; + key <AE06>{[ 6, asciicircum, zcaron, Zcaron ]}; + key <AE07>{[ 7, ampersand, yacute, Yacute ]}; + key <AE08>{[ 8, asterisk, aacute, Aacute ]}; + key <AE09>{[ 9, parenleft, iacute, Iacute ]}; + key <AE10>{[ 0, parenright, eacute, Eacute ]}; + key <AE12>{[ equal, plus, dead_acute, dead_caron ]}; + + key <AD03>{[ e, E, e, EuroSign ]}; + key <AD11>{[ bracketleft, braceleft, uacute, Uacute ]}; + + key <AC10>{[ semicolon, colon, uring, Uring ]}; + key <AC11>{[ apostrophe, quotedbl, section, quotedbl ]}; + key <BKSL>{[ backslash, bar, dead_diaeresis, apostrophe ]}; + + include "level3(ralt_switch)" +}; + +xkb_symbols "prog_typo" { + // cz-prog-typo 1.0 2019-06-17 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com> + // + // Programmer + Typographic keyboard. Based on the US layout with accented Czech letters and dead keys. + // Using AltGr and a key from the 1st row generates original level 2 US key as level 3 except TLDE and AE12. + // Using AltGr+Shift on accented letters generates its uppercase variant. + // Using AltGr or AltGr+Shift on letters which have accent in Czech but are not on the 1st row directly accessible generate accented letters, + // i.e. [d, D], [t, T], [n, N], [o, O] generate with AltGr and AltGr+Shift: [dcaron, Dcaron], [tcaron, Tcaron], [ncaron, Ncaron], [oacute, Oacute]. + // Other Czech letters besides alphanumeric keys (like uacute, uring) are generated using AltGr. + // + // Contains typographic symbols in third and fourth level. + + name[Group1]="Czech (programming, typographic)"; + + include "cz(prog)" + include "cz(typo)" +}; diff --git a/test/data/symbols/de b/test/data/symbols/de index c025a1c..8c1083f 100644 --- a/test/data/symbols/de +++ b/test/data/symbols/de @@ -131,7 +131,7 @@ xkb_symbols "T3" { key <AD11> { [ udiaeresis, Udiaeresis, dead_horn, NoSymbol, U017F, dead_abovering, dead_grave, NoSymbol ] }; key.type[Group1] = "EIGHT_LEVEL"; key <AD12> { [ plus, asterisk, asciitilde, NoSymbol, dead_tilde, dead_macron, at, NoSymbol ] }; - + key.type[Group1] = "ONE_LEVEL"; key <CAPS> { [ Caps_Lock ] }; key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; @@ -157,7 +157,7 @@ xkb_symbols "T3" { key <AB04> { [ v, V, guillemotleft, NoSymbol, leftdoublequotemark, leftsinglequotemark, U2039, NoSymbol ] }; key <AB05> { [ b, B, U2039, NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A, NoSymbol ] }; key <AB06> { [ n, N, endash, NoSymbol, U019E, U0220, endash, NoSymbol ] }; - key <AB07> { [ m, M, Greek_mu, NoSymbol, mu, masculine, emdash, NoSymbol ] }; + key <AB07> { [ m, M, mu, NoSymbol, mu, masculine, emdash, NoSymbol ] }; key.type[Group1] = "EIGHT_LEVEL"; key <AB08> { [ comma, semicolon, U02BB, NoSymbol, ellipsis, multiply, dollar, NoSymbol ] }; key <AB09> { [ period, colon, U200C, NoSymbol, periodcentered, division, numbersign, NoSymbol ] }; @@ -284,7 +284,7 @@ xkb_symbols "sundeadkeys" { include "de(Sundeadkeys)" - name[Group1]="German (with Sun dead keys)"; + name[Group1]="German (Sun dead keys)"; }; @@ -764,51 +764,6 @@ xkb_symbols "pl" { }; partial alphanumeric_keys -xkb_symbols "htcdream" { - include "inet(htcdream)" - - name[Group1]= "German"; - - //second row - key <AD01> { [ q, Q, Tab, Tab ] }; - key <AD02> { [ w, W, grave, grave ] }; - key <AD03> { [ e, E, EuroSign, EuroSign ] }; - key <AD04> { [ r, R, underscore, underscore ] }; - key <AD05> { [ t, T, sterling, sterling] }; - key <AD06> { [ z, Z, division, division ] }; - key <AD07> { [ u, U, udiaeresis, udiaeresis ] }; - key <AD08> { [ i, I, minus, minus ] }; - key <AD09> { [ o, O, odiaeresis, odiaeresis ] }; - key <AD10> { [ p, P, equal, equal ] }; - - //third row - key <AC01> { [ a, A, adiaeresis, adiaeresis ] }; - key <AC02> { [ s, S, ssharp, ssharp] }; - key <AC03> { [ d ,D, backslash, backslash ] }; - key <AC04> { [ f, F, braceleft, braceleft ] }; - key <AC05> { [ g, G, braceright, braceright ] }; - key <AC06> { [ h, H, multiply, multiply ] }; - key <AC07> { [ j, J, colon, colon ] }; - key <AC08> { [ k, K, plus, plus ] }; - key <AC09> { [ l, L, apostrophe, apostrophe ] }; - - //forth row - key <AB01> { [ y, Y, bar, bar ] }; - key <AB02> { [ x, X, bracketleft, bracketleft ] }; - key <AB03> { [ c, C, bracketright, bracketright ] }; - key <AB04> { [ v, V, less, less ] }; - key <AB05> { [ b, B, greater, greater ] }; - key <AB06> { [ n, N, semicolon, semicolon ] }; - key <AB07> { [ m, M, quotedbl, quotedbl ] }; - key <AB08> { [ comma, comma, question, question ] }; - - //fifth row - key <FK15> { [ at, at, asciitilde, asciitilde ] }; - - include "level3(alt_switch)" -}; - -partial alphanumeric_keys xkb_symbols "tr" { // add turkish-specific letters to the basic German layout. @@ -832,10 +787,10 @@ partial alphanumeric_keys xkb_symbols "us" { include "us" - name[Group1]="German (US, with German letters)"; + name[Group1]="German (US)"; key <AC01> { [ a, A, adiaeresis, Adiaeresis ] }; - key <AC02> { [ s, S, ssharp, ssharp ] }; + key <AC02> { [ s, S, ssharp, U1E9E ] }; key <AC10> { [ semicolon, colon, odiaeresis, Odiaeresis ] }; key <AC11> { [ apostrophe, quotedbl, adiaeresis, Adiaeresis ] }; key <AD03> { [ e, E, EuroSign, EuroSign ] }; @@ -854,7 +809,7 @@ xkb_symbols "hu" { // modify the basic German layout to not have any dead keys and add Hungarian letters include "de(basic)" - name[Group1]="German (with Hungarian letters and no dead keys)"; + name[Group1]="German (with Hungarian letters, no dead keys)"; key <AB01> { [ y, Y, guillemotleft, less ] }; key <AC10> { [odiaeresis, Odiaeresis, eacute, Eacute ] }; @@ -1055,7 +1010,7 @@ xkb_symbols "bone_eszett_home" { include "de(bone_eszett_home_base)" - name[Group1]= "German (Bone, eszett home row)"; + name[Group1]= "German (Bone, eszett in the home row)"; include "shift(both_capslock)" include "level3(caps_switch)" @@ -1111,7 +1066,7 @@ xkb_symbols "neo_qwertz" { include "de(neo_qwertz_base)" - name[Group1]= "German (Neo qwertz)"; + name[Group1]= "German (Neo, QWERTZ)"; include "shift(both_capslock)" include "level3(caps_switch)" @@ -1134,7 +1089,7 @@ xkb_symbols "neo_qwerty" { include "de(neo_qwerty_base)" - name[Group1]= "German (Neo qwerty)"; + name[Group1]= "German (Neo, QWERTY)"; include "shift(both_capslock)" include "level3(caps_switch)" @@ -1146,7 +1101,7 @@ xkb_symbols "neo_qwerty" { partial alphanumeric_keys xkb_symbols "lld" { include "de(basic)" - name[Group1] = "German Ladin"; + name[Group1] = "German (Ladin)"; key <AD10> { [ p, P, ediaeresis, Ediaeresis ] }; diff --git a/test/data/symbols/empty b/test/data/symbols/empty index acdd677..cae3303 100644 --- a/test/data/symbols/empty +++ b/test/data/symbols/empty @@ -1,4 +1,4 @@ -default partial alphanumeric_keys modifier_keys +default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1]= "Empty"; }; diff --git a/test/data/symbols/il b/test/data/symbols/il index 67487c1..dcd640c 100644 --- a/test/data/symbols/il +++ b/test/data/symbols/il @@ -7,7 +7,7 @@ // This implementation extends the standard with Yiddish digraphs // (a common extension) and Nun Hafukha (a fun character). -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "basic" { // uses the kbd layout in use in Israel. diff --git a/test/data/symbols/in b/test/data/symbols/in index 79d5099..b3a5ca9 100644 --- a/test/data/symbols/in +++ b/test/data/symbols/in @@ -1,5 +1,7 @@ // This layout includes all Indian layouts, including: -// - Devanagari (Hindi, Marathi, Sanskrit) +// - Hindi +// - Marathi +// - Sanskrit // - Bangla // - Gujarati // - Kannada @@ -28,7 +30,7 @@ // based on a keyboard map from an 'xkb/symbols/dev' file // Devangari is the default. Kill me if I am wrong:) -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "deva" { // March 2004 -- David Holl <smyrph+dev_xkb@ece.wpi.edu> name[Group1]="Indian"; @@ -248,20 +250,22 @@ xkb_symbols "ben" { xkb_symbols "ben_probhat" { name[Group1]= "Bangla (India, Probhat)"; + key.type="FOUR_LEVEL"; + key <ESC> { [ Escape ] }; // numbers key <TLDE> { [ U200D, asciitilde ] }; - key <AE01> { [ U09E7, exclam ] }; - key <AE02> { [ U09E8, at ] }; - key <AE03> { [ U09E9, numbersign ] }; - key <AE04> { [ U09EA, U09F3 ] }; + key <AE01> { [ U09E7, exclam, U09F4 ] }; + key <AE02> { [ U09E8, at, U09F5 ] }; + key <AE03> { [ U09E9, numbersign, U09F6 ] }; + key <AE04> { [ U09EA, U09F3, U09F7, U09F2 ] }; key <AE05> { [ U09EB, percent ] }; key <AE06> { [ U09EC, asciicircum ] }; - key <AE07> { [ U09ED, U099E ] }; + key <AE07> { [ U09ED, U099E, U09FA ] }; key <AE08> { [ U09EE, U09CE ] }; key <AE09> { [ U09EF, parenleft ] }; - key <AE10> { [ U09E6, parenright ] }; + key <AE10> { [ U09E6, parenright, U09F8, U09F9 ] }; key <AE11> { [ minus, underscore ] }; key <AE12> { [ equal, plus ] }; key <BKSP> { [ BackSpace ] }; @@ -279,17 +283,17 @@ xkb_symbols "ben_probhat" { key <AD09> { [ U0993, U0994 ] }; key <AD10> { [ U09AA, U09AB ] }; key <AD11> { [ U09C7, U09C8 ] }; - key <AD12> { [ U09CB, U09CC ] }; + key <AD12> { [ U09CB, U09CC, U09D7 ] }; key <RTRN> { [ Return ] }; // caps, a to ' // key <CAPS> { [ Caps_Lock ] }; - key <AC01> { [ U09BE, U0985 ] }; - key <AC02> { [ U09B8, U09B7 ] }; - key <AC03> { [ U09A1, U09A2 ] }; + key <AC01> { [ U09BE, U0985, U098C, U09E0 ] }; + key <AC02> { [ U09B8, U09B7, U09E1, U09E3 ] }; + key <AC03> { [ U09A1, U09A2, U09C4, U09E2 ] }; key <AC04> { [ U09A4, U09A5 ] }; key <AC05> { [ U0997, U0998 ] }; - key <AC06> { [ U09B9, U0983 ] }; + key <AC06> { [ U09B9, U0983, U09BD ] }; key <AC07> { [ U099C, U099D ] }; key <AC08> { [ U0995, U0996 ] }; key <AC09> { [ U09B2, U0982 ] }; @@ -306,7 +310,7 @@ xkb_symbols "ben_probhat" { key <AB06> { [ U09A8, U09A3 ] }; key <AB07> { [ U09AE, U0999 ] }; key <AB08> { [ comma, U09C3 ] }; - key <AB09> { [ U0964, U0981 ] }; + key <AB09> { [ U0964, U0981, U09BC ] }; key <AB10> { [ U09CD, question ] }; key <BKSL> { [ U200C, U0965 ] }; @@ -465,7 +469,7 @@ xkb_symbols "ben_inscript" { }; xkb_symbols "ben_gitanjali" { - name[Group1]= "Bangla (India, Uni Gitanjali)"; + name[Group1]= "Bangla (India, Gitanjali)"; key <ESC> { [ Escape ] }; // numbers @@ -1053,7 +1057,7 @@ xkb_symbols "ori" { // INSCRIPT partial alphanumeric_keys xkb_symbols "tam" { - name[Group1]= "Tamil"; + name[Group1]= "Tamil (Inscript)"; key <TLDE> { [ U0BCA, U0B92 ] }; @@ -1118,7 +1122,7 @@ xkb_symbols "tam" { }; partial alphanumeric_keys -xkb_symbols "tam_unicode" { +xkb_symbols "tam_tamilnet" { // Description: A keymap based on the TamilNet'99 typewriter keyboard // Encoding: Unicode (http://www.unicode.org) @@ -1128,7 +1132,7 @@ xkb_symbols "tam_unicode" { // Date : Fri Sep 4 11:32:00 CST 2009 // Mapping: - name[Group1]= "Tamil (Unicode)"; + name[Group1]= "Tamil (TamilNet '99)"; // granthas key <TLDE> { [ apostrophe, asciitilde ] }; @@ -1184,7 +1188,7 @@ xkb_symbols "tam_unicode" { }; partial alphanumeric_keys -xkb_symbols "tam_keyboard_with_numerals" { +xkb_symbols "tam_tamilnet_with_tam_nums" { // Description: A keymap based on the TamilNet'99 typewriter keyboard // Encoding: Unicode (http://www.unicode.org) @@ -1193,7 +1197,7 @@ xkb_symbols "tam_keyboard_with_numerals" { // Date : Fri Sep 4 11:33:00 CST 2009 // Mapping: - name[Group1]= "Tamil (keyboard with numerals)"; + name[Group1]= "Tamil (TamilNet '99 with Tamil numerals)"; // Mainly numbers. key <TLDE> { [ apostrophe, asciitilde ] }; @@ -1249,7 +1253,7 @@ xkb_symbols "tam_keyboard_with_numerals" { }; partial alphanumeric_keys -xkb_symbols "tam_TSCII" { +xkb_symbols "tam_tamilnet_TSCII" { // Description : A Tamil typewrite-style keymap // loosely based on TamilNet'99 reommendations @@ -1257,7 +1261,7 @@ xkb_symbols "tam_TSCII" { // Author : Thuraiappah Vaseeharan <vasee@ieee.org> // Last Modified: Sat Jan 5 17:11:26 CST 2002 - name[Group1]= "Tamil (TSCII typewriter)"; + name[Group1]= "Tamil (TamilNet '99, TSCII encoding)"; key <AE01> { [ 0x10000b7, 0x10000a4 ] }; // aytham key <AE02> { [ 0x1000082, 0x10000a5 ] }; // shri @@ -1305,14 +1309,14 @@ xkb_symbols "tam_TSCII" { }; partial alphanumeric_keys -xkb_symbols "tam_TAB" { +xkb_symbols "tam_tamilnet_TAB" { // Description: A keymap based on the TamilNet'99 typewriter keyboard // Encoding: TAB (http://www.tamilnet99.org) // Author: Thuraiappah Vaseeharan <t_vasee@yahoo.com> // Date : Sun Aug 12 02:23:00 CDT 2001 - name[Group1]= "Tamil (TAB typewriter)"; + name[Group1]= "Tamil (TamilNet '99, TAB encoding)"; // numeral row key <AE01> { [ 0x10000e7, 0x10000a7 ] } ; @@ -1517,7 +1521,7 @@ xkb_symbols "urd-phonetic3" { partial alphanumeric_keys xkb_symbols "urd-winkeys" { include "pk(urd-nla)" - name[Group1]= "Urdu (Win keys)"; + name[Group1]= "Urdu (Windows)"; }; // based on a keyboard map from an 'xkb/symbols/gur' file @@ -1910,7 +1914,7 @@ xkb_symbols "mal_enhanced" { // partial alphanumeric_keys xkb_symbols "hin-kagapa" { - name[Group1] = "Hindi (KaGaPa phonetic)"; + name[Group1] = "Hindi (KaGaPa, phonetic)"; key.type="FOUR_LEVEL"; // Roman digits @@ -1976,14 +1980,14 @@ xkb_symbols "hin-kagapa" { partial alphanumeric_keys xkb_symbols "san-kagapa" { include "in(hin-kagapa)" - name[Group1] = "Sanskrit (KaGaPa phonetic)"; + name[Group1] = "Sanskrit (KaGaPa, phonetic)"; }; // Marathi uses Devanagari layout of Hindi partial alphanumeric_keys xkb_symbols "mar-kagapa" { include "in(hin-kagapa)" - name[Group1] = "Marathi (KaGaPa phonetic)"; + name[Group1] = "Marathi (KaGaPa, phonetic)"; }; @@ -2001,7 +2005,7 @@ xkb_symbols "mar-kagapa" { // partial alphanumeric_keys xkb_symbols "kan-kagapa" { - name[Group1] = "Kannada (KaGaPa phonetic)"; + name[Group1] = "Kannada (KaGaPa, phonetic)"; key.type="FOUR_LEVEL"; // Roman digits @@ -2078,7 +2082,7 @@ xkb_symbols "kan-kagapa" { // partial alphanumeric_keys xkb_symbols "tel-kagapa" { - name[Group1] = "Telugu (KaGaPa phonetic)"; + name[Group1] = "Telugu (KaGaPa, phonetic)"; key.type="FOUR_LEVEL"; // Roman digits @@ -2205,3 +2209,191 @@ xkb_symbols "eeyek" { include "level3(ralt_switch)" }; + +// This layout is developed by Niranjan Tambe in July 2019 +// for typing Indic languages in International Phonetic Alphabet (IPA). + +partial alphanumeric_keys modifier_keys +xkb_symbols "iipa" { + + name[Group1]= "Indic IPA (IIPA)"; + key <AE01> { [ 1, exclam] }; + key <AE02> { [ 2, at] }; + key <AE03> { [ 3, numbersign] }; + key <AE04> { [ 4, U20B9] }; + key <AE05> { [ 5, percent] }; + key <AE06> { [ 6, asciicircum] }; + key <AE07> { [ 7, ampersand] }; + key <AE08> { [ 8, asterisk] }; + key <AE09> { [ 9, parenleft] }; + key <AE10> { [ 0, parenright] }; + key <AE11> { [ minus, underscore] }; + key <AE12> { [ equal, plus] }; + + key <AD01> { [ U02B0, U02B1] }; // [ʰ], [ʱ] + key <AD02> { [ U00E6, q] }; // [æ], [q] found in Urdu + key <AD03> { [ a, U028B] }; // [a], [ʋ] + key <AD04> { [ i, U026A] }; // [i] [ɪ] + key <AD05> { [ u, U026F] }; // [u] [ɯ] found in Tamil + key <AD06> { [ b, Y] }; // [b] + key <AD07> { [ h, U014B] }; // [h], [ŋ] + key <AD08> { [ g, U0263] }; // [g], [ɣ] found in Urdu + key <AD09> { [ d, U00F0] }; // [d], [ð] found in Malayalam + key <AD10> { [ U02A4, U02A3] }; // [ʤ], [ʣ] found in Marathi + key <AD11> { [ U0256, U027D] }; // [ɖ], [ɽ] + key <AD12> { [ bracketleft, bracketright] }; // "[", "]" needed for denoting phonetic symbols + + key <AC01> { [ o, U0254] }; // [o], [ɔ] found in Bangla + key <AC02> { [ e, U025B] }; // [e], [ɛ] + key <AC03> { [ U0259, U0361] }; // [ə], [ ͡ ] + key <AC04> { [ i, U026A] }; // [i], [ɪ] + key <AC05> { [ u, U026F] }; // [u], [ɯ] + key <AC06> { [ p, f] }; // [p], [f] + key <AC07> { [ U027E, r] }; // [ɾ], [r] + key <AC08> { [ k, x] }; // [k], [x] found in Urdu + key <AC09> { [ t, U03B8] }; // [t], [θ] + key <AC10> { [ U02A7, U02A6] }; // [ʧ], [ʦ] found in Marathi + key <AC11> { [ U0288, quotedbl] }; // [ʈ] + key <TLDE> { [ grave, asciitilde] }; + + key <BKSL> { [ backslash, bar] }; + key <AB01> { [ U032A, U0303] }; // [ ̪], [ ̃] Dental mark, nasalisation mark + key <AB02> { [ U0306, X] }; // [ ̆] Short sound + key <AB03> { [ m, U0273] }; // [m], [ɳ] + key <AB04> { [ n, v] }; // [n], [v] + key <AB05> { [ w, z] }; // [w], [z] + key <AB06> { [ l, U026D] }; // [l], [ɭ] + key <AB07> { [ s, U0283] }; // [s], [ʃ] + key <AB08> { [ comma, U0282] }; // [ʂ] + key <AB09> { [ period, U02D0] }; // [ː] Long sound + key <AB10> { [ j, slash] }; // [j] + +}; + +// This layout is developed by Niranjan Tambe in July 2019 +// for typing Marathi language with some necessary symbols. + +xkb_symbols "marathi" { + name[Group1]="मराठी इन्स्क्रिप्ट"; + key <TLDE> { [ U0962, U090C, grave, asciitilde ] }; // Added ॢ & ऌ + key <AE01> { [ U0967, exclam, 1, exclam ] }; // Added exclamation mark + key <AE02> { [ U0968, U0945, 2, at ] }; // Added ॅ + key <AE03> { [ U0969, U093D, 3, numbersign ] }; // Added ऽ + key <AE04> { [ U096a, U20B9, 4 ] }; // Added ₹ + key <AE05> { [ U096b, percent, 5, percent ] }; + key <AE06> { [ U096c, asciicircum, 6, asciicircum ] }; + key <AE07> { [ U096d, U0970, 7, ampersand ] }; // Added ॰ + key <AE08> { [ U096e, U0950, 8, asterisk ] }; + key <AE09> { [ U096f, parenleft, 9, parenleft ] }; + key <AE10> { [ U0966, parenright, 0, parenright ] }; + key <AE11> { [ minus, U0903, minus, underscore ] }; + key <AE12> { [ U0943, U090b, U0944, U0960 ] }; + + key <AD01> { [ U094c, U0914 ] }; + key <AD02> { [ U0948, U0910 ] }; + key <AD03> { [ U093e, U0906 ] }; + key <AD04> { [ U0940, U0908, U0963, U0961 ] }; + key <AD05> { [ U0942, U090a ] }; + key <AD06> { [ U092c, U092d ] }; + key <AD07> { [ U0939, U0919 ] }; + key <AD08> { [ U0917, U0918, U095a ] }; + key <AD09> { [ U0926, U0927 ] }; + key <AD10> { [ U091c, U091d, U095b ] }; + key <AD11> { [ U0921, U0922, U095c, U095d ] }; + key <AD12> { [ U093c, U091e ] }; + key <BKSL> { [ U0949, U0911, U005C, U007C ] }; + + key <AC01> { [ U094b, U0913 ] }; + key <AC02> { [ U0947, U090f ] }; + key <AC03> { [ U094d, U0905 ] }; + key <AC04> { [ U093f, U0907, U0962, U090c ] }; + key <AC05> { [ U0941, U0909 ] }; + key <AC06> { [ U092a, U092b, NoSymbol, U095e ] }; + key <AC07> { [ U0930, U0931 ] }; + key <AC08> { [ U0915, U0916, U0958, U0959 ] }; + key <AC09> { [ U0924, U0925 ] }; + key <AC10> { [ U091a, U091b, U0952 ] }; + key <AC11> { [ U091f, U0920, NoSymbol, U0951 ] }; + + key <AB01> { [ apostrophe, U0972, U0953 ] }; // Added apostrophe & ॲ + key <AB02> { [ U0902, U0901, NoSymbol, U0950 ] }; + key <AB03> { [ U092e, U0923, U0954 ] }; + key <AB04> { [ U0928, quotedbl ] }; // Added " + key <AB05> { [ U0935, UA8FB ] }; // Added headstroke + key <AB06> { [ U0932, U0933 ] }; + key <AB07> { [ U0938, U0936 ] }; + key <AB08> { [ comma, U0937, U0970 ] }; + key <AB09> { [ period, U0964, U0965, U093d ] }; + key <AB10> { [ U092f, question, slash, question ] }; +}; + +// EXTRAS: + +// Modi is an ancient Indian script that is used to write texts in Marathi, Hindi and Sanskrit. +// This keyboard layout is Based on Marathi KaGaPa phonetic layout. Just the characters which are not applicable in modi, are ommited. +// +// Author : D.Abhi <abhishekdeshpande128@gmail.com> +// +// +partial alphanumeric_keys +xkb_symbols "modi-kagapa" { + name[Group1] = "Modi (KaGaPa phonetic)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key <TLDE> { [ apostrophe, asciitilde, U201C ] }; // U201C: left double quotation mark + key <AE01> { [ 1, exclam, U11651 ] }; + key <AE02> { [ 2, at, U11652, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key <AE03> { [ 3, numbersign, U11653 ] }; + key <AE04> { [ 4, dollar, U11654, U20B9 ] }; // U20B9: new Indian rupee sign + key <AE05> { [ 5, percent, U11655 ] }; + key <AE06> { [ 6, asciicircum, U11656, U200C ] }; // ZWNJ + key <AE07> { [ 7, ampersand, U11657, U200D ] }; // ZWJ + key <AE08> { [ 8, asterisk, U11658 ] }; + key <AE09> { [ 9, parenleft, U11659 ] }; + key <AE10> { [ 0, parenright, U11650, U11643 ] }; // U11643: Modi abbreviation sign + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + key <BKSL> { [ U005C, U007C, U11641, U11642 ] }; // backslash, pipe, Modi danda, Modi double danda + + //Q Row + key <AD01> { [ U11618, U11619 ] }; // Q: retroflex Modi letter Ta, Tha + key <AD02> { [ U1161A, U1161B ] }; // W: retroflex Modi letter Da, Dha + key <AD03> { [ U11639, U1160A, U1160B ] }; // E: Modi vovel sign E, Modi letter E, letter ai + key <AD04> { [ U11628, U11635, U11606 ] }; // R: Modi ra, Modi vowel sign vocalic R, vocalic letter R + key <AD05> { [ U1161D, U1161E ] }; // T: dental Modi letter ta, tha + key <AD06> { [ U11627, U1163A ] }; // Y: Modi letter ya, Modi vowel sign ai + key <AD07> { [ U11633, U11634, U11604, U11605 ] }; // U: Modi vowel sign u, uu, Modi letter u, uu + key <AD08> { [ U11631, U11632, U11602, U11603 ] }; // I: Modi vowel sign i, ii, Modi letter i, ii + key <AD09> { [ U1163B, U1160C ] }; // O: Modi vowel sign o, Modi letter o + key <AD10> { [ U11622, U11623 ] }; // P: Modi letter pa, pha + key <AD11> { [ bracketleft, braceleft ] }; + key <AD12> { [ bracketright, braceright ] }; + + //A Row + key <AC01> { [ U11630, U11601, U11600 ] }; // A: Modi vowel sign aa, Modi letter aa, Modi letter a + key <AC02> { [ U1162D, U1162B ] }; // S: Modi letter sa, sha + key <AC03> { [ U1161F, U11620 ] }; // D: dental Modi letter da, dha + key <AC04> { [ U1163F, U11636, U11607 ] }; // F: Modi sign virama, Modi vowel sign vocalic RR, letter vocalic RR + key <AC05> { [ U11610, U11611 ] }; // G: Modi letter ga, gha + key <AC06> { [ U1162E, U1163E ] }; // H: Modi letter ha, Modi visarga + key <AC07> { [ U11615, U11616 ] }; // J: Modi letter ja, jha + key <AC08> { [ U1160E, U1160F ] }; // K: Modi letter ka, kha + key <AC09> { [ U11629, U1162F, U11637, U11608 ] }; // L: Modi letter la, lla, Modi vowel sign vocalic L, letter vocalic L + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [ apostrophe, quotedbl ] }; + + //Z Row + key <AB01> { [ U11617, U11612 ] }; // Z: Modi letter nya, nga + key <AB02> { [ U1162C, U11609, U11638 ] }; // X: Modi letter ssa, Modi letter vocalic ll, Modi vowel sign vocalic ll + key <AB03> { [ U11613, U11614 ] }; // C: Modi letter ca, cha + key <AB04> { [ U1162A, U1163C, U1160D ] }; // V: Modi letter va, Modi vowel sign au, Modi letter au + key <AB05> { [ U11624, U11625 ] }; // B: Modi letter ba, bha + key <AB06> { [ U11621, U1161C ] }; // N: Modi letter na, nna + key <AB07> { [ U11626, U1163D, U093D, U0950 ] }; // M: Modi ma, Modi anusvara, avagraha, Devanagari OM + key <AB08> { [ comma, U003C, U11640, U11644 ] }; // comma: comma, less than, Modi chandrabindu, Modi sign huva + key <AB09> { [ period, U003E ] }; // period: period, greater than, matra, candra o + key <AB10> { [ slash, question ] }; + + include "level3(ralt_switch)" +}; diff --git a/test/data/symbols/inet b/test/data/symbols/inet index 5403e77..049ac18 100644 --- a/test/data/symbols/inet +++ b/test/data/symbols/inet @@ -184,7 +184,7 @@ xkb_symbols "evdev" { key <I218> { [ Print ] }; // key <I219> { [ ] }; // KEY_HP key <I220> { [ XF86WebCam ] }; -// key <I221> { [ ] }; // KEY_SOUND + key <I221> { [ XF86AudioPreset ] }; // key <I222> { [ ] }; // KEY_QUESTION key <I223> { [ XF86Mail ] }; key <I224> { [ XF86Messenger ] }; // KEY_CHAT @@ -212,11 +212,16 @@ xkb_symbols "evdev" { key <I246> { [ XF86WLAN ] }; // key <I249> { [ ] }; // KEY_VIDEO_NEXT -- drive next video source // key <I250> { [ ] }; // KEY_VIDEO_PREV -- drive previous video source -// key <I251> { [ ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min + key <I251> { [ XF86MonBrightnessCycle ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min // key <I252> { [ ] }; // KEY_BRIGHTNESS_ZERO -- brightness off // key <I253> { [ ] }; // KEY_DISPLAY_OFF -- turn off display -// key <I254> { [ ] }; // KEY_WIMAX - key <I255> { [ XF86Hibernate ] }; // KEY_HIBERNATE + key <I254> { [ XF86WWAN ] }; // KEY_WWAN + key <I255> { [ XF86RFKill ] }; // KEY_RFKILL + + key <I372> { [ XF86Favorites ] }; + key <I382> { [ XF86Keyboard ] }; + key <I569> { [ XF86RotationLockToggle ] }; + key <I380> { [ XF86FullScreen ] }; key <FK13> { [ XF86Tools ] }; key <FK14> { [ XF86Launch5 ] }; @@ -1422,6 +1427,16 @@ xkb_symbols "microsoftmult" { key <I80> { [ XF86Documents ] }; }; +// Microsoft Surface +partial alphanumeric_keys +xkb_symbols "microsoftsurface" { + include "inet(evdev)" + key <I88> { [ XF86Search ] }; + key <I163> { [ XF86AudioPrev ] }; + key <I164> { [ XF86AudioPlay, XF86AudioPause ] }; + key <I165> { [ XF86AudioNext ] }; +}; + // Oretec @@ -1850,32 +1865,6 @@ xkb_symbols "pc105" { include "inet(media_nav_acpi_common)" }; - -// HTC Dream -partial alphanumeric_keys -xkb_symbols "htcdream" { - key <BKSP> { [ BackSpace ] }; - key <RTRN> { [ Return ] }; - - key <AE01> { [ 1, 1, exclam, exclam ] }; - key <AE02> { [ 2, 2, at, at ] }; - key <AE03> { [ 3, 3, numbersign, numbersign ] }; - key <AE04> { [ 4, 4, dollar, dollar ] }; - key <AE05> { [ 5, 5, percent, percent ] }; - key <AE06> { [ 6, 6, dead_circumflex, dead_circumflex ] }; - key <AE07> { [ 7, 7, ampersand, ampersand ] }; - key <AE08> { [ 8, 8, asterisk, asterisk ] }; - key <AE09> { [ 9, 9, parenleft, parenleft ] }; - key <AE10> { [ 0, 0, parenright, parenright ] }; - - key <LFSH> { [ Shift_L ] }; - key <SPCE> { [ space ] }; - key <AB09> { [ period, period, slash, slash ] }; - key <RTSH> { [ Shift_R ] }; - - modifier_map Shift { <LFSH>, <RTSH> }; -}; - partial alphanumeric_keys xkb_symbols "chromebook" { include "level3(ralt_switch)" @@ -1907,3 +1896,4 @@ partial alphanumeric_keys xkb_symbols "teck229" { include "inet(teck227)" }; + diff --git a/test/data/symbols/latin b/test/data/symbols/latin index d88e3c4..50ded1f 100644 --- a/test/data/symbols/latin +++ b/test/data/symbols/latin @@ -1,6 +1,6 @@ // Common Latin alphabet layout -default partial +default partial xkb_symbols "basic" { key <AE01> { [ 1, exclam, onesuperior, exclamdown ] }; diff --git a/test/data/symbols/level3 b/test/data/symbols/level3 index 1aef970..0042743 100644 --- a/test/data/symbols/level3 +++ b/test/data/symbols/level3 @@ -3,7 +3,7 @@ // The default behaviour: // the right Alt key (AltGr) chooses the third symbol engraved on a key. -default partial modifier_keys +default partial modifier_keys xkb_symbols "ralt_switch" { key <RALT> { type[Group1]="ONE_LEVEL", @@ -209,3 +209,21 @@ xkb_symbols "lsgt_switch_latch" { }; include "level3(modifier_mapping)" }; + +// Number key 4 chooses third shift level when pressed in isolation. +partial modifier_keys +xkb_symbols "4_switch_isolated" { + override key <AE04> { + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// Number key 9 chooses third shift level when pressed in isolation. +partial modifier_keys +xkb_symbols "9_switch_isolated" { + override key <AE09> { + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; diff --git a/test/data/symbols/macintosh_vndr/apple b/test/data/symbols/macintosh_vndr/apple index 53d260c..342eb7d 100644 --- a/test/data/symbols/macintosh_vndr/apple +++ b/test/data/symbols/macintosh_vndr/apple @@ -2,7 +2,7 @@ // Keyboard modification for Apple keyboards // -partial default modifier_keys +default partial modifier_keys xkb_symbols "extended" { key <KPEQ> { [ KP_Equal ] }; diff --git a/test/data/symbols/pc b/test/data/symbols/pc index 0199713..dbe08bb 100644 --- a/test/data/symbols/pc +++ b/test/data/symbols/pc @@ -1,4 +1,4 @@ -default partial alphanumeric_keys modifier_keys +default partial alphanumeric_keys modifier_keys xkb_symbols "pc105" { key <ESC> { [ Escape ] }; diff --git a/test/data/symbols/ru b/test/data/symbols/ru index 964705c..7fd8f45 100644 --- a/test/data/symbols/ru +++ b/test/data/symbols/ru @@ -2,9 +2,10 @@ // AEN <aen@logic.ru> // 2001/12/23 by Leon Kanter <leon@blackcatlinux.com> // 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru> +// 2018/07/15 @a13 (a.k.a. @dbvvmpg) and Stepanenko Andrey <ftvkyo2011@yandex.ru> // Windows layout -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "winkeys" { include "ru(common)" @@ -215,7 +216,7 @@ partial alphanumeric_keys xkb_symbols "phonetic_winkeys" { include "ru(phonetic)" - name[Group1]= "Russian (phonetic, with Win keys)"; + name[Group1]= "Russian (phonetic, Windows)"; key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] }; @@ -223,6 +224,15 @@ xkb_symbols "phonetic_winkeys" { }; partial alphanumeric_keys +xkb_symbols "phonetic_YAZHERTY" { + include "ru(phonetic_winkeys)" + name[Group1]= "Russian (phonetic, YAZHERTY)"; + key <LatW> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] }; +}; + + +partial alphanumeric_keys xkb_symbols "tt" { include "ru(winkeys)" @@ -230,12 +240,12 @@ xkb_symbols "tt" { key.type[group1]="FOUR_LEVEL"; - key <TLDE> { [ 0x010004bb, 0x010004ba, Cyrillic_io, Cyrillic_IO ] }; - key <AD02> { [ 0x010004e9, 0x010004e8, Cyrillic_tse, Cyrillic_TSE ] }; - key <AD09> { [ 0x010004d9, 0x010004d8, Cyrillic_shcha, Cyrillic_SHCHA ] }; - key <AD12> { [ 0x010004af, 0x010004ae, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; - key <AC10> { [ 0x010004a3, 0x010004a2, Cyrillic_zhe, Cyrillic_ZHE ] }; - key <AB07> { [ 0x01000497, 0x01000496, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key <TLDE> { [ Cyrillic_shha, Cyrillic_SHHA, Cyrillic_io, Cyrillic_IO ] }; + key <AD02> { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_tse, Cyrillic_TSE ] }; + key <AD09> { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <AD12> { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key <AC10> { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_zhe, Cyrillic_ZHE ] }; + key <AB07> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; include "level3(ralt_switch)" }; @@ -255,7 +265,7 @@ partial alphanumeric_keys xkb_symbols "os_winkeys" { include "ru(winkeys)" - name[Group1]= "Ossetian (Win keys)"; + name[Group1]= "Ossetian (Windows)"; key <TLDE> { [ Cyrillic_e, Cyrillic_E ] }; key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; @@ -434,20 +444,20 @@ xkb_symbols "bak" { key.type[group1]="FOUR_LEVEL"; - key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] }; - key <AE01> { [ exclam, quotedbl, 1, 1 ] }; - key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] }; - key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] }; - key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] }; - key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] }; - key <AE06> { [ colon, semicolon, 6, 6 ] }; - key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] }; - key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] }; - key <AE09> { [ question, parenleft, 9, 9 ] }; - key <AE10> { [ numerosign, parenright, 0, 0 ] }; - key <AE11> { [ minus, percent, minus, underscore ] }; - key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ] }; - key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ] }; + key <TLDE> { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_io, Cyrillic_IO ] }; + key <AE01> { [ exclam, quotedbl, 1, 1 ] }; + key <AE02> { [ Cyrillic_o_bar, Cyrillic_O_bar, 2, 2 ] }; + key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] }; + key <AE04> { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, 4, 4 ] }; + key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] }; + key <AE06> { [ colon, semicolon, 6, 6 ] }; + key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] }; + key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8, 8 ] }; + key <AE09> { [ question, parenleft, 9, 9 ] }; + key <AE10> { [ numerosign, parenright, 0, 0 ] }; + key <AE11> { [ minus, percent, minus, underscore ] }; + key <AE12> { [ Cyrillic_u_straight, Cyrillic_U_straight, equal, plus ] }; + key <BKSL> { [ Cyrillic_en_descender, Cyrillic_EN_descender, backslash, slash ] }; include "level3(ralt_switch)" }; @@ -517,7 +527,7 @@ xkb_symbols "phonetic_azerty" { key <AE11> { [parenright, degree, bracketright, questiondown ] }; key <AE12> { [ equal, plus, braceright, dead_ogonek ] }; - key <AB07> { [ comma, question, acute, doubleacute ] }; + key <AB07> { [ comma, question, acute, doubleacute ] }; key <AB08> { [ semicolon, period, horizconnector, multiply ] }; key <AB09> { [ colon, slash, periodcentered, division ] }; key <AB10> { [ exclam, section, dead_belowdot, dead_abovedot ] }; @@ -629,77 +639,92 @@ xkb_symbols "phonetic_fr" { name[Group1]= "Russian (phonetic, French)"; }; +// EXTRAS: + // Rulemak, Colemak based Russian phonetic layout // contact: Geert Hendrickx <geert@hendrickx.be> // http://forum.colemak.com/viewtopic.php?id=519 +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ Ё ``│ ! ˝ │ @ │ № │ $ │ % │ ^ ¯ │ & │ * ₴ │ ( │ ) │ _ — │ Ъ + ┃ ⌫ ┃ +// │ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 ¢ │ 5 € │ 6 ˘ │ 7 │ 8 ₽ │ 9 [ │ 0 ] │ - – │ ъ = ┃Backspace┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Я Ѣ │ Ж Ѵ │ Ф Ѳ │ П │ Г Ґ │ й Ј │ Л Љ │ У Ў │ Ы Ї │ Ю : │ Ш { │ Щ } ┃ Enter ┃ +// ┃ Tab ↹ ┃ я ѣ │ ж ѵ │ ф ѳ │ п │ г ґ │ й ј │ л љ │ у ў │ ы ї │ ю ; │ ш « │ щ » ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ⌫ Back ┃ А │ Р │ С │ Т Ћ │ Д Ђ │ Ч Џ │ Н Њ │ Е Є │ И І │ О │ Ь " │ Э | ┃ ┃ +// ┃ space ┃ а │ р │ с │ т ћ │ д ђ │ ч џ │ н њ │ е є │ и і │ о │ ь ' │ э \ ┃ ┃ +// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ З Ѕ │ Х │ Ц │ В │ Б Ѓ │ К Ќ │ М │ ; │ : │ ? Ӏ ┃ ┃ +// ┃ Shift ⇧ ┃ з ѕ │ х │ ц │ в │ б ѓ │ к ќ │ м │ , < │ . > │ / ӏ ┃ Shift ⇧ ┃ +// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "rulemak" { - include "us(basic)" name[Group1]= "Russian (Rulemak, phonetic Colemak)"; - key <TLDE> { [ Cyrillic_io, Cyrillic_IO, U0300, asciitilde ] }; - key <AE01> { [ 1, exclam, U0301 ] }; - key <AE02> { [ 2, at, U030B ] }; + key <TLDE> { [ Cyrillic_io, Cyrillic_IO, U0300, U030F ] }; // Combining grave, double grave + key <AE01> { [ 1, exclam, U0301, U030B ] }; // Combining acute, double acute + key <AE02> { [ 2, at, U0308 ] }; // Combining diaeresis key <AE03> { [ 3, numerosign, numbersign ] }; key <AE04> { [ 4, dollar, cent ] }; key <AE05> { [ 5, percent, EuroSign ] }; - key <AE06> { [ 6, asciicircum, U0306 ] }; - key <AE07> { [ 7, ampersand, U0307 ] }; - key <AE08> { [ 8, asterisk, U20BD ] }; + key <AE06> { [ 6, asciicircum, U0306, U0304 ] }; // Combining breve, macron + key <AE07> { [ 7, ampersand ] }; + key <AE08> { [ 8, asterisk, U20BD, U20B4 ] }; // ruble, hryvnia key <AE09> { [ 9, parenleft, bracketleft ] }; key <AE10> { [ 0, parenright, bracketright ] }; key <AE11> { [ minus, underscore, endash, emdash ] }; key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] }; - key <AD01> { [ Cyrillic_ya, Cyrillic_YA, q, Q ] }; - key <AD02> { [ Cyrillic_zhe, Cyrillic_ZHE, w, W ] }; - key <AD03> { [ Cyrillic_ef, Cyrillic_EF, f, F ] }; - key <AD04> { [ Cyrillic_pe, Cyrillic_PE, p, P ] }; - key <AD05> { [ Cyrillic_ghe, Cyrillic_GHE, g, G ] }; - key <AD06> { [ Cyrillic_shorti, Cyrillic_SHORTI, j, J ] }; - key <AD07> { [ Cyrillic_el, Cyrillic_EL, l, L ] }; - key <AD08> { [ Cyrillic_u, Cyrillic_U, u, U ] }; - key <AD09> { [ Cyrillic_yeru, Cyrillic_YERU, y, Y ] }; + key <AD01> { [ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ] }; // yat + key <AD02> { [ Cyrillic_zhe, Cyrillic_ZHE, U0475, U0474 ] }; // izhitsa + key <AD03> { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472 ] }; // fita + key <AD04> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <AD05> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <AD06> { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE ] }; + key <AD07> { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE ] }; + key <AD08> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key <AD09> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_yi, Ukrainian_YI ] }; key <AD10> { [ Cyrillic_yu, Cyrillic_YU, semicolon, colon ] }; key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, guillemotleft, braceleft ] }; key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, guillemotright, braceright ] }; key <BKSL> { [ Cyrillic_e, Cyrillic_E, backslash, bar ] }; - key <AC01> { [ Cyrillic_a, Cyrillic_A, a, A ] }; - key <AC02> { [ Cyrillic_er, Cyrillic_ER, r, R ] }; - key <AC03> { [ Cyrillic_es, Cyrillic_ES, s, S ] }; - key <AC04> { [ Cyrillic_te, Cyrillic_TE, t, T ] }; - key <AC05> { [ Cyrillic_de, Cyrillic_DE, d, D ] }; - key <AC06> { [ Cyrillic_che, Cyrillic_CHE, h, H ] }; - key <AC07> { [ Cyrillic_en, Cyrillic_EN, n, N ] }; - key <AC08> { [ Cyrillic_ie, Cyrillic_IE, e, E ] }; - key <AC09> { [ Cyrillic_i, Cyrillic_I, i, I ] }; - key <AC10> { [ Cyrillic_o, Cyrillic_O, o, O ] }; + key <AC01> { [ Cyrillic_a, Cyrillic_A ] }; + key <AC02> { [ Cyrillic_er, Cyrillic_ER ] }; + key <AC03> { [ Cyrillic_es, Cyrillic_ES ] }; + key <AC04> { [ Cyrillic_te, Cyrillic_TE, Serbian_tshe, Serbian_TSHE ] }; + key <AC05> { [ Cyrillic_de, Cyrillic_DE, Serbian_dje, Serbian_DJE ] }; + key <AC06> { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_dzhe, Cyrillic_DZHE ] }; + key <AC07> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE ] }; + key <AC08> { [ Cyrillic_ie, Cyrillic_IE, Ukrainian_ie, Ukrainian_IE ] }; + key <AC09> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key <AC10> { [ Cyrillic_o, Cyrillic_O ] }; key <AC11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, quotedbl ] }; - key <AB01> { [ Cyrillic_ze, Cyrillic_ZE, z, Z ] }; - key <AB02> { [ Cyrillic_ha, Cyrillic_HA, x, X ] }; - key <AB03> { [ Cyrillic_tse, Cyrillic_TSE, c, C ] }; - key <AB04> { [ Cyrillic_ve, Cyrillic_VE, v, V ] }; - key <AB05> { [ Cyrillic_be, Cyrillic_BE, b, B ] }; - key <AB06> { [ Cyrillic_ka, Cyrillic_KA, k, K ] }; - key <AB07> { [ Cyrillic_em, Cyrillic_EM, m, M ] }; + key <AB01> { [ Cyrillic_ze, Cyrillic_ZE, Macedonia_dse, Macedonia_DSE ] }; + key <AB02> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <AB03> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <AB04> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <AB05> { [ Cyrillic_be, Cyrillic_BE, Macedonia_gje, Macedonia_GJE ] }; + key <AB06> { [ Cyrillic_ka, Cyrillic_KA, Macedonia_kje, Macedonia_KJE ] }; + key <AB07> { [ Cyrillic_em, Cyrillic_EM ] }; key <AB08> { [ comma, semicolon, less ] }; key <AB09> { [ period, colon, greater ] }; - key <AB10> { [ slash, question ] }; + key <AB10> { [ slash, question, U04CF, U04C0 ] }; // palochka - key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; - key <LSGT> { [ U0301, asciitilde, grave ] }; - key <SPCE> { [ space, space, space, nobreakspace ] }; - key <MENU> { [ Mode_switch, Multi_key ] }; + key <LSGT> { [ equal, plus, multiply, division ] }; include "level3(ralt_switch)" + include "capslock(backspace)" + include "nbsp(level4)" }; -// EXTRAS: - // Church Slavonic language layout // based on the Russian standard keyboard // by Aleksandr Andreev and Yuri Shardt @@ -709,21 +734,21 @@ xkb_symbols "chu" { name[Group1]= "Church Slavonic"; - key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key <TLDE> { [ Ukrainian_yi, Ukrainian_YI, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign key <AE01> { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ - key <AE02> { [ U0454, U0404, U0465, U0464 ] }; // є Є ѥ Ѥ + key <AE02> { [ Ukrainian_ie, Ukrainian_IE, U0465, U0464 ] }; // є Є ѥ Ѥ key <AE03> { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ key <AE04> { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ key <AE05> { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A key <AE06> { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ key <AE07> { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ key <AE08> { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ - key <AE09> { [ U0455, U0405,parenleft,U002A ] }; // ѕ Ѕ ( * - key <AE10> { [Cyrillic_u,Cyrillic_U,parenright,U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u + key <AE09> { [ Macedonia_dse, Macedonia_DSE, parenleft, asterisk ] }; // ѕ Ѕ ( * + key <AE10> { [ Cyrillic_u, Cyrillic_U, parenright, U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u key <AE11> { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) key <AE12> { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_i ] }; key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; @@ -792,33 +817,33 @@ xkb_symbols "ruu" { name[Group1]= "Russian (with Ukrainian-Belorussian layout)"; key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol - key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To + key <AE01> { [ 1, exclam, division, U2248 ] }; // Division Sign and Almost Equal To key <AE02> { [ 2, quotedbl, currency, infinity ] }; - key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign + key <AE03> { [ 3, numerosign, section, U20B4 ] }; // Paragraph and Hryvnia sign key <AE04> { [ 4, semicolon, dollar, EuroSign ] }; - key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign - key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To - key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To - key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign + key <AE05> { [ 5, percent, degree, permille ] }; + key <AE06> { [ 6, colon, less, lessthanequal ] }; + key <AE07> { [ 7, question, greater, greaterthanequal ] }; + key <AE08> { [ 8, asterisk,enfilledcircbullet,multiply ] }; key <AE09> { [ 9, parenleft, bracketleft, braceleft ] }; key <AE10> { [ 0, parenright, bracketright, braceright ] }; key <AE11> { [ minus, underscore, emdash, endash ] }; key <AE12> { [ equal, plus, notequal, plusminus ] }; key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, paragraph ] }; key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; - key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar + key <BKSL> { [ slash, bar, backslash, brokenbar ] }; key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] }; - key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign + key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, mu ] }; key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; key <AB10> { [ period, comma, slash, ellipsis ] }; @@ -884,34 +909,34 @@ xkb_symbols "prxn" { key <TLDE> { [ U2019, apostrophe, U0301, U0300, U2053, U2015, U02BC, asciitilde ] }; // Typographic Apostrophe, Apostrophe, Combining Acute, Combining Grave, Swung Dash, Quotation Dash, Modifier Letter Apostrophe, Tilde key <AE01> { [ 1, exclam, U0304, U0306, U0308, U0311, U0307, U0313 ] }; // 1, !, Combining Macron, Combining Breve, Combining Diaresis, Combining Inverted Breve, Combining Dot Above, Combining Comma Above key <AE02> { [ 2,quotedbl,numerosign, U20BF, U20B8, U20AE, U00A3, U20B9 ] }; // 2 " № ₿ ₸ ₮ £ ₹ - key <AE03> { [ 3, U00A7, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ + key <AE03> { [ 3, section, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ key <AE04> { [ 4, semicolon, dollar, EuroSign, U0482, U20DD, U0488, U0489 ] }; // 4 ; $ € Thousands Sign, Combining Enclosing Circle, Combining Hundred Thousands, Combining Millions - key <AE05> { [ 5, percent, degree, U2030, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet + key <AE05> { [ 5, percent, degree, permille, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet key <AE06> { [ 6, colon, U0335, U0336, U0483, U0487, UFE2E, UFE2F ] }; // 6, :, Combining Short Stroke Overlay, Combining Long Stroke Overlay, Combining Titlo, Combining Pokrytie, Combining Titlo Left Half, Combining Titlo Right Half key <AE07> { [ 7, question, U030B, U030F, U030C, U0303, U032C, U0360 ] }; // 7, ?, Combining Double Acute, Combining Double Grave, Combining Caron/Háček, Combining Tilde, Combining Caron/Háček Below, Combining Double Tilde key <AE08> { [ 8, asterisk, U0331, U0332, U0333, U032F, U032D, U032E ] }; // 8, *, Combining Macron Below, Combining Low Line, Combining Double Low Line, Combining Inverted Breve Below, Combining Circumflex Accent, Combining Breve Below key <AE09> { [ 9,parenleft, bracketleft, braceleft, U035F, U035D, U035E, U035C ] }; // 9 ( [ { Combining Double Macron Below, Combining Double Breve, Combining Double Macron, Combining Double Breve Below key <AE10> { [ 0,parenright,bracketright, braceright, U27E8, U27E9, U04A7, U04A6 ] }; // 0 ) ] } ⟨⟩ ҧ Ҧ - key <AE11> { [ minus, underscore, emdash, endash, U2011, U00AD, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign + key <AE11> { [ minus, underscore, emdash, endash, U2011,hyphen, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign key <AE12> { [ equal, plus,notequal, U2248, U04FF, U04FE, U050D, U050C ] }; // = + ≠ ≈ ӿ Ӿ ԍ Ԍ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE, U04CF, U04C0, U030A, U0325 ] }; // й Й ј Ј ӏ Ӏ, Combining Ring Above and Below key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U04B5, U04B4, Cyrillic_u_straight, Cyrillic_U_straight, U051B, U051A ] }; // ц Ц ҵ Ҵ ү Ү ԛ Ԛ - key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender,Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ + key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO, U0463, U0462, UA653, UA652 ] }; // е Е ё Ё ѣ Ѣ ꙓ Ꙓ key <AD06> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE, Cyrillic_en_descender, Cyrillic_EN_descender, U04C8, U04C7 ] }; // н Н њ Њ ң Ң ӈ Ӈ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn,Ukrainian_GHE_WITH_UPTURN, Cyrillic_ghe_bar, Cyrillic_GHE_bar, U04F7, U04F6 ] }; // г Г Ґ ґ ғ Ғ ӷ Ӷ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U04A1, U04A0, U04AB, U04AA, UA67D, UA67F ] }; // ш Ш ҡ Ҡ ҫ Ҫ Combining Payerok Payerok key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U0505, U0504, UA68D, UA68C, U050F, U050E ] }; // щ Щ ԅ Ԅ ꚍ Ꚍ ԏ Ԏ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0, U0499, U0498, U0507, U0506 ] }; // з З ӡ Ӡ ҙ Ҙ ԇ Ԇ - key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ - key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok + key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ + key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok key <AC01> { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472, U04C4, U04C3, U04FB, U04FA ] }; // ф Ф ѳ Ѳ ӄ Ӄ ӻ Ӻ - key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U051D, U051C, U0529, U0528, U0527, U0526 ] }; // в В ԝ Ԝ ԩ Ԩ ԧ Ԧ - key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D9, U04D8, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ + key <AC04> { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U0525, U0524, U0471, U0470, UA65F, UA65E ] }; // п П ԥ Ԥ ѱ Ѱ ꙟ Ꙟ key <AC06> { [ Cyrillic_er, Cyrillic_ER, U0481, U0480, U048F, U048E, U0521, U0520 ] }; // р Р ҁ Ҁ ҏ Ҏ ԡ Ԡ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar, U047B, U047A, U0461, U0460 ] }; // о О ө Ө ѻ Ѻ ѡ Ѡ @@ -923,11 +948,11 @@ xkb_symbols "prxn" { key <LSGT> { [ U0495, U0494, U0501, U0500, U0503, U0502, U0509, U0508 ] }; // ҕ Ҕ ԁ Ԁ ԃ Ԃ ԉ Ԉ key <AB01> { [ Cyrillic_ya, Cyrillic_YA, U0469, U0468, U0467, U0466, UA657, UA656 ] }; // я Я ѩ Ѩ ѧ Ѧ ꙗ Ꙗ - key <AB02> { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, U04B7, U04B6, U2016, U00A6 ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ + key <AB02> { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, Cyrillic_che_descender, Cyrillic_CHE_descender, U2016, U00A6 ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ key <AB03> { [ Cyrillic_es, Cyrillic_ES, U046D, U046C, U046B, U046A, U04F7, U04F6 ] }; // с С ѭ Ѭ ѫ Ѫ ӷ Ӷ - key <AB04> { [ Cyrillic_em, Cyrillic_EM, multiply, U00F7, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ - key <AB05> { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ - key <AB06> { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke,Cyrillic_CHE_vertstroke]}; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ + key <AB04> { [ Cyrillic_em, Cyrillic_EM, multiply, division, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ + key <AB05> { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ + key <AB06> { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] }; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN, U04A5, U04A4, UA64F, UA64E, U048D, U048C ] }; // ь Ь ҥ Ҥ ꙏ Ꙏ ҍ Ҍ key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark, singlelowquotemark, U2039, U0523, U0522 ] }; // б Б « „ ‚ ‹ ԣ Ԣ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark, leftsinglequotemark, U203A, rightdoublequotemark, rightsinglequotemark]}; // ю Ю » “ ‘ › ” ’ @@ -959,3 +984,75 @@ xkb_symbols "prxn" { // srp: Потребно да се ставља lv5:rwin_switch_lock или једна из других брава петег ступња, да би шљакао пребацивач Caps! // https://bugs.freedesktop.org/show_bug.cgi?id=102189 }; + + +partial alphanumeric_keys +xkb_symbols "unipunct" { + +// Раскладка представляет собой обычную русскую раскладку, в которой некоторые редко используемые буквы +// убрали на третий уровень, и поставили все пунктуационные знаки на то же место, где они стоят на +// US раскладке (+ добавлен знак номера, который отсутствует в US раскладке, но часто нужен в RU). + +// ru(unipunct): +// `~ 1! 2@ 3#3№ 4$ 5% 6^ 7& 8* 9( 0) -_ =+ +// хХ бБ уУюЮ кК еЕэЭ нН гГ шШщЩ жЖ зЗ [{ ]} \| +// фФ ыЫ вВ аА пП рР оОёЁ лЛ дД ;: '" //" +// яЯ чЧцЦ сС мМ иИйЙ тТ ьЬъЪ ,< .> /? + + include "us(basic)" + name[Group1]= "Russian (with US punctuation)"; + + // Единственный символ, который отсутствует на US раскладке - № + key <AE03> { [ 3, numbersign, 3, numerosign ] }; + + key <LatQ> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <LatW> { [ Cyrillic_be, Cyrillic_BE ] }; + key <LatE> { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] }; + key <LatR> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <LatT> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] }; + key <LatY> { [ Cyrillic_en, Cyrillic_EN ] }; + key <LatU> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <LatI> { [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <LatO> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <LatP> { [ Cyrillic_ze, Cyrillic_ZE ] }; + + key <LatA> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <LatS> { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key <LatD> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <LatF> { [ Cyrillic_a, Cyrillic_A ] }; + key <LatG> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <LatH> { [ Cyrillic_er, Cyrillic_ER ] }; + key <LatJ> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key <LatK> { [ Cyrillic_el, Cyrillic_EL ] }; + key <LatL> { [ Cyrillic_de, Cyrillic_DE ] }; + + key <LatZ> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <LatX> { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_tse, Cyrillic_TSE ] }; + key <LatC> { [ Cyrillic_es, Cyrillic_ES ] }; + key <LatV> { [ Cyrillic_em, Cyrillic_EM ] }; + key <LatB> { [ Cyrillic_i, Cyrillic_I, Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <LatN> { [ Cyrillic_te, Cyrillic_TE ] }; + key <LatM> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_mac" { + + include "ru(phonetic_winkeys)" + name[Group1]= "Russian (phonetic Macintosh)"; + + key <LatE> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <TLDE> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] }; + key <AD12> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <AE03> { [ 3, numbersign, numerosign ] }; + key <AE04> { [ 4, dollar, U20BD ] }; // ruble + key <AE05> { [ 5, percent ] }; + key <AE06> { [ 6, caret ] }; + key <AE11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, minus, underscore ] }; + key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] }; + + include "level3(ralt_switch)" +}; diff --git a/test/data/symbols/terminate b/test/data/symbols/terminate index a43f2b9..60c2479 100644 --- a/test/data/symbols/terminate +++ b/test/data/symbols/terminate @@ -1,4 +1,4 @@ -default partial modifier_keys +default partial modifier_keys xkb_symbols "ctrl_alt_bksp" { key <BKSP> { type="CTRL+ALT", diff --git a/test/data/symbols/us b/test/data/symbols/us index 9cc056d..b876978 100644 --- a/test/data/symbols/us +++ b/test/data/symbols/us @@ -1,4 +1,4 @@ -default partial alphanumeric_keys modifier_keys +default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1]= "English (US)"; @@ -361,7 +361,7 @@ xkb_symbols "dvorak-alt-intl" { key <AC03> { [ e, E, eacute ] }; key <AC04> { [ u, U, ucircumflex ] }; key <AC05> { [ i, I, icircumflex ] }; - key <AC10> { [ s, S, ssharp ] }; + key <AC10> { [ s, S, ssharp, U1E9E ] }; key <AB01> { [ semicolon, colon, acircumflex ] }; key <AB02> { [ q, Q, odiaeresis, dead_ogonek ] }; @@ -488,8 +488,8 @@ xkb_symbols "dvorak-r" { }; // Classic dvorak layout -// by Piter Punk <piterpk@terra.com.br> - 2006-07-06 -// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net +// by Piter Punk <piterpk@terra.com.br> - 2006-07-06 +// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net // on xorg list. partial alphanumeric_keys xkb_symbols "dvorak-classic" { @@ -604,7 +604,7 @@ xkb_symbols "dvp" { key <AC07> { [ h, H, dead_acute ] }; key <AC08> { [ t, T, thorn, THORN ] }; key <AC09> { [ n, N, ntilde, Ntilde ] }; - key <AC10> { [ s, S, ssharp ] }; + key <AC10> { [ s, S, ssharp, U1E9E ] }; key <AC11> { [ minus, underscore, hyphen, endash ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; key <BKSL> { [ backslash, bar ] }; @@ -774,7 +774,7 @@ xkb_symbols "colemak" { key <AC01> { [ a, A, aacute, Aacute ] }; key <AC02> { [ r, R, dead_grave, asciitilde ] }; - key <AC03> { [ s, S, ssharp, asciitilde ] }; + key <AC03> { [ s, S, ssharp, 0x1001e9e ] }; key <AC04> { [ t, T, dead_acute, dead_doubleacute ] }; key <AC05> { [ d, D, dead_diaeresis, asciitilde ] }; key <AC06> { [ h, H, dead_caron, asciitilde ] }; @@ -878,7 +878,7 @@ xkb_symbols "classmate-intl" { key <LSGT> { [ backslash, bar, backslash, bar ] }; - key <KP7> { [ KP_Home, KP_7, + key <KP7> { [ KP_Home, KP_7, onehalf, dead_horn ] }; key <KP8> { [ KP_Up, KP_8, threequarters, dead_ogonek ] }; @@ -957,7 +957,7 @@ xkb_symbols "classmate-altgr-intl" { key <LSGT> { [ backslash, bar, backslash, bar ] }; - key <KP7> { [ KP_Home, KP_7, + key <KP7> { [ KP_Home, KP_7, dead_horn, dead_horn ] }; key <KP8> { [ KP_Up, KP_8, dead_ogonek, dead_ogonek ] }; @@ -1032,7 +1032,7 @@ xkb_symbols "olpc" { key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below key <AC01> { [ a, A, ae, AE ] }; - key <AC02> { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key <AC02> { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp key <AC03> { [ d, D, eth, ETH ] }; key <AC04> { [ f, F, thorn, THORN ] }; key <AC06> { [ h, H, sterling, sterling ] }; @@ -1056,7 +1056,7 @@ xkb_symbols "olpc" { partial alphanumeric_keys xkb_symbols "olpc2" { include "us(olpc)" - name[Group1]= "English (the divide/multiply keys toggle the layout)"; + name[Group1]= "English (the divide/multiply toggle the layout)"; include "group(olpc)" }; @@ -1095,7 +1095,7 @@ xkb_symbols "olpcm" { key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below key <AC01> { [ a, A, ae, AE ] }; - key <AC02> { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key <AC02> { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp key <AC03> { [ d, D, eth, ETH ] }; key <AC04> { [ f, F, thorn, THORN ] }; key <AC06> { [ h, H, sterling, sterling ] }; @@ -1178,6 +1178,31 @@ xkb_symbols "chr" { key <AB10> { [ U13C2, U13C9 ] }; }; +// Add Hawaiian `okina and kahako to US layout +// Author: Greg Meyer <gregory.meyer@gmail.com>, 2020 +// this mapping follows the one for Windows here: http://www.olelo.hawaii.edu/enehana/winkbd.php +// `okina replaces apostrophe (apostrophe moves to level 3) +// vowels with kahako (macron) are level 3 symbols +partial alphanumeric_keys +xkb_symbols "haw" { + + include "us(basic)" + name[Group1] = "Hawaiian"; + + // `okina replaces single apostrophe + // alt gives the literal apostrophe + key <AC11> {[ U02BB, quotedbl, apostrophe ] }; + + // kahako + key <AC01> {[ a, A, amacron, Amacron ]}; + key <AD03> {[ e, E, emacron, Emacron ]}; + key <AD07> {[ u, U, umacron, Umacron ]}; + key <AD08> {[ i, I, imacron, Imacron ]}; + key <AD09> {[ o, O, omacron, Omacron ]}; + + include "level3(ralt_switch)" +}; + // Serbian charecters added as third level symbols to US keyboard layout. partial alphanumeric_keys @@ -1203,51 +1228,6 @@ xkb_symbols "hbs" { include "level3(ralt_switch)" }; -//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg -partial alphanumeric_keys -xkb_symbols "htcdream" { - include "inet(htcdream)" - name[Group1]= "English (US)"; - - //second row - key <AD01> { [ q, Q, Tab, Tab ] }; - key <AD02> { [ w, W, grave, grave ] }; - key <AD03> { [ e, E, underscore, underscore ] }; - key <AD04> { [ r, R, sterling, sterling ] }; - key <AD05> { [ t, T, EuroSign, EuroSign ] }; - key <AD06> { [ y, Y, division, division ] }; - key <AD07> { [ u, U, multiply, multiply ] }; - key <AD08> { [ i, I, minus, minus ] }; - key <AD09> { [ o, O, plus, plus ] }; - key <AD10> { [ p, P, equal, equal ] }; - - //third row - key <AC01> { [ a, A, NoSymbol, NoSymbol ] }; - key <AC02> { [ s, S, bar, bar ] }; - key <AC03> { [ d ,D, backslash, backslash ] }; - key <AC04> { [ f, F, braceleft, braceleft ] }; - key <AC05> { [ g, G, braceright, braceright ] }; - key <AC06> { [ h, H, colon, colon ] }; - key <AC07> { [ j, J, semicolon, semicolon ] }; - key <AC08> { [ k, K, quotedbl, quotedbl ] }; - key <AC09> { [ l, L, apostrophe, apostrophe ] }; - - //forth row - key <AB01> { [ z, Z, NoSymbol, NoSymbol ] }; - key <AB02> { [ x, X, NoSymbol, NoSymbol ] }; - key <AB03> { [ c, C, NoSymbol, NoSymbol ] }; - key <AB04> { [ v, V, bracketleft, bracketleft ] }; - key <AB05> { [ b, B, bracketright, bracketright ] }; - key <AB06> { [ n, N, less, less ] }; - key <AB07> { [ m, M, greater, greater ] }; - key <AB08> { [ comma, comma, question, question ] }; - - //fifth row - key <FK15> { [ at, at, asciitilde, asciitilde ] }; - - include "level3(alt_switch)" -}; - // Workman Keyboard Layout symbols for xkb on X.Org Server 7.x // 09-06-2010 OJ Bucao. http://www.workmanlayout.com @@ -1642,6 +1622,24 @@ xkb_symbols "cz_sk_de" { include "level3(ralt_switch)" }; +// 03 December 2017 - Added us(scn), please refer to +// Cadèmia Siciliana <l10n@cademiasiciliana.org> +partial alphanumeric_keys +xkb_symbols "scn" { + + include "us(intl)" + name[Group1]="Sicilian (US keyboard)"; + + key <AD03> { [ e, E, U0259, U018F ] }; + key <AC03> { [ d, D, U1E0D, U1E0C ] }; + key <AC04> { [ f, F, U0111, U0110 ] }; + key <AC06> { [ h, H, U1E25, U1E24 ] }; + key <AB02> { [ x, X, U03C7, U03A7 ] }; + key <AB09> { [ period, greater, U1D58, dead_caron ] }; + + include "level3(ralt_switch)" +}; + // XCompose is out! Unicode combining is in! For those of us who live // on the edge: A keymap using Unicode combining characters instead of // deadkeys. This variation does not deviate from the lame MS-style @@ -1665,7 +1663,7 @@ xkb_symbols "cz_sk_de" { partial alphanumeric_keys xkb_symbols "intl-unicode" { - name[Group1]= "English (US, international AltGr Unicode combining)"; + name[Group1]= "English (US, intl., AltGr Unicode combining)"; include "us(intl)" include "level3(ralt_switch)" @@ -1715,7 +1713,7 @@ xkb_symbols "intl-unicode" { partial alphanumeric_keys xkb_symbols "alt-intl-unicode" { - name[Group1]= "English (US, international AltGr Unicode combining, alternative)"; + name[Group1]= "English (US, intl., AltGr Unicode combining, alt.)"; include "us(intl-unicode)" @@ -1787,3 +1785,224 @@ partial alphanumeric_keys xkb_symbols "sun_type6" { include "sun_vndr/us(sun_type6)" }; + +// Implementation of the 3l keyboard layout +// See https://github.com/jackrosenthal/threelayout for specification +partial alphanumeric_keys modifier_keys +xkb_symbols "3l" { + name[Group1] = "English (3l)"; + + key.type[Group1] = "ONE_LEVEL"; + key <TAB> { [ Escape ] }; + key <CAPS> { [ Tab ] }; + key <AC11> { [ ISO_Level3_Shift ] }; // Sym Modifier + key <AB10> { [ ISO_Level5_Shift ] }; // Cur/Num Modifier + + // Top row numbers - not part of spec, but given for convenience + key <AE01> { [ 1 ] }; + key <AE02> { [ 2 ] }; + key <AE03> { [ 3 ] }; + key <AE04> { [ 4 ] }; + key <AE05> { [ 5 ] }; + key <AE06> { [ 6 ] }; + key <AE07> { [ 7 ] }; + key <AE08> { [ 8 ] }; + key <AE09> { [ 9 ] }; + key <AE10> { [ 0 ] }; + + // Main keys + // Order of mods (defined by EIGHT_LEVEL_SEMIALPHABETIC) is: + // [ None, Shift, Sym, Shift+Sym, Num, Shift+Num, Sym+Num, Shift+Sym+Num ] + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + + // Second row + key <AD01> { [ q, Q, quotedbl, Greek_omicron, Prior, Prior, U21CD, Greek_OMICRON ] }; + key <AD02> { [ f, F, underscore, Greek_phi, BackSpace, BackSpace, U21A4, Greek_PHI ] }; + key <AD03> { [ u, U, bracketleft, Greek_upsilon, Up, Up, U2191, Greek_UPSILON ] }; + key <AD04> { [ y, Y, bracketright, Greek_psi, Delete, Delete, U21A6, Greek_PSI ] }; + key <AD05> { [ z, Z, asciicircum, Greek_zeta, Next, Next, U21CF, Greek_ZETA ] }; + key <AD06> { [ x, X, exclam, Greek_xi, NoSymbol, NoSymbol, U2260, Greek_XI ] }; + key <AD07> { [ k, K, less, Greek_kappa, 1, A, U2A7D, Greek_KAPPA ] }; + key <AD08> { [ c, C, greater, Greek_chi, 2, B, U2A7E, Greek_CHI ] }; + key <AD09> { [ w, W, equal, Greek_omega, 3, C, U2261, Greek_OMEGA ] }; + key <AD10> { [ b, B, ampersand, Greek_beta, NoSymbol, NoSymbol, U2248, Greek_BETA ] }; + + // Home row + key <AC01> { [ o, O, slash, Greek_omega, Home, Home, U21D0, Greek_OMEGA ] }; + key <AC02> { [ h, H, minus, Greek_theta, Left, Left, U2190, Greek_THETA ] }; + key <AC03> { [ e, E, braceleft, Greek_epsilon, Down, Down, U2193, Greek_EPSILON ] }; + key <AC04> { [ a, A, braceright, Greek_alpha, Right, Right, U2192, Greek_ALPHA ] }; + key <AC05> { [ i, I, asterisk, Greek_iota, End, End, U21D2, Greek_IOTA ] }; + key <AC06> { [ d, D, question, Greek_delta, period, colon, U2286, Greek_DELTA ] }; + key <AC07> { [ r, R, parenleft, Greek_rho, 4, D, U2227, Greek_RHO ] }; + key <AC08> { [ t, T, parenright, Greek_tau, 5, E, U2228, Greek_TAU ] }; + key <AC09> { [ n, N, apostrophe, Greek_eta, 6, F, U2200, Greek_ETA ] }; + key <AC10> { [ s, S, colon, Greek_sigma, NoSymbol, NoSymbol, U2203, Greek_SIGMA ] }; + + // Bottom row + key <AB01> { [ comma, comma, numbersign, NoSymbol, slash, NoSymbol, U21AE, NoSymbol ] }; + key <AB02> { [ m, M, dollar, Greek_mu, asterisk, NoSymbol, U2194, Greek_MU ] }; + key <AB03> { [ period, period, bar, NoSymbol, minus, NoSymbol, U21CE, NoSymbol ] }; + key <AB04> { [ j, J, asciitilde, Greek_SIGMA, plus, NoSymbol, U21D4, NoSymbol ] }; + key <AB05> { [ semicolon, semicolon, grave, NoSymbol, comma, NoSymbol, U2282, NoSymbol ] }; + key <AB06> { [ g, G, plus, Greek_gamma, 0, NoSymbol, U2229, Greek_GAMMA ] }; + key <AB07> { [ l, L, percent, Greek_lambda, 7, parenleft, U222A, Greek_LAMBDA ] }; + key <AB08> { [ p, P, backslash, Greek_pi, 8, parenright, U2208, Greek_PI ] }; + key <AB09> { [ v, V, at, Greek_nu, 9, NoSymbol, U2209, Greek_NU ] }; + + include "level5(modifier_mapping)" +}; + +// Chromebooks typically have the key which is normally in the caps +// lock position mapped to keycode 133 (LWIN). For 3l, it is critical +// that the key in this positon correspond to tab, so there is a +// variant available for chromebook hardware. +partial modifier_keys +xkb_symbols "3l-cros" { + include "us(3l)" + name[Group1] = "English (3l, Chromebook)"; + key <LWIN> { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Tab ] + }; +}; + +// A 3l variant for emacs users, which maps control to caps lock and (re)maps +// tab back to tab. +partial modifier_keys +xkb_symbols "3l-emacs" { + include "us(3l)" + name[Group1] = "English (3l, emacs)"; + + key <TAB> { [ Tab ] }; + key <CAPS> { [ Control_L ] }; + + modifier_map Control { <CAPS> }; +}; + +// Drix EU Latin - version 3.1 (2019-10-07) +// Author: Jerome Leclanche <jerome@leclan.ch> +// Latin layout based on classic US qwerty, with azerty-style second-row m key. +// Features: +// - Programmer-centric punctuation keys (All common symbols on right hand except < and > on left) +// - Most common dead accents on altgr-shift number row +// - Unicode arrows on Altgr+shift+WASD +// - Some commonly used special characters available: +// - Most common european special characters +// - Misc currency symbols, copyright/registered/trademark symbols +// - Common math symbols + some common greek letters +// - Compose key replaces Mod5 +// +// This layout is in the Public Domain. +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ " ´ │ ' ` │ ^ ^ │ ` ¨ │ ´ ° │ 6 ¯ │ 7 ¸ │ 8 ˛ │ 9 ˇ │ | ˝ │ _ ± │ = ≠ ┃Backspace┃ +// │ @ £ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ⁴ │ 5 ⁵ │ 6 ⁶ │ 7 ⁷ │ 8 ⁸ │ 9 ⁹ │ 0 ⁰ │ - " │ + ' ┃ ⌫ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃Tab ┃ Q Ø │ W ↑ │ E € │ R ₽ │ T τ │ Y ¥ │ U U │ I ’ │ O Ω │ P ₱ │ [ « │ ] » ┃ ⏎ ┃ +// ┃ ↹ ┃ q ø │ w w │ e € │ r ® │ t ™ │ y ¥ │ u u │ i ‘ │ o œ │ p π │ ( { │ ) } ┃ Enter ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃Caps ┃ A ← │ S ↓ │ D → │ F Ƒ │ G G │ H H │ J ” │ K „ │ L λ │ M M │ % ‰ │ & × ┃ ┃ +// ┃Lock ⇬ ┃ a æ │ s ß │ d Δ │ f ƒ │ g g │ h h │ j “ │ k ‚ │ l £ │ m µ │ # ~ │ * $ ┃ ┃ +// ┣━━━━━━┳━┹───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┲━┷━━━━━┻━━━━━━┫ +// ┃Shift ┃ > ≥ │ Z ¶ │ X ÷ │ C ¢ │ V V │ B ₿ │ N N │ ? ¿ │ , · │ ; ´ │ \ ¦ ┃Shift ┃ +// ┃ ⇧ ┃ < ≤ │ z § │ x × │ c © │ v ♀ │ b ♂ │ n ⚥ │ ! ¡ │ . … │ : ` │ / | ┃ ⇧ ┃ +// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴────┲┷━━━━━╈━━━━━┻┳━━━━━━┳━━━━━━┫ +// ┃Ctrl ┃ Fn ┃Alt ┃ ␣ Space Nobreakspace ⍽ ┃AltGr ┃Multi ┃ Ctxt ┃ Ctrl ┃ +// ┃ ┃ ┃ ┃ ␣ Space Nobreakspace ⍽ ┃ ┃ ┃ Menu ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛ + +partial alphanumeric_keys modifier_keys +xkb_symbols "drix" { + + name[Group1] = "English (Drix)"; + + // First row + key <TLDE> {[ at, asciitilde, sterling, dead_tilde ]}; // @ ~ £ ~ + key <AE01> {[ 1, quotedbl, onesuperior, dead_grave ]}; // 1 " ¹ ` + key <AE02> {[ 2, apostrophe, twosuperior, dead_acute ]}; // 2 ' ² ´ + key <AE03> {[ 3, asciicircum, threesuperior, dead_circumflex ]}; // 3 ^ ³ ^ + key <AE04> {[ 4, grave, foursuperior, dead_diaeresis ]}; // 4 4 ⁴ ¨ + key <AE05> {[ 5, degree, fivesuperior, dead_abovering ]}; // 5 ° ⁵ ° + key <AE06> {[ 6, 6, sixsuperior, dead_macron ]}; // 6 6 ⁶ ¯ + key <AE07> {[ 7, 7, sevensuperior, dead_cedilla ]}; // 7 7 ⁷ ¸ + key <AE08> {[ 8, 8, eightsuperior, dead_ogonek ]}; // 8 8 ⁸ ˛ + key <AE09> {[ 9, 9, ninesuperior, dead_caron ]}; // 9 9 ⁹ ˇ + key <AE10> {[ 0, bar, zerosuperior, dead_doubleacute ]}; // 0 | ⁰ ˝ + key <AE11> {[ minus, underscore, quotedbl, plusminus ]}; // - _ " ± + key <AE12> {[ plus, equal, apostrophe, notequal ]}; // + = ' ≠ + + // Second row + key <AD01> {[ q, Q, oslash, Ooblique ]}; // q Q ø Ø + key <AD02> {[ w, W, w, uparrow ]}; // w W w ↑ + key <AD03> {[ e, E, EuroSign, EuroS ]}; // e E € € + key <AD04> {[ r, R, registered, 0x10020bd ]}; // r R ® ₽ + key <AD05> {[ t, T, trademark, Greek_tau ]}; // t T ™ τ + key <AD06> {[ y, Y, yen, yen ]}; // y Y ¥ ¥ + key <AD07> {[ u, U, u, U ]}; // u U u U + key <AD08> {[ i, I, leftsinglequotemark, rightsinglequotemark ]}; // i I ‘ ’ + key <AD09> {[ o, O, oe, Greek_OMEGA ]}; // o O œ Ω + key <AD10> {[ p, P, Greek_pi, 0x10020b1 ]}; // p P π ₱ + key <AD11> {[ parenleft, bracketleft, braceleft, guillemotleft ]}; // ( [ { « + key <AD12> {[ parenright, bracketright, braceright, guillemotright ]}; // ) ] } » + + // Third row + key <AC01> {[ a, A, ae, leftarrow ]}; // a A æ ← + key <AC02> {[ s, S, ssharp, downarrow ]}; // s S ß ↓ + key <AC03> {[ d, D, Greek_DELTA, rightarrow ]}; // d D Δ → + key <AC04> {[ f, F, 0x1000192, 0x1000191 ]}; // f F ƒ Ƒ + key <AC05> {[ g, G, g, G ]}; // g G g G + key <AC06> {[ h, H, h, H ]}; // h H h H + key <AC07> {[ j, J, leftdoublequotemark, rightdoublequotemark ]}; // j J “ ” + key <AC08> {[ k, K, singlelowquotemark, doublelowquotemark ]}; // k K ‚ „ + key <AC09> {[ l, L, sterling, Greek_lambda ]}; // l L £ λ + key <AC10> {[ m, M, mu, M ]}; // m M µ M + key <AC11> {[ numbersign, percent, asciitilde, 0x1002030 ]}; // # % ~ ‰ + + // Fourth row + key <LSGT> {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ + key <AB01> {[ z, Z, section, paragraph ]}; // z Z § ¶ + key <AB02> {[ x, X, multiply, division ]}; // x X × ÷ + key <AB03> {[ c, C, copyright, cent ]}; // c C © ¢ + key <AB04> {[ v, V, 0x1002640, V ]}; // v V ♀ V + key <AB05> {[ b, B, 0x1002642, 0x10020bf ]}; // b B ♂ ₿ + key <AB06> {[ n, N, 0x10026a5, N ]}; // n N ⚥ N + key <AB07> {[ exclam, question, exclamdown, questiondown ]}; // ! ? ¡ ¿ + key <AB08> {[ period, comma, 0x1002026, periodcentered ]}; // . , … · + key <AB09> {[ colon, semicolon, grave, acute ]}; // : ; ` ´ + key <AB10> {[ slash, backslash, bar, brokenbar ]}; // / \ | ¦ + + // Next to the enter key + key <BKSL> {[ asterisk, ampersand, dollar, multiply ]}; // * & $ × + + // Rebind right Super (windows key) into a Compose key + key <RWIN> {[ Multi_key ]}; + + // Implement AltGr and AltGr+Shift + // For some reason, include "level3(ralt_switch)" doesn't do the trick. + key <RALT> { + type[Group1]="TWO_LEVEL", + [ ISO_Level3_Shift, Multi_key ] + }; +}; + +// German and Swedish characters added as third level symbols to the US keyboard layout +// Author: Stephan Lachnit <stephanlachnit@protonmail.com>, 2019 +// the german umlauts are placed over the characters without diaeresis, the sharp-s over the s +// the swedish ao is placed over the p, since it's closed to the position on a swedish keyboard +// the euro sign is placed over the e, as it is usual for german and swedish keyboards +partial alphanumeric_keys +xkb_symbols "de_se_fi" { + + include "us(basic)" + include "eurosign(e)" + name[Group1] = "German, Swedish and Finnish (US)"; + + key <AC01> {[ a, A, adiaeresis, Adiaeresis ]}; + key <AD09> {[ o, O, odiaeresis, Odiaeresis ]}; + key <AC02> {[ s, S, ssharp, U1E9E ]}; + key <AD07> {[ u, U, udiaeresis, Udiaeresis ]}; + key <AD10> {[ p, P, aring, Aring ]}; + + include "level3(ralt_switch)" +}; diff --git a/test/data/types/extra b/test/data/types/extra index e7529f4..3f1e48d 100644 --- a/test/data/types/extra +++ b/test/data/types/extra @@ -1,4 +1,4 @@ -partial default xkb_types "default" { +default partial xkb_types "default" { // Defines a type with a four-level shift, similar to the three-level // type used for iso9995, but it lets the Shift key behave "normally". diff --git a/test/data/types/iso9995 b/test/data/types/iso9995 index d3c4e0b..137a522 100644 --- a/test/data/types/iso9995 +++ b/test/data/types/iso9995 @@ -1,4 +1,4 @@ -partial default xkb_types "default" { +default partial xkb_types "default" { // A key type which can be used to implement // an ISO9995-style level-three shift. diff --git a/test/data/types/level5 b/test/data/types/level5 index 0570725..19d1552 100644 --- a/test/data/types/level5 +++ b/test/data/types/level5 @@ -1,4 +1,4 @@ -partial default xkb_types "default" { +default partial xkb_types "default" { // Defines a type with an eight-level shift, similar to the three-level // type used for iso9995, but it lets the Shift key behave "normally". diff --git a/test/data/types/mousekeys b/test/data/types/mousekeys index 901848a..0bf8384 100644 --- a/test/data/types/mousekeys +++ b/test/data/types/mousekeys @@ -1,4 +1,4 @@ -partial default xkb_types "default" { +default partial xkb_types "default" { virtual_modifiers Alt; type "SHIFT+ALT" { diff --git a/test/data/types/numpad b/test/data/types/numpad index 5861f11..01723e9 100644 --- a/test/data/types/numpad +++ b/test/data/types/numpad @@ -1,4 +1,4 @@ -partial default xkb_types "pc" { +default partial xkb_types "pc" { type "KEYPAD" { modifiers = Shift+NumLock; map[None] = Level1; diff --git a/test/data/types/pc b/test/data/types/pc index 404e3c9..a980664 100644 --- a/test/data/types/pc +++ b/test/data/types/pc @@ -1,4 +1,4 @@ -partial default xkb_types "default" { +default partial xkb_types "default" { // Some types that are necessary // for a full implementation of diff --git a/test/registry.c b/test/registry.c index fc5f6da..fab3b69 100644 --- a/test/registry.c +++ b/test/registry.c @@ -24,6 +24,9 @@ #include "config.h" #include <assert.h> +#if HAVE_UNISTD_H +#include <unistd.h> +#endif #include <stdarg.h> #include <stdio.h> #include <sys/stat.h> diff --git a/test/state.c b/test/state.c index 3ec7c66..08832f9 100644 --- a/test/state.c +++ b/test/state.c @@ -514,7 +514,7 @@ test_range(struct xkb_keymap *keymap) xkb_keycode_t counter; assert(xkb_keymap_min_keycode(keymap) == 9); - assert(xkb_keymap_max_keycode(keymap) == 253); + assert(xkb_keymap_max_keycode(keymap) == 569); counter = xkb_keymap_min_keycode(keymap); xkb_keymap_key_for_each(keymap, key_iter, &counter); diff --git a/test/tool-option-parsing.py b/test/tool-option-parsing.py index de638d1..a2072b3 100755 --- a/test/tool-option-parsing.py +++ b/test/tool-option-parsing.py @@ -28,15 +28,11 @@ import sys import subprocess import logging import tempfile - -try: - import pytest -except ImportError: - print('Failed to import pytest. Skipping.', file=sys.stderr) - sys.exit(77) +import unittest top_builddir = os.environ['top_builddir'] +top_srcdir = os.environ['top_srcdir'] logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('test') @@ -45,7 +41,7 @@ logger.setLevel(logging.DEBUG) # Permutation of RMLVO that we use in multiple tests rmlvos = [list(x) for x in itertools.permutations( ['--rules=evdev', '--model=pc104', - '--layout=fr', '--options=eurosign:5'] + '--layout=ch', '--options=eurosign:5'] )] @@ -69,11 +65,15 @@ class XkbcliTool: xkbcli_tool = 'xkbcli' subtool = None - def __init__(self, subtool=None): + def __init__(self, subtool=None, skipIf=()): self.tool_path = top_builddir self.subtool = subtool + self.skipIf = skipIf def run_command(self, args): + for condition, reason in self.skipIf: + if condition: + raise unittest.SkipTest(reason) if self.subtool is not None: tool = '{}-{}'.format(self.xkbcli_tool, self.subtool) else: @@ -104,209 +104,187 @@ class XkbcliTool: assert stdout.startswith('Usage') or stdout == '' assert 'requires an argument' in stderr - -def get_tool(subtool=None): - return XkbcliTool(subtool) - - -def get_all_tools(): - return [get_tool(x) for x in [None, 'list', - 'compile-keymap', - 'how-to-type', - 'interactive-evdev', - 'interactive-wayland', - 'interactive-x11']] - - -@pytest.fixture -def xkbcli(): - return get_tool() - - -@pytest.fixture -def xkbcli_list(): - return get_tool('list') - - -@pytest.fixture -def xkbcli_how_to_type(): - return get_tool('how-to-type') - - -@pytest.fixture -def xkbcli_compile_keymap(): - return get_tool('compile-keymap') - - -@pytest.fixture -def xkbcli_interactive_evdev(): - return get_tool('interactive-evdev') - - -@pytest.fixture -def xkbcli_interactive_x11(): - return get_tool('interactive-x11') - - -@pytest.fixture -def xkbcli_interactive_wayland(): - return get_tool('interactive-wayland') - - -# --help is supported by all tools -@pytest.mark.parametrize('tool', get_all_tools()) -def test_help(tool): - stdout, stderr = tool.run_command_success(['--help']) - assert stdout.startswith('Usage:') - assert stderr == '' - - -# --foobar generates "Usage:" for all tools -@pytest.mark.parametrize('tool', get_all_tools()) -def test_invalid_option(tool): - tool.run_command_unrecognized_option(['--foobar']) - - -# xkbcli --version -def test_xkbcli_version(xkbcli): - stdout, stderr = xkbcli.run_command_success(['--version']) - assert stdout.startswith('0') - assert stderr == '' - - -def test_xkbcli_too_many_args(xkbcli): - xkbcli.run_command_invalid(['a'] * 64) - - -@pytest.mark.parametrize('args', [['--verbose'], - ['--rmlvo'], - # ['--kccgst'], - ['--verbose', '--rmlvo'], - # ['--verbose', '--kccgst'], - ]) -def test_compile_keymap_args(xkbcli_compile_keymap, args): - xkbcli_compile_keymap.run_command_success(args) - - -@pytest.mark.parametrize('rmlvos', rmlvos) -def test_compile_keymap_rmlvo(xkbcli_compile_keymap, rmlvos): - xkbcli_compile_keymap.run_command_success(rmlvos) - - -@pytest.mark.parametrize('args', [['--include', '.', '--include-defaults'], - ['--include', '/tmp', '--include-defaults'], - ]) -def test_compile_keymap_include(xkbcli_compile_keymap, args): - # Succeeds thanks to include-defaults - xkbcli_compile_keymap.run_command_success(args) - - -def test_compile_keymap_include_invalid(xkbcli_compile_keymap): - # A non-directory is rejected by default - args = ['--include', '/proc/version'] - rc, stdout, stderr = xkbcli_compile_keymap.run_command(args) - assert rc == 1, (stdout, stderr) - assert "There are no include paths to search" in stderr - - # A non-existing directory is rejected by default - args = ['--include', '/tmp/does/not/exist'] - rc, stdout, stderr = xkbcli_compile_keymap.run_command(args) - assert rc == 1, (stdout, stderr) - assert "There are no include paths to search" in stderr - - # Valid dir, but missing files - args = ['--include', '/tmp'] - rc, stdout, stderr = xkbcli_compile_keymap.run_command(args) - assert rc == 1, (stdout, stderr) - assert "Couldn't look up rules" in stderr - - -# Unicode codepoint conversions, we support whatever strtol does -@pytest.mark.parametrize('args', [['123'], ['0x123'], ['0123']]) -def test_how_to_type(xkbcli_how_to_type, args): - xkbcli_how_to_type.run_command_success(args) - - -@pytest.mark.parametrize('rmlvos', rmlvos) -def test_how_to_type_rmlvo(xkbcli_how_to_type, rmlvos): - args = rmlvos + ['0x1234'] - xkbcli_how_to_type.run_command_success(args) - - -@pytest.mark.parametrize('args', [['--verbose'], - ['-v'], - ['--verbose', '--load-exotic'], - ['--load-exotic'], - ['--ruleset=evdev'], - ['--ruleset=base'], - ]) -def test_list_rmlvo(xkbcli_list, args): - xkbcli_list.run_command_success(args) - - -def test_list_rmlvo_includes(xkbcli_list): - args = ['/tmp/'] - xkbcli_list.run_command_success(args) - - -def test_list_rmlvo_includes_invalid(xkbcli_list): - args = ['/proc/version'] - rc, stdout, stderr = xkbcli_list.run_command(args) - assert rc == 1 - assert "Failed to append include path" in stderr - - -def test_list_rmlvo_includes_no_defaults(xkbcli_list): - args = ['--skip-default-paths', '/tmp'] - rc, stdout, stderr = xkbcli_list.run_command(args) - assert rc == 1 - assert "Failed to parse XKB description" in stderr - - -@pytest.mark.skipif(not os.path.exists('/dev/input/event0'), reason='event node required') -@pytest.mark.skipif(not os.access('/dev/input/event0', os.R_OK), reason='insufficient permissions') -@pytest.mark.parametrize('rmlvos', rmlvos) -def test_interactive_evdev_rmlvo(xkbcli_interactive_evdev, rmlvos): - return - xkbcli_interactive_evdev.run_command_success(rmlvos) - - -@pytest.mark.skipif(not os.path.exists('/dev/input/event0'), - reason='event node required') -@pytest.mark.skipif(not os.access('/dev/input/event0', os.R_OK), - reason='insufficient permissions') -@pytest.mark.parametrize('args', [['--report-state-changes'], - ['--enable-compose'], - ['--consumed-mode=xkb'], - ['--consumed-mode=gtk'], - ['--without-x11-offset'], - ]) -def test_interactive_evdev(xkbcli_interactive_evdev, args): - # Note: --enable-compose fails if $prefix doesn't have the compose tables - # installed - xkbcli_interactive_evdev.run_command_success(args) - - -@pytest.mark.skipif(not os.getenv('DISPLAY'), reason='DISPLAY not set') -def test_interactive_x11(xkbcli_interactive_x11): - # To be filled in if we handle something other than --help - pass - - -@pytest.mark.skipif(not os.getenv('WAYLAND_DISPLAY'), - reason='WAYLAND_DISPLAY not set') -def test_interactive_wayland(xkbcli_interactive_wayland): - # To be filled in if we handle something other than --help - pass + def __str__(self): + return str(self.subtool) + + +class TestXkbcli(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.xkbcli = XkbcliTool() + cls.xkbcli_list = XkbcliTool('list', skipIf=( + (not int(os.getenv('HAVE_XKBCLI_LIST', '1')), 'xkbregistory not enabled'), + )) + cls.xkbcli_how_to_type = XkbcliTool('how-to-type') + cls.xkbcli_compile_keymap = XkbcliTool('compile-keymap') + cls.xkbcli_interactive_evdev = XkbcliTool('interactive-evdev', skipIf=( + (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'), + )) + 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'), + )) + cls.xkbcli_interactive_wayland = XkbcliTool('interactive-wayland', skipIf=( + (not int(os.getenv('HAVE_XKBCLI_INTERACTIVE_WAYLAND', '1')), 'wayland not enabled'), + (not os.getenv('WAYLAND_DISPLAY'), 'WAYLAND_DISPLAY not set'), + )) + cls.all_tools = [ + cls.xkbcli, + cls.xkbcli_list, + cls.xkbcli_how_to_type, + cls.xkbcli_compile_keymap, + cls.xkbcli_interactive_evdev, + cls.xkbcli_interactive_x11, + cls.xkbcli_interactive_wayland, + ] + + def test_help(self): + # --help is supported by all tools + for tool in self.all_tools: + with self.subTest(tool=tool): + stdout, stderr = tool.run_command_success(['--help']) + assert stdout.startswith('Usage:') + assert stderr == '' + + def test_invalid_option(self): + # --foobar generates "Usage:" for all tools + for tool in self.all_tools: + with self.subTest(tool=tool): + tool.run_command_unrecognized_option(['--foobar']) + + def test_xkbcli_version(self): + # xkbcli --version + stdout, stderr = self.xkbcli.run_command_success(['--version']) + assert stdout.startswith('1') + assert stderr == '' + + def test_xkbcli_too_many_args(self): + self.xkbcli.run_command_invalid(['a'] * 64) + + def test_compile_keymap_args(self): + for args in ( + ['--verbose'], + ['--rmlvo'], + # ['--kccgst'], + ['--verbose', '--rmlvo'], + # ['--verbose', '--kccgst'], + ): + with self.subTest(args=args): + self.xkbcli_compile_keymap.run_command_success(args) + + def test_compile_keymap_rmlvo(self): + for rmlvo in rmlvos: + with self.subTest(rmlvo=rmlvo): + self.xkbcli_compile_keymap.run_command_success(rmlvo) + + def test_compile_keymap_include(self): + for args in ( + ['--include', '.', '--include-defaults'], + ['--include', '/tmp', '--include-defaults'], + ): + with self.subTest(args=args): + # Succeeds thanks to include-defaults + self.xkbcli_compile_keymap.run_command_success(args) + + def test_compile_keymap_include_invalid(self): + # A non-directory is rejected by default + args = ['--include', '/proc/version'] + rc, stdout, stderr = self.xkbcli_compile_keymap.run_command(args) + assert rc == 1, (stdout, stderr) + assert "There are no include paths to search" in stderr + + # A non-existing directory is rejected by default + args = ['--include', '/tmp/does/not/exist'] + rc, stdout, stderr = self.xkbcli_compile_keymap.run_command(args) + assert rc == 1, (stdout, stderr) + assert "There are no include paths to search" in stderr + + # Valid dir, but missing files + args = ['--include', '/tmp'] + rc, stdout, stderr = self.xkbcli_compile_keymap.run_command(args) + assert rc == 1, (stdout, stderr) + assert "Couldn't look up rules" in stderr + + def test_how_to_type(self): + # Unicode codepoint conversions, we support whatever strtol does + for args in (['123'], ['0x123'], ['0123']): + with self.subTest(args=args): + self.xkbcli_how_to_type.run_command_success(args) + + def test_how_to_type_rmlvo(self): + for rmlvo in rmlvos: + with self.subTest(rmlvo=rmlvo): + args = rmlvo + ['0x1234'] + self.xkbcli_how_to_type.run_command_success(args) + + def test_list_rmlvo(self): + for args in ( + ['--verbose'], + ['-v'], + ['--verbose', '--load-exotic'], + ['--load-exotic'], + ['--ruleset=evdev'], + ['--ruleset=base'], + ): + with self.subTest(args=args): + self.xkbcli_list.run_command_success(args) + + def test_list_rmlvo_includes(self): + args = ['/tmp/'] + self.xkbcli_list.run_command_success(args) + + def test_list_rmlvo_includes_invalid(self): + args = ['/proc/version'] + rc, stdout, stderr = self.xkbcli_list.run_command(args) + assert rc == 1 + assert "Failed to append include path" in stderr + + def test_list_rmlvo_includes_no_defaults(self): + args = ['--skip-default-paths', '/tmp'] + rc, stdout, stderr = self.xkbcli_list.run_command(args) + assert rc == 1 + assert "Failed to parse XKB description" in stderr + + def test_interactive_evdev_rmlvo(self): + for rmlvo in rmlvos: + with self.subTest(rmlvo=rmlvo): + self.xkbcli_interactive_evdev.run_command_success(rmlvos) + + def test_interactive_evdev(self): + # Note: --enable-compose fails if $prefix doesn't have the compose tables + # installed + for args in ( + ['--report-state-changes'], + ['--enable-compose'], + ['--consumed-mode=xkb'], + ['--consumed-mode=gtk'], + ['--without-x11-offset'], + ): + with self.subTest(args=args): + self.xkbcli_interactive_evdev.run_command_success(args) + + def test_interactive_x11(self): + # To be filled in if we handle something other than --help + pass + + def test_interactive_wayland(self): + # To be filled in if we handle something other than --help + pass if __name__ == '__main__': with tempfile.TemporaryDirectory() as tmpdir: + # Use our own test xkeyboard-config copy. + os.environ['XKB_CONFIG_ROOT'] = top_srcdir + '/test/data' # 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. os.environ['XDG_CONFIG_HOME'] = tmpdir + # Prevent the legacy $HOME/.xkb from kicking in. + del os.environ['HOME'] # This needs to be separated if we do specific extra path testing os.environ['XKB_CONFIG_EXTRA_PATH'] = tmpdir - sys.exit(pytest.main(args=[__file__])) + unittest.main() diff --git a/tools/how-to-type.c b/tools/how-to-type.c index 903a3ed..0a6f79e 100644 --- a/tools/how-to-type.c +++ b/tools/how-to-type.c @@ -38,7 +38,6 @@ usage(const char *argv0, FILE *fp) fprintf(fp, "Usage: %s [--rules <rules>] [--model <model>] " "[--layout <layout>] [--variant <variant>] [--options <options>]" " <unicode codepoint>\n", argv0); - fprintf(fp, "Pipe into `column -ts $'\\t'` for nicely aligned output.\n"); } int @@ -155,7 +154,8 @@ main(int argc, char *argv[]) } printf("keysym: %s (%#x)\n", name, keysym); - printf("KEYCODE\tKEY NAME\tLAYOUT#\tLAYOUT NAME\tLEVEL#\tMODIFIERS\n"); + printf("%-8s %-9s %-8s %-20s %-7s %-s\n", + "KEYCODE", "KEY NAME", "LAYOUT", "LAYOUT NAME", "LEVEL#", "MODIFIERS"); min_keycode = xkb_keymap_min_keycode(keymap); max_keycode = xkb_keymap_max_keycode(keymap); @@ -202,7 +202,7 @@ main(int argc, char *argv[]) for (size_t i = 0; i < num_masks; i++) { xkb_mod_mask_t mask = masks[i]; - printf("%u\t%s\t%u\t%s\t%u\t[ ", + printf("%-8u %-9s %-8u %-20s %-7u [ ", keycode, key_name, layout + 1, layout_name, level + 1); for (xkb_mod_index_t mod = 0; mod < num_mods; mod++) { if ((mask & (1 << mod)) == 0) { diff --git a/tools/xkbcli-how-to-type.1 b/tools/xkbcli-how-to-type.1 index a697e20..5211d0f 100644 --- a/tools/xkbcli-how-to-type.1 +++ b/tools/xkbcli-how-to-type.1 @@ -13,11 +13,8 @@ . .Sh DESCRIPTION .Nm -prints key sequences to type the given Unicode codepoint. -.Pp -Pipe into -.Dq "column \-ts $\'\e\et\'" -for nicely aligned output. +prints the key combinations (keycode + modifiers) in the keymap's layouts which +would produce the given Unicode codepoint. . .Bl -tag -width Ds .It Fl \-rules Ar rules diff --git a/xkbcommon-x11.pc.in b/xkbcommon-x11.pc.in deleted file mode 100644 index c4efc43..0000000 --- a/xkbcommon-x11.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: xkbcommon-x11 -Description: XKB API common to servers and clients - X11 support -Version: @PACKAGE_VERSION@ -Requires: xkbcommon -Requires.private: xcb xcb-xkb -Cflags: -I${includedir} -Libs: -L${libdir} -lxkbcommon-x11 diff --git a/xkbcommon.pc.in b/xkbcommon.pc.in deleted file mode 100644 index 17e1172..0000000 --- a/xkbcommon.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: xkbcommon -Description: XKB API common to servers and clients -Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} -Libs: -L${libdir} -lxkbcommon |