From 44a37d780cd0417a1eabbd9e700f5243fcfe42d3 Mon Sep 17 00:00:00 2001 From: Haibo Huang Date: Wed, 28 Oct 2020 22:25:54 -0700 Subject: Upgrade libxkbcommon to xkbcommon-1.0.1 1. Run meson build locally: meson config -Denable-x11=false -Denable-wayland=false -Denable-docs=false 2. Copy over generated parser.h / parser.c 3. Copy over config.h 4. Remove #defines for missing functions Test: make Change-Id: I3911b932c4d63930118c7e0300b299788c0b3d00 --- .github/workflows/main.yml | 4 +- METADATA | 8 +- NEWS | 11 + config.h | 61 + meson.build | 268 +- src/config.h | 59 - src/registry.c | 1 + src/utils.h | 2 +- src/xkbcomp/.gitignore | 0 src/xkbcomp/parser.c | 1089 ++--- src/xkbcomp/parser.h | 10 +- src/xkbcomp/parser.y | 2 +- test/data/keycodes/evdev | 12 +- test/data/keymaps/quartz.xkb | 2 +- test/data/rules/base | 589 +-- test/data/rules/base.extras.xml | 1354 ++++++ test/data/rules/base.xml | 7705 ++++++++++++++++++++++++++++++++ test/data/rules/evdev | 586 +-- test/data/rules/evdev.extras.xml | 1354 ++++++ test/data/rules/evdev.xml | 7705 ++++++++++++++++++++++++++++++++ test/data/rules/xkb.dtd | 58 + test/data/symbols/altwin | 6 + test/data/symbols/ca | 8 +- test/data/symbols/capslock | 9 + test/data/symbols/ch | 8 +- test/data/symbols/ctrl | 19 + test/data/symbols/cz | 232 +- test/data/symbols/de | 65 +- test/data/symbols/empty | 2 +- test/data/symbols/il | 2 +- test/data/symbols/in | 252 +- test/data/symbols/inet | 50 +- test/data/symbols/latin | 2 +- test/data/symbols/level3 | 20 +- test/data/symbols/macintosh_vndr/apple | 2 +- test/data/symbols/pc | 2 +- test/data/symbols/ru | 281 +- test/data/symbols/terminate | 2 +- test/data/symbols/us | 335 +- test/data/types/extra | 2 +- test/data/types/iso9995 | 2 +- test/data/types/level5 | 2 +- test/data/types/mousekeys | 2 +- test/data/types/numpad | 2 +- test/data/types/pc | 2 +- test/registry.c | 3 + test/state.c | 2 +- test/tool-option-parsing.py | 384 +- tools/how-to-type.c | 6 +- tools/xkbcli-how-to-type.1 | 7 +- xkbcommon-x11.pc.in | 12 - xkbcommon.pc.in | 10 - 52 files changed, 20697 insertions(+), 1916 deletions(-) create mode 100644 config.h delete mode 100644 src/config.h create mode 100644 src/xkbcomp/.gitignore create mode 100644 test/data/rules/base.extras.xml create mode 100644 test/data/rules/base.xml create mode 100644 test/data/rules/evdev.extras.xml create mode 100644 test/data/rules/evdev.xml create mode 100644 test/data/rules/xkb.dtd delete mode 100644 xkbcommon-x11.pc.in delete mode 100644 xkbcommon.pc.in 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 diff --git a/METADATA b/METADATA index 38787f6..ffa117d 100644 --- a/METADATA +++ b/METADATA @@ -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 } } diff --git a/NEWS b/NEWS index 2e7d7bb..fee6a59 100644 --- a/NEWS +++ b/NEWS @@ -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 ================== diff --git a/config.h b/config.h new file mode 100644 index 0000000..145bce1 --- /dev/null +++ b/config.h @@ -0,0 +1,61 @@ +/* + * Autogenerated by the Meson build system. + * Do not edit, your changes will be lost. + */ + +#pragma once + +#define DEFAULT_XKB_LAYOUT "us" + +#define DEFAULT_XKB_MODEL "pc105" + +#define DEFAULT_XKB_OPTIONS NULL + +#define DEFAULT_XKB_RULES "evdev" + +#define DEFAULT_XKB_VARIANT NULL + +#define DFLT_XKB_CONFIG_EXTRA_PATH "/usr/local/etc/xkb" + +#define DFLT_XKB_CONFIG_ROOT "/usr/share/X11/xkb" + +#define EXIT_INVALID_USAGE 2 + +#define HAVE_ASPRINTF 1 + +#define HAVE_MKOSTEMP 1 + +#define HAVE_MMAP 1 + +#define HAVE_POSIX_FALLOCATE 1 + +#define HAVE_STRNDUP 1 + +#define HAVE_UNISTD_H 1 + +#define HAVE_XKBCLI_COMPILE_KEYMAP 1 + +#define HAVE_XKBCLI_HOW_TO_TYPE 1 + +#define HAVE_XKBCLI_INTERACTIVE_EVDEV 1 + +#define HAVE_XKBCLI_LIST 1 + +#define HAVE___BUILTIN_EXPECT 1 + +#define LIBXKBCOMMON_TOOL_PATH "/usr/local/libexec/xkbcommon" + +#define LIBXKBCOMMON_VERSION "1.0.1" + +#define WIN32_LEAN_AND_MEAN 1 + +#define XLOCALEDIR "/usr/local/share/X11/locale" + +#define _CRT_NONSTDC_NO_DEPRECATE 1 + +#define _CRT_NONSTDC_NO_WARNINGS 1 + +#define _CRT_SECURE_NO_WARNINGS 1 + +#define _GNU_SOURCE 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/config.h b/src/config.h deleted file mode 100644 index 4edf0e9..0000000 --- a/src/config.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Autogenerated by the Meson build system. - * Do not edit, your changes will be lost. - */ - -#pragma once - -#define DEFAULT_XKB_LAYOUT "us" - -#define DEFAULT_XKB_MODEL "pc105" - -#define DEFAULT_XKB_OPTIONS NULL - -#define DEFAULT_XKB_RULES "evdev" - -#define DEFAULT_XKB_VARIANT NULL - -#define DFLT_XKB_CONFIG_EXTRA_PATH "/usr/local/etc/xkb" - -#define DFLT_XKB_CONFIG_ROOT "/usr/share/X11/xkb" - -#define EXIT_INVALID_USAGE 2 - -#define HAVE_ASPRINTF 1 - -#define HAVE_MKOSTEMP 1 - -#define HAVE_MMAP 1 - -#define HAVE_POSIX_FALLOCATE 1 - -#define HAVE_STRNDUP 1 - -#define HAVE_XKBCLI_COMPILE_KEYMAP 1 - -#define HAVE_XKBCLI_HOW_TO_TYPE 1 - -#define HAVE_XKBCLI_INTERACTIVE_EVDEV 1 - -#define HAVE_XKBCLI_LIST 1 - -#define HAVE___BUILTIN_EXPECT 1 - -#define LIBXKBCOMMON_TOOL_PATH "/usr/local/libexec/xkbcommon" - -#define LIBXKBCOMMON_VERSION "1.0.0" - -#define WIN32_LEAN_AND_MEAN 1 - -#define XLOCALEDIR "/usr/local/share/X11/locale" - -#define _CRT_NONSTDC_NO_DEPRECATE 1 - -#define _CRT_NONSTDC_NO_WARNINGS 1 - -#define _CRT_SECURE_NO_WARNINGS 1 - -#define _GNU_SOURCE 1 - 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 #include #include -#if defined(HAVE_EACCESS) || defined(HAVE_EUIDACCESS) +#if HAVE_UNISTD_H #include #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 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" { = 251; // #define KEY_BRIGHTNESS_CYCLE 243 = 252; // #define KEY_BRIGHTNESS_ZERO 244 = 253; // #define KEY_DISPLAY_OFF 245 + = 254; // #define KEY_WWAN 246 + = 255; // #define KEY_RFKILL 247 + + = 372; // #define KEY_FAVORITES 364 + = 382; // #define KEY_KEYBOARD 374 + = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561 + = 380; // #define KEY_FULL_SCREEN 372 // Fake keycodes for virtual keys = 92; @@ -307,8 +314,3 @@ default xkb_keycodes "evdev" { // For Brazilian ABNT2 alias = ; }; - -// 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 @@ + + + + + + + + apl + apl + APL + + eng + + + + + + dyalog + dlg + APL symbols (Dyalog APL) + + + + + sax + sax + APL symbols (SAX, Sharp APL for Unix) + + + + + unified + ufd + APL symbols (unified) + + + + + apl2 + apl2 + APL symbols (IBM APL2) + + + + + aplplusII + aplII + APL symbols (Manugistics APL*PLUS II) + + + + + aplx + aplx + APL symbols (APLX unified) + + + + + + + ca + fr + French (Canada) + + fra + + + + + + kut + kut + Kutenai + + + + + shs + shs + Secwepemctsin + + + + + sun_type6 + Multilingual (Canada, Sun Type 6/7) + + + + + + + de + de + German + + ger + + + + + + us + German (US) + + eng + + + + + + hu + German (with Hungarian letters, no dead keys) + + ger + hun + + + + + + pl + Polish (Germany, no dead keys) + + ger + pol + + + + + + sun_type6 + German (Sun Type 6/7) + + + + + adnw + German (Aus der Neo-Welt) + + + + + koy + German (KOY) + + + + + bone + German (Bone) + + + + + bone_eszett_home + German (Bone, eszett in the home row) + + + + + neo_qwertz + German (Neo, QWERTZ) + + + + + neo_qwerty + German (Neo, QWERTY) + + + + + ru-recom + + ru + Russian (Germany, recommended) + + rus + + + + + + ru-translit + + ru + Russian (Germany, transliteration) + + rus + + + + + + lld + de_lld + German (Ladin) + + ger + lld + + + + + + + + eg + ⲕⲏⲙⲉ + Coptic + + cop + egy + + + + + + hu + Hungarian + + + + + oldhun + oldhun + Old Hungarian + + + + + ohu_lig + ohu_lig + Old Hungarian (for ligatures) + + + + + + + + ir + fa + Persian + + per + + + + + + ave + Avestan + + ave + + + + + + + + lt + lt + Lithuanian + + lit + + + + + + us_dvorak + Lithuanian (Dvorak) + + + + + sun_type6 + Lithuanian (Sun Type 6/7) + + + + + + + lv + lv + Latvian + + lav + + + + + + dvorak + Latvian (Dvorak) + + + + + ykeydvorak + Latvian (Dvorak, with Y) + + + + + minuskeydvorak + Latvian (Dvorak, with minus) + + + + + dvorakprogr + Latvian (programmer Dvorak) + + + + + ykeydvorakprogr + Latvian (programmer Dvorak, with Y) + + + + + minuskeydvorakprogr + Latvian (programmer Dvorak, with minus) + + + + + colemak + Latvian (Colemak) + + + + + apostrophecolemak + Latvian (Colemak, with apostrophe) + + + + + sun_type6 + Latvian (Sun Type 6/7) + + + + + + + us + en + English (US) + + eng + + + + + + intl-unicode + English (US, intl., AltGr Unicode combining) + + + + + alt-intl-unicode + English (US, intl., AltGr Unicode combining, alt.) + + + + + ats + Atsina + + + + + + crd + Coeur d'Alene Salish + + crd + + + + + + cz_sk_de + Czech Slovak and German (US) + + eng + cze + slo + ger + + + + + + drix + English (Drix) + + + + + de_se_fi + German, Swedish and Finnish (US) + + eng + ger + swe + fin + + + + + + ibm238l + English (US, IBM Arabic 238_L) + + + + + sun_type6 + English (US, Sun Type 6/7) + + + + + carpalx + English (Carpalx) + + + + + carpalx-intl + English (Carpalx, intl., with dead keys) + + + + + carpalx-altgr-intl + English (Carpalx, intl., with AltGr dead keys) + + + + + carpalx-full + English (Carpalx, full optimization) + + + + + carpalx-full-intl + English (Carpalx, full optimization, intl., with dead keys) + + + + + carpalx-full-altgr-intl + English (Carpalx, full optimization, intl., with AltGr dead keys) + + + + + 3l + English (3l) + + + + + 3l-cros + English (3l, Chromebook) + + + + + 3l-emacs + English (3l, emacs) + + + + + scn + Sicilian (US keyboard) + + eng + ita + scn + + + + + + + + pl + pl + Polish + + pol + + + + + + intl + Polish (intl., with dead keys) + + + + + colemak + Polish (Colemak) + + + + + sun_type6 + Polish (Sun Type 6/7) + + + + + glagolica + Polish (Glagolica) + + + + + + + ro + ro + Romanian + + rum + + + + + + crh_dobruja + crh + Crimean Tatar (Dobruja Q) + + crh + + + + + + ergonomic + Romanian (ergonomic Touchtype) + + + + + sun_type6 + Romanian (Sun Type 6/7) + + + + + + + rs + sr + Serbian + + srp + + + + + + combiningkeys + Serbian (combining accents instead of dead keys) + + + + + + + ru + ru + Russian + + + + + chu + Church Slavonic + + chu + + + + + + ruu + ru + Russian (with Ukrainian-Belorussian layout) + + rus + ukr + bel + + + + + + rulemak + Russian (Rulemak, phonetic Colemak) + + + + + phonetic_mac + Russian (phonetic Macintosh) + + + + + sun_type6 + Russian (Sun Type 6/7) + + + + + unipunct + Russian (with US punctuation) + + + + + prxn + ru + Russian (Polyglot and Reactionary) + + RU + RS + BA + ME + MK + BG + MD + UA + BY + KZ + MN + KG + TJ + UZ + TM + AZ + + + rus + rus-petr1708 + ukr + bel + srp + mkd + bul + chu + rum-Cyrl + kaz + kir + uzb + bak + aze + tat + uig + kdr + tyv + kjh + crh + tgk + abk + sah + mon + kal + sjd + chv + oss + krl + ale + wbl + kur + niv + dng + kom + udm + sel + ulc + ude + oac + oaa + gld + eve + evn + kca + itl + yrk + neg + + + + + + + + am + hy + Armenian + + hye + + + + + + olpc-phonetic + Armenian (OLPC, phonetic) + + + + + + + il + he + Hebrew + + heb + + + + + + biblicalSIL + Hebrew (Biblical, SIL phonetic) + + heb + + + + + + + + ara + ar + Arabic + + + + + sun_type6 + Arabic (Sun Type 6/7) + + + + + basic_ext + Arabic (Arabic numerals, extensions in the 4th level) + + + + + basic_ext_digits + Arabic (Eastern Arabic numerals, extensions in the 4th level) + + + + + uga + Ugaritic instead of Arabic + + + + + + + be + be + Belgian + + + + + sun_type6 + Belgian (Sun Type 6/7) + + + + + + + br + pt + Portuguese (Brazil) + + + + + sun_type6 + Portuguese (Brazil, Sun Type 6/7) + + + + + + + cz + cs + Czech + + + + + sun_type6 + Czech (Sun Type 6/7) + + + + + prog + Czech (programming) + + + + + typo + Czech (typographic) + + + + + coder + Czech (coder) + + + + + prog_typo + Czech (programming, typographic) + + + + + + + dk + da + Danish + + + + + sun_type6 + Danish (Sun Type 6/7) + + + + + + + nl + nl + Dutch + + + + + sun_type6 + Dutch (Sun Type 6/7) + + + + + + + ee + et + Estonian + + + + + sun_type6 + Estonian (Sun Type 6/7) + + + + + + + fi + fi + Finnish + + + + + sun_type6 + Finnish (Sun Type 6/7) + + + + + das + Finnish (DAS) + + + + + fidvorak + Finnish (Dvorak) + + + + + + + fr + fr + French + + + + + sun_type6 + French (Sun Type 6/7) + + + + + us-alt + French (US with dead keys, alt.) + + + + + us-azerty + French (US, AZERTY) + + + + + + + gr + gr + Greek + + + + + sun_type6 + Greek (Sun Type 6/7) + + + + + colemak + Greek (Colemak) + + + + + + + it + it + Italian + + + + + sun_type6 + Italian (Sun Type 6/7) + + + + + lld + it_lld + Italian (Ladin) + + it + lld + + + + + + + + jp + ja + Japanese + + + + + sun_type6 + Japanese (Sun Type 6) + + + + + sun_type7 + Japanese (Sun Type 7, PC-compatible) + + + + + sun_type7_suncompat + Japanese (Sun Type 7, Sun-compatible) + + + + + + + no + no + Norwegian + + + + + sun_type6 + Norwegian (Sun Type 6/7) + + + + + + + pt + pt + Portuguese + + + + + sun_type6 + Portuguese (Sun Type 6/7) + + + + + + + pt + pt + Portuguese + + + + + colemak + Portuguese (Colemak) + + + + + + + sk + sk + Slovak + + + + + acc + Slovak (ACC layout, only accented letters) + + + + + sun_type6 + Slovak (Sun Type 6/7) + + + + + + + es + es + Spanish + + + + + sun_type6 + Spanish (Sun Type 6/7) + + + + + + + se + sv + Swedish + + + + + dvorak_a5 + Swedish (Dvorak A5) + + + + + sun_type6 + Swedish (Sun Type 6/7) + + + + + ovd + Elfdalian (Swedish, with combining ogonek) + + ovd + + + + + + + + ch + de + German (Switzerland) + + + + + sun_type6_de + German (Switzerland, Sun Type 6/7) + + + + + sun_type6_fr + French (Switzerland, Sun Type 6/7) + + + + + + + tr + tr + Turkish + + + + + sun_type6 + Turkish (Sun Type 6/7) + + + + + + + ua + uk + Ukrainian + + + + + sun_type6 + Ukrainian (Sun Type 6/7) + + + + + + + gb + en + English (UK) + + + + + sun_type6 + English (UK, Sun Type 6/7) + + + + + + + kr + ko + Korean + + + + + sun_type6 + Korean (Sun Type 6/7) + + + + + + + vn + + vi + Vietnamese + + vie + + + + + + aderty + Vietnamese (AÐERTY) + + + + + qderty + Vietnamese (QĐERTY) + + + + + + + eu + + eu + EurKEY (US) + + cat + dan + eng + est + fao + fin + ger + gre + gsw + ita + lav + lit + nld + nor + por + spa + swe + + + + + + cm + cm + English (Cameroon) + + + + + mmuock + Mmuock + + + + + + + trans + + International Phonetic Alphabet + + + + + + in + + in + Indian + + + + + modi-kagapa + mr + Modi (KaGaPa phonetic) + + mar + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + parens + Parentheses position + + + + + 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 @@ + + + + + + + pc86 + Generic 86-key PC + Generic + + + + + pc101 + Generic 101-key PC + Generic + + + + + pc102 + Generic 102-key PC + Generic + + + + + pc104 + Generic 104-key PC + Generic + + + + + pc104alt + Generic 104-key PC with L-shaped Enter key + Generic + + + + + pc105 + Generic 105-key PC + Generic + + + + + dell101 + Dell 101-key PC + Dell + + + + + latitude + Dell Latitude laptop + Dell + + + + + dellm65 + Dell Precision M65 laptop + Dell + + + + + everex + Everex STEPnote + Everex + + + + + flexpro + Keytronic FlexPro + Keytronic + + + + + microsoft + Microsoft Natural + Microsoft + + + + + omnikey101 + Northgate OmniKey 101 + Northgate + + + + + winbook + Winbook Model XP5 + Generic + + + + + pc98 + PC-98 + Generic + + + + + a4techKB21 + A4Tech KB-21 + A4Tech + + + + + a4techKBS8 + A4Tech KBS-8 + A4Tech + + + + + a4_rfkb23 + A4Tech Wireless Desktop RFKB-23 + A4Tech + + + + + airkey + Acer AirKey V + Acer + + + + + azonaRF2300 + Azona RF2300 wireless Internet + Azona + + + + + scorpius + Advance Scorpius KI + Scorpius + + + + + brother + Brother Internet + Brother + + + + + btc5113rf + BTC 5113RF Multimedia + BTC + + + + + btc5126t + BTC 5126T + BTC + + + + + btc6301urf + BTC 6301URF + BTC + + + + + btc9000 + BTC 9000 + BTC + + + + + btc9000a + BTC 9000A + BTC + + + + + btc9001ah + BTC 9001AH + BTC + + + + + btc5090 + BTC 5090 + BTC + + + + + btc9019u + BTC 9019U + BTC + + + + + btc9116u + BTC 9116U Mini Wireless Internet and Gaming + + + + + cherryblue + Cherry Blue Line CyBo@rd + + + + + cherryblueb + Cherry CyMotion Master XPress + Cherry + + + + + cherrybluea + Cherry Blue Line CyBo@rd (alt.) + Cherry + + + + + cherrycyboard + Cherry CyBo@rd USB-Hub + Cherry + + + + + cherrycmexpert + Cherry CyMotion Expert + Cherry + + + + + cherrybunlim + Cherry B.UNLIMITED + Cherry + + + + + chicony + Chicony Internet + Chicony + + + + + chicony0108 + Chicony KU-0108 + Chicony + + + + + chicony0420 + Chicony KU-0420 + Chicony + + + + + chicony9885 + Chicony KB-9885 + Chicony + + + + + compaqeak8 + Compaq Easy Access + Compaq + + + + + compaqik7 + Compaq Internet (7 keys) + Compaq + + + + + compaqik13 + Compaq Internet (13 keys) + Compaq + + + + + compaqik18 + Compaq Internet (18 keys) + Compaq + + + + + cymotionlinux + Cherry CyMotion Master Linux + Cherry + + + + + armada + Compaq Armada laptop + Compaq + + + + + presario + Compaq Presario laptop + Compaq + + + + + ipaq + Compaq iPaq + Compaq + + + + + dell + Dell + Dell + + + + + dellsk8125 + Dell SK-8125 + Dell + + + + + dellsk8135 + Dell SK-8135 + Dell + + + + + dellusbmm + Dell USB Multimedia + Dell + + + + + inspiron + Dell Inspiron 6000/8000 laptop + Dell + + + + + precision_m + Dell Precision M laptop + Dell + + + + + dexxa + Dexxa Wireless Desktop + Dexxa + + + + + diamond + Diamond 9801/9802 + Diamond + + + + + dtk2000 + DTK2000 + + + + + ennyah_dkb1008 + Ennyah DKB-1008 + Ennyah + + + + + fscaa1667g + Fujitsu-Siemens Amilo laptop + Fujitsu-Siemens + + + + + genius + Genius Comfy KB-16M/Multimedia KWD-910 + Genius + + + + + geniuscomfy + Genius Comfy KB-12e + Genius + + + + + geniuscomfy2 + Genius Comfy KB-21e-Scroll + Genius + + + + + geniuskb19e + Genius KB-19e NB + Genius + + + + + geniuskkb2050hs + Genius KKB-2050HS + Genius + + + + + gyration + Gyration + Gyration + + + + + kinesis + Kinesis + Kinesis + + + + + logitech_base + Logitech + Logitech + + + + + logitech_g15 + Logitech G15 extra keys via G15daemon + Logitech + + + + + hpi6 + Hewlett-Packard Internet + Hewlett-Packard + + + + + hp250x + Hewlett-Packard NEC SK-2500 Multimedia + Hewlett-Packard + + + + + hpxe3gc + Hewlett-Packard Omnibook XE3 GC + Hewlett-Packard + + + + + hpxe3gf + Hewlett-Packard Omnibook XE3 GF + Hewlett-Packard + + + + + hpxt1000 + Hewlett-Packard Omnibook XT1000 + Hewlett-Packard + + + + + hpdv5 + Hewlett-Packard Pavilion dv5 + Hewlett-Packard + + + + + hpzt11xx + Hewlett-Packard Pavilion ZT1100 + Hewlett-Packard + + + + + hp500fa + Hewlett-Packard Omnibook 500 FA + Hewlett-Packard + + + + + hp5xx + Hewlett-Packard Omnibook 500 + Hewlett-Packard + + + + + hpnx9020 + Hewlett-Packard nx9020 + Hewlett-Packard + + + + + hp6000 + Hewlett-Packard Omnibook 6000/6100 + Hewlett-Packard + + + + + honeywell_euroboard + Honeywell Euroboard + Hewlett-Packard + + + + + hpmini110 + Hewlett-Packard Mini 110 laptop + Hewlett-Packard + + + + + rapidaccess + IBM Rapid Access + Lenovo (previously IBM) + + + + + rapidaccess2 + IBM Rapid Access II + Lenovo (previously IBM) + + + + + thinkpad + IBM ThinkPad 560Z/600/600E/A22E + Lenovo (previously IBM) + + + + + thinkpad60 + IBM ThinkPad R60/T60/R61/T61 + Lenovo (previously IBM) + + + + + thinkpadz60 + IBM ThinkPad Z60m/Z60t/Z61m/Z61t + Lenovo (previously IBM) + + + + + ibm_spacesaver + IBM Space Saver + Lenovo (previously IBM) + + + + + logiaccess + Logitech Access + Logitech + + + + + logiclx300 + Logitech Cordless Desktop LX-300 + Logitech + + + + + logii350 + Logitech Internet 350 + Logitech + 046d:c313 + + + + + logimel + Logitech Internet 350 + Logitech + + + + + logicd + Logitech Cordless Desktop + Logitech + + + + + logicd_it + Logitech Cordless Desktop iTouch + Logitech + + + + + logicd_nav + Logitech Cordless Desktop Navigator + Logitech + + + + + logicd_opt + Logitech Cordless Desktop Optical + Logitech + + + + + logicda + Logitech Cordless Desktop (alt.) + Logitech + + + + + logicdpa2 + Logitech Cordless Desktop Pro (2nd alt.) + Logitech + + + + + logicfn + Logitech Cordless Freedom/Desktop Navigator + Logitech + + + + + logicdn + Logitech Cordless Desktop Navigator + Logitech + + + + + logiitc + Logitech iTouch Cordless Y-RB6 + Logitech + + + + + logiik + Logitech Internet + Logitech + + + + + itouch + Logitech iTouch + Logitech + + + + + logicink + Logitech Internet Navigator + Logitech + + + + + logiex110 + Logitech Cordless Desktop EX110 + Logitech + + + + + logiinkse + Logitech iTouch Internet Navigator SE + Logitech + + + + + logiinkseusb + Logitech iTouch Internet Navigator SE USB + Logitech + + + + + logiultrax + Logitech Ultra-X + Logitech + + + + + logiultraxc + Logitech Ultra-X Cordless Media Desktop + Logitech + + + + + logidinovo + Logitech diNovo + Logitech + + + + + logidinovoedge + Logitech diNovo Edge + Logitech + + + + + mx1998 + Memorex MX1998 + Memorex + + + + + mx2500 + Memorex MX2500 EZ-Access + Memorex + + + + + mx2750 + Memorex MX2750 + Memorex + + + + + microsoft4000 + Microsoft Natural Ergonomic 4000 + Microsoft + + + + + microsoft7000 + Microsoft Natural Wireless Ergonomic 7000 + Microsoft + + + + + microsoftinet + Microsoft Internet + Microsoft + + + + + microsoftpro + Microsoft Natural Pro/Internet Pro + Microsoft + + + + + microsoftprousb + Microsoft Natural Pro USB/Internet Pro + Microsoft + + + + + microsoftprooem + Microsoft Natural Pro OEM + Microsoft + + + + + vsonku306 + ViewSonic KU-306 Internet + ViewSonic + + + + + microsoftprose + Microsoft Internet Pro (Swedish) + Microsoft + + + + + microsoftoffice + Microsoft Office Keyboard + Microsoft + + + + + microsoftmult + Microsoft Wireless Multimedia 1.0A + Microsoft + + + + + microsoftsurface + Microsoft Surface + Microsoft + + + + + microsoftelite + Microsoft Natural Elite + Microsoft + + + + + microsoftccurve2k + Microsoft Comfort Curve 2000 + Microsoft + + + + + oretec + Ortek Multimedia/Internet MCK-800 + Ortek + + + + + propeller + Propeller Voyager KTEZ-1000 + KeyTronic + + + + + qtronix + QTronix Scorpius 98N+ + QTronix + + + + + samsung4500 + Samsung SDM 4500P + Samsung + + + + + samsung4510 + Samsung SDM 4510P + Samsung + + + + + sanwaskbkg3 + Sanwa Supply SKB-KG3 + Sanwa Supply Inc. + + + + + sk1300 + NEC SK-1300 + NEC + + + + + sk2500 + NEC SK-2500 + NEC + + + + + sk6200 + NEC SK-6200 + NEC + + + + + sk7100 + NEC SK-7100 + NEC + + + + + sp_inet + Super Power Multimedia + Generic + + + + + sven + SVEN Ergonomic 2500 + SVEN + + + + + sven303 + SVEN Slim 303 + SVEN + + + + + symplon + Symplon PaceBook tablet + Symplon + + + + + toshiba_s3000 + Toshiba Satellite S3000 + Toshiba + + + + + trust + Trust Wireless Classic + Trust + + + + + trustda + Trust Direct Access + Trust + + + + + trust_slimline + Trust Slimline + Trust + + + + + tm2020 + TypeMatrix EZ-Reach 2020 + TypeMatrix + + + + + tm2030PS2 + TypeMatrix EZ-Reach 2030 PS2 + TypeMatrix + + + + + tm2030USB + TypeMatrix EZ-Reach 2030 USB + TypeMatrix + + + + + tm2030USB-102 + TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + TypeMatrix + + + + + tm2030USB-106 + TypeMatrix EZ-Reach 2030 USB (106:JP mode) + TypeMatrix + + + + + yahoo + Yahoo! Internet + Yahoo! + + + + + macbook78 + MacBook/MacBook Pro + Apple + + + + + macbook79 + MacBook/MacBook Pro (intl.) + Apple + + + + + macintosh + Macintosh + Apple + + + + + macintosh_old + Macintosh Old + Apple + + + + + macintosh_hhk + Happy Hacking for Mac + Fujitsu + + + + + acer_c300 + Acer C300 + Acer + + + + + acer_ferrari4k + Acer Ferrari 4000 + Acer + + + + + acer_laptop + Acer laptop + Acer + + + + + asus_laptop + Asus laptop + Asus + + + + + apple + Apple + Apple + + + + + apple_laptop + Apple laptop + Apple + + + + + applealu_ansi + Apple Aluminium (ANSI) + Apple + + + + + applealu_iso + Apple Aluminium (ISO) + Apple + + + + + applealu_jis + Apple Aluminium (JIS) + Apple + + + + + silvercrest + Silvercrest Multimedia Wireless + Silvercrest + + + + + emachines + eMachines m6800 laptop + eMachines + + + + + benqx + BenQ X-Touch + BenQ + + + + + benqx730 + BenQ X-Touch 730 + BenQ + + + + + benqx800 + BenQ X-Touch 800 + BenQ + + + + + hhk + Happy Hacking + Fujitsu + + + + + classmate + Classmate PC + Intel + + + + + olpc + OLPC + OLPC + + + + + sun_type7_usb + Sun Type 7 USB + Sun Microsystems + + + + + sun_type7_euro_usb + Sun Type 7 USB (European) + Sun Microsystems + + + + + sun_type7_unix_usb + Sun Type 7 USB (Unix) + Sun Microsystems + + + + + sun_type7_jp_usb + Sun Type 7 USB (Japanese)/Japanese 106-key + Sun Microsystems + + + + + sun_type6_usb + Sun Type 6/7 USB + Sun Microsystems + + + + + sun_type6_euro_usb + Sun Type 6/7 USB (European) + Sun Microsystems + + + + + sun_type6_unix_usb + Sun Type 6 USB (Unix) + Sun Microsystems + + + + + sun_type6_jp_usb + Sun Type 6 USB (Japanese) + Sun Microsystems + + + + + sun_type6_jp + Sun Type 6 (Japanese) + Sun Microsystems + + + + + targa_v811 + Targa Visionary 811 + Targa + + + + + unitekkb1925 + Unitek KB-1925 + Unitek Group + + + + + compalfl90 + FL90 + Compal Electronics + + + + + creativedw7000 + Creative Desktop Wireless 7000 + Creative + + + + + teck227 + Truly Ergonomic 227 + Truly Ergonomic + + + + + teck229 + Truly Ergonomic 229 + Truly Ergonomic + + + + + apex300 + SteelSeries Apex 300 (Apex RAW) + SteelSeries + + + + + chromebook + Chromebook + Google + + + + + teck227 + Truly Ergonomic Computer Keyboard Model 227 (Wide Alt keys) + Megawin Technology + + + + + teck229 + Truly Ergonomic Computer Keyboard Model 229 (Standard sized Alt keys, additional Super and Menu key) + Megawin Technology + + + + + + + us + + en + English (US) + + eng + + + + + + chr + + chr + Cherokee + + chr + + + + + + haw + haw + Hawaiian + + haw + + + + + + euro + English (US, euro on 5) + + + + + intl + English (US, intl., with dead keys) + + + + + alt-intl + English (US, alt. intl.) + + + + + colemak + English (Colemak) + + + + + dvorak + English (Dvorak) + + + + + dvorak-intl + English (Dvorak, intl., with dead keys) + + + + + dvorak-alt-intl + English (Dvorak, alt. intl.) + + + + + dvorak-l + English (Dvorak, left-handed) + + + + + dvorak-r + English (Dvorak, right-handed) + + + + + dvorak-classic + English (classic Dvorak) + + + + + dvp + English (programmer Dvorak) + + + + + rus + + ru + Russian (US, phonetic) + + rus + + + + + + mac + English (Macintosh) + + + + + altgr-intl + English (intl., with AltGr dead keys) + + eng + fra + deu + + + + + + olpc2 + English (the divide/multiply toggle the layout) + + + + + hbs + Serbo-Croatian (US) + + eng + bos + hbs + hrv + srp + + + + + + norman + English (Norman) + + + + + workman + English (Workman) + + + + + workman-intl + English (Workman, intl., with dead keys) + + + + + + + af + + fa + Afghani + + + + + ps + + ps + Pashto + + pus + + + + + + uz + + uz + Uzbek (Afghanistan) + + uzb + + + + + + olpc-ps + + ps + Pashto (Afghanistan, OLPC) + + pus + + + + + + fa-olpc + + fa + Persian (Afghanistan, Dari OLPC) + + + + + uz-olpc + + uz + Uzbek (Afghanistan, OLPC) + + uzb + + + + + + + + ara + + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + azerty + Arabic (AZERTY) + + + + + azerty_digits + Arabic (AZERTY, Eastern Arabic numerals) + + + + + digits + Arabic (Eastern Arabic numerals) + + + + + qwerty + Arabic (QWERTY) + + + + + qwerty_digits + Arabic (QWERTY, Eastern Arabic numerals) + + + + + buckwalter + Arabic (Buckwalter) + + + + + olpc + Arabic (OLPC) + + + + + mac + Arabic (Macintosh) + + + + + + + al + + sq + Albanian + + sqi + + + + + + plisi + Albanian (Plisi) + + + + + veqilharxhi + Albanian (Veqilharxhi) + + + + + + + am + + hy + Armenian + + hye + + + + + + phonetic + Armenian (phonetic) + + + + + phonetic-alt + Armenian (alt. phonetic) + + + + + eastern + Armenian (eastern) + + + + + western + Armenian (western) + + + + + eastern-alt + Armenian (alt. eastern) + + + + + + + at + + de + German (Austria) + + deu + + + + + + nodeadkeys + German (Austria, no dead keys) + + + + + sundeadkeys + German (Austria, Sun dead keys) + + + + + mac + German (Austria, Macintosh) + + + + + + + au + + en + English (Australian) + + eng + + + + + + az + + az + Azerbaijani + + aze + + + + + + cyrillic + Azerbaijani (Cyrillic) + + + + + + + by + + by + Belarusian + + bel + + + + + + legacy + Belarusian (legacy) + + + + + latin + Belarusian (Latin) + + + + + ru + Russian (Belarus) + + + + + intl + Belarusian (intl.) + + + + + + + be + + be + Belgian + + deu + nld + fra + + + + + + oss + Belgian (alt.) + + + + + oss_latin9 + Belgian (Latin-9 only, alt.) + + + + + oss_sundeadkeys + Belgian (Sun dead keys, alt.) + + + + + iso-alternate + Belgian (ISO, alt.) + + + + + nodeadkeys + Belgian (no dead keys) + + + + + sundeadkeys + Belgian (Sun dead keys) + + + + + wang + Belgian (Wang 724 AZERTY) + + + + + + + bd + + bn + Bangla + + ben + + sat + + + + + + probhat + Bangla (Probhat) + + + + + + + in + + in + Indian + + + + + ben + + bn + Bangla (India) + + ben + + sat + + + + + + ben_probhat + + bn + Bangla (India, Probhat) + + ben + + sat + + + + + + ben_baishakhi + Bangla (India, Baishakhi) + + ben + + sat + + + + + + ben_bornona + Bangla (India, Bornona) + + ben + + sat + + + + + + ben_gitanjali + Bangla (India, Gitanjali) + + ben + + sat + + + + + + ben_inscript + Bangla (India, Baishakhi Inscript) + + ben + + sat + + + + + + eeyek + Manipuri (Eeyek) + + mni + + + + + + guj + + gu + Gujarati + + guj + + + + + + guru + + pa + Punjabi (Gurmukhi) + + pan + + + + + + jhelum + + pa + Punjabi (Gurmukhi Jhelum) + + pan + + + + + + kan + + kn + Kannada + + kan + + + + + + kan-kagapa + + kn + Kannada (KaGaPa, phonetic) + + kan + + + + + + mal + + ml + Malayalam + + mal + + + + + + mal_lalitha + + ml + Malayalam (Lalitha) + + mal + + + + + + mal_enhanced + + ml + Malayalam (enhanced Inscript, with rupee) + + mal + + + + + + ori + + or + Oriya + + ori + + sat + + + + + + olck + + sat + Ol Chiki + + + sat + + + + + + tam_tamilnet + + ta + Tamil (TamilNet '99) + + tam + + + + + + tam_tamilnet_with_tam_nums + + ta + Tamil (TamilNet '99 with Tamil numerals) + + tam + + + + + + tam_tamilnet_TAB + + ta + Tamil (TamilNet '99, TAB encoding) + + tam + + + + + + tam_tamilnet_TSCII + + ta + Tamil (TamilNet '99, TSCII encoding) + + tam + + + + + + tam + + ta + Tamil (Inscript) + + tam + + + + + + tel + + te + Telugu + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + tel-sarala + + te + Telugu (Sarala) + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + urd-phonetic + + ur + Urdu (phonetic) + + urd + + + + + + urd-phonetic3 + + ur + Urdu (alt. phonetic) + + urd + + + + + + urd-winkeys + + ur + Urdu (Windows) + + urd + + + + + + bolnagri + + hi + Hindi (Bolnagri) + + hin + + + + + + hin-wx + + hi + Hindi (Wx) + + hin + + + + + + hin-kagapa + + hi + Hindi (KaGaPa, phonetic) + + hin + + + + + + san-kagapa + + sa + Sanskrit (KaGaPa, phonetic) + + san + + + + + + mar-kagapa + + mr + Marathi (KaGaPa, phonetic) + + mar + + + + + + eng + + en + English (India, with rupee) + + eng + + + + + + iipa + iipa + Indic IPA (IIPA) + + eng + + + + + + + marathi + ins + मराठी इन्स्क्रिप्ट + + eng + + + + + + + + ba + + bs + Bosnian + + bos + + + + + + alternatequotes + Bosnian (with guillemets) + + + + + unicode + Bosnian (with Bosnian digraphs) + + + + + unicodeus + Bosnian (US, with Bosnian digraphs) + + + + + us + Bosnian (US) + + + + + + + br + + pt + Portuguese (Brazil) + + por + + + + + + nodeadkeys + Portuguese (Brazil, no dead keys) + + + + + dvorak + Portuguese (Brazil, Dvorak) + + + + + nativo + Portuguese (Brazil, Nativo) + + + + + nativo-us + Portuguese (Brazil, Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Brazil, Nativo) + + epo + + + + + + thinkpad + Portuguese (Brazil, IBM/Lenovo ThinkPad) + + + + + + + bg + + bg + Bulgarian + + bul + + + + + + phonetic + Bulgarian (traditional phonetic) + + + + + bas_phonetic + Bulgarian (new phonetic) + + + + + + + dz + kab + Kabylian (azerty layout, no dead keys) + + + + + azerty-deadkeys + kab + Kabylian (azerty layout, with dead keys) + + kab + + + + + + qwerty-gb-deadkeys + kab + Kabylian (qwerty-gb layout, with dead keys) + + kab + + + + + + qwerty-us-deadkeys + kab + Kabylian (qwerty-us layout, with dead keys) + + kab + + + + + + ber + kab + Kabylian (Algeria, Tifinagh) + + kab + + + + + + ar + ar + Arabic (Algeria) + + ara + + + + + + + + ma + + ar + Arabic (Morocco) + + + + + french + + fr + French (Morocco) + + fra + + + + + + tifinagh + + ber + Berber (Morocco, Tifinagh) + + ber + + + + + + tifinagh-alt + + ber + Berber (Morocco, Tifinagh alt.) + + ber + + + + + + tifinagh-alt-phonetic + + ber + Berber (Morocco, Tifinagh phonetic, alt.) + + ber + + + + + + tifinagh-extended + + ber + Berber (Morocco, Tifinagh extended) + + ber + + + + + + tifinagh-phonetic + + ber + Berber (Morocco, Tifinagh phonetic) + + ber + + + + + + tifinagh-extended-phonetic + + ber + Berber (Morocco, Tifinagh extended phonetic) + + ber + + + + + + + + cm + + cm + English (Cameroon) + + eng + + + + + + french + French (Cameroon) + + fra + + + + + + qwerty + Cameroon Multilingual (QWERTY, intl.) + + eng + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + azerty + Cameroon (AZERTY, intl.) + + fra + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + dvorak + Cameroon (Dvorak, intl.) + + + + + mmuock + Mmuock + + + + + + + mm + + my + Burmese + + mya + + + + + + zawgyi + zg + Burmese Zawgyi + + + + + + + ca + + fr + French (Canada) + + fra + + + + + + fr-dvorak + + fr + French (Canada, Dvorak) + + + + + fr-legacy + + fr + French (Canada, legacy) + + + + + multix + Canadian (intl.) + + + + + multi + Canadian (intl., 1st part) + + + + + multi-2gr + Canadian (intl., 2nd part) + + + + + ike + + ike + Inuktitut + + iku + + + + + + eng + + en + English (Canada) + + eng + + + + + + + + cd + + fr + French (Democratic Republic of the Congo) + + fra + + + + + + + cn + + zh + Chinese + + zho + + + + + + + mon_trad + Mongolian (Bichig) + + mvf + + + + + + mon_trad_todo + Mongolian (Todo) + + mvf + + + + + + mon_trad_xibe + Mongolian (Xibe) + + sjo + + + + + + mon_trad_manchu + Mongolian (Manchu) + + mnc + + + + + + mon_trad_galik + Mongolian (Galik) + + mvf + + + + + + mon_todo_galik + Mongolian (Todo Galik) + + mvf + + + + + + mon_manchu_galik + Mongolian (Manchu Galik) + + mnc + + + + + + + tib + Tibetan + + tib + + + + + + tib_asciinum + Tibetan (with ASCII numerals) + + tib + + + + + + ug + ug + Uyghur + + uig + + + + + + altgr-pinyin + Hanyu Pinyin (with AltGr dead keys) + + zho + + + + + + + + hr + + hr + Croatian + + hrv + + + + + + alternatequotes + Croatian (with guillemets) + + + + + unicode + Croatian (with Croatian digraphs) + + + + + unicodeus + Croatian (US, with Croatian digraphs) + + + + + us + Croatian (US) + + + + + + + cz + + cs + Czech + + ces + + + + + + bksl + Czech (with <\|> key) + + + + + qwerty + Czech (QWERTY) + + + + + qwerty_bksl + Czech (QWERTY, extended backslash) + + + + + qwerty-mac + Czech (QWERTY, Macintosh) + + + + + ucw + Czech (UCW, only accented letters) + + + + + dvorak-ucw + Czech (US, Dvorak, UCW support) + + + + + rus + + ru + Russian (Czech, phonetic) + + rus + + + + + + + + dk + + da + Danish + + dan + + + + + + nodeadkeys + Danish (no dead keys) + + + + + winkeys + Danish (Windows) + + + + + mac + Danish (Macintosh) + + + + + mac_nodeadkeys + Danish (Macintosh, no dead keys) + + + + + dvorak + Danish (Dvorak) + + + + + + + nl + + nl + Dutch + + nld + + + + + + sundeadkeys + Dutch (Sun dead keys) + + + + + mac + Dutch (Macintosh) + + + + + std + Dutch (standard) + + + + + + + bt + + dz + Dzongkha + + dzo + + + + + + ee + + et + Estonian + + est + + + + + + nodeadkeys + Estonian (no dead keys) + + + + + dvorak + Estonian (Dvorak) + + + + + us + Estonian (US) + + + + + + + ir + + fa + Persian + + fas + + + + + + pes_keypad + Persian (with Persian keypad) + + + + + ku + + ku + Kurdish (Iran, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iran, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Iran, Latin Alt-Q) + + kur + + + + + + ku_ara + + ku + Kurdish (Iran, Arabic-Latin) + + kur + + + + + + + + iq + + ar + Iraqi + + ara + kur + + + + + + ku + + ku + Kurdish (Iraq, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iraq, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Iraq, Latin Alt-Q) + + kur + + + + + + ku_ara + + ku + Kurdish (Iraq, Arabic-Latin) + + kur + + + + + + + + fo + + fo + Faroese + + fao + + + + + + nodeadkeys + Faroese (no dead keys) + + + + + + + fi + + fi + Finnish + + fin + + + + + + winkeys + Finnish (Windows) + + + + + classic + Finnish (classic) + + + + + nodeadkeys + Finnish (classic, no dead keys) + + + + + smi + Northern Saami (Finland) + + sme + + + + + + mac + Finnish (Macintosh) + + + + + + + fr + + fr + French + + fra + + + + + + nodeadkeys + French (no dead keys) + + + + + sundeadkeys + French (Sun dead keys) + + + + + oss + French (alt.) + + + + + oss_latin9 + French (alt., Latin-9 only) + + + + + oss_nodeadkeys + French (alt., no dead keys) + + + + + oss_sundeadkeys + French (alt., Sun dead keys) + + + + + latin9 + French (legacy, alt.) + + + + + latin9_nodeadkeys + French (legacy, alt., no dead keys) + + + + + latin9_sundeadkeys + French (legacy, alt., Sun dead keys) + + + + + bepo + French (BEPO) + + + + + bepo_latin9 + French (BEPO, Latin-9 only) + + + + + bepo_afnor + French (BEPO, AFNOR) + + + + + dvorak + French (Dvorak) + + + + + mac + French (Macintosh) + + + + + azerty + French (AZERTY) + + + + + afnor + French (AZERTY, AFNOR) + + + + + bre + French (Breton) + + + + + oci + Occitan + + oci + + + + + + geo + Georgian (France, AZERTY Tskapo) + + kat + + + + + + us + French (US) + + + + + + + gh + + en + English (Ghana) + + eng + + + + + + generic + English (Ghana, multilingual) + + + + + akan + + ak + Akan + + aka + + + + + + ewe + + ee + Ewe + + ewe + + + + + + fula + + ff + Fula + + ful + + + + + + ga + + gaa + Ga + + gaa + + + + + + hausa + + ha + Hausa (Ghana) + + hau + + + + + + avn + + avn + Avatime + + avn + + + + + + gillbt + English (Ghana, GILLBT) + + + + + + + gn + + fr + French (Guinea) + + fra + + + + + + + ge + + ka + Georgian + + kat + + + + + + ergonomic + Georgian (ergonomic) + + + + + mess + Georgian (MESS) + + + + + ru + + ru + Russian (Georgia) + + rus + + + + + + os + Ossetian (Georgia) + + oss + + + + + + + + de + + de + German + + deu + + + + + + deadacute + German (dead acute) + + + + + deadgraveacute + German (dead grave acute) + + + + + nodeadkeys + German (no dead keys) + + + + + T3 + German (T3) + + + + + ro + Romanian (Germany) + + ron + + + + + + ro_nodeadkeys + Romanian (Germany, no dead keys) + + ron + + + + + + dvorak + German (Dvorak) + + + + + sundeadkeys + German (Sun dead keys) + + + + + neo + German (Neo 2) + + + + + mac + German (Macintosh) + + + + + mac_nodeadkeys + German (Macintosh, no dead keys) + + + + + dsb + Lower Sorbian + + dsb + + + + + + dsb_qwertz + Lower Sorbian (QWERTZ) + + dsb + + + + + + qwerty + German (QWERTY) + + + + + tr + Turkish (Germany) + + tr + + + + + + ru + + ru + Russian (Germany, phonetic) + + rus + + + + + + deadtilde + German (dead tilde) + + + + + + + gr + + gr + Greek + + ell + + + + + + simple + Greek (simple) + + + + + extended + Greek (extended) + + + + + nodeadkeys + Greek (no dead keys) + + + + + polytonic + Greek (polytonic) + + + + + + + hu + + hu + Hungarian + + hun + + + + + + standard + Hungarian (standard) + + + + + nodeadkeys + Hungarian (no dead keys) + + + + + qwerty + Hungarian (QWERTY) + + + + + 101_qwertz_comma_dead + Hungarian (QWERTZ, 101-key, comma, dead keys) + + + + + 101_qwertz_comma_nodead + Hungarian (QWERTZ, 101-key, comma, no dead keys) + + + + + 101_qwertz_dot_dead + Hungarian (QWERTZ, 101-key, dot, dead keys) + + + + + 101_qwertz_dot_nodead + Hungarian (QWERTZ, 101-key, dot, no dead keys) + + + + + 101_qwerty_comma_dead + Hungarian (QWERTY, 101-key, comma, dead keys) + + + + + 101_qwerty_comma_nodead + Hungarian (QWERTY, 101-key, comma, no dead keys) + + + + + 101_qwerty_dot_dead + Hungarian (QWERTY, 101-key, dot, dead keys) + + + + + 101_qwerty_dot_nodead + Hungarian (QWERTY, 101-key, dot, no dead keys) + + + + + 102_qwertz_comma_dead + Hungarian (QWERTZ, 102-key, comma, dead keys) + + + + + 102_qwertz_comma_nodead + Hungarian (QWERTZ, 102-key, comma, no dead keys) + + + + + 102_qwertz_dot_dead + Hungarian (QWERTZ, 102-key, dot, dead keys) + + + + + 102_qwertz_dot_nodead + Hungarian (QWERTZ, 102-key, dot, no dead keys) + + + + + 102_qwerty_comma_dead + Hungarian (QWERTY, 102-key, comma, dead keys) + + + + + 102_qwerty_comma_nodead + Hungarian (QWERTY, 102-key, comma, no dead keys) + + + + + 102_qwerty_dot_dead + Hungarian (QWERTY, 102-key, dot, dead keys) + + + + + 102_qwerty_dot_nodead + Hungarian (QWERTY, 102-key, dot, no dead keys) + + + + + + + is + + is + Icelandic + + isl + + + + + + Sundeadkeys + Icelandic (Sun dead keys) + + + + + nodeadkeys + Icelandic (no dead keys) + + + + + mac_legacy + Icelandic (Macintosh, legacy) + + + + + mac + Icelandic (Macintosh) + + + + + dvorak + Icelandic (Dvorak) + + + + + + + il + + he + Hebrew + + heb + + + + + + lyx + Hebrew (lyx) + + + + + phonetic + Hebrew (phonetic) + + + + + biblical + Hebrew (Biblical, Tiro) + + + + + + + it + + it + Italian + + ita + + + + + + nodeadkeys + Italian (no dead keys) + + + + + winkeys + Italian (Windows) + + + + + mac + Italian (Macintosh) + + + + + us + Italian (US) + + + + + geo + Georgian (Italy) + + kat + + + + + + ibm + Italian (IBM 142) + + + + + intl + Italian (intl., with dead keys) + + deu + fra + ita + slk + srd + nap + scn + fur + + + + + + scn + Sicilian + + ita + scn + + + + + + fur + Friulian (Italy) + + fur + + + + + + + + jp + + ja + Japanese + + jpn + + + + + + kana + Japanese (Kana) + + + + + kana86 + Japanese (Kana 86) + + + + + OADG109A + Japanese (OADG 109A) + + + + + mac + Japanese (Macintosh) + + + + + dvorak + Japanese (Dvorak) + + + + + + + kg + + ki + Kyrgyz + + kir + + + + + + phonetic + Kyrgyz (phonetic) + + + + + + + kh + + km + Khmer (Cambodia) + + khm + + + + + + + kz + + kk + Kazakh + + kaz + + + + + + ruskaz + + ru + Russian (Kazakhstan, with Kazakh) + + kaz + rus + + + + + + kazrus + Kazakh (with Russian) + + kaz + rus + + + + + + ext + Kazakh (extended) + + kaz + + + + + + latin + Kazakh (Latin) + + kaz + + + + + + + + la + + lo + Lao + + lao + + + + + + stea + Lao (STEA) + + lao + + + + + + + + latam + + es + Spanish (Latin American) + + AR + BO + CL + CO + CR + CU + DO + EC + GT + HN + HT + MX + NI + PA + PE + PR + PY + SV + US + UY + VE + + + spa + + + + + + nodeadkeys + Spanish (Latin American, no dead keys) + + + + + deadtilde + Spanish (Latin American, dead tilde) + + + + + sundeadkeys + Spanish (Latin American, Sun dead keys) + + + + + dvorak + Spanish (Latin American, Dvorak) + + + + + colemak + Spanish (Latin American, Colemak) + + + + + colemak-gaming + Spanish (Latin American, Colemak for gaming) + + + + + + + lt + + lt + Lithuanian + + lit + + + + + + std + Lithuanian (standard) + + + + + us + Lithuanian (US) + + + + + ibm + Lithuanian (IBM LST 1205-92) + + + + + lekp + Lithuanian (LEKP) + + + + + lekpa + Lithuanian (LEKPa) + + + + + sgs + Samogitian + + sgs + + + + + + + + lv + + lv + Latvian + + lav + + + + + + apostrophe + Latvian (apostrophe) + + + + + tilde + Latvian (tilde) + + + + + fkey + Latvian (F) + + + + + modern + Latvian (modern) + + + + + ergonomic + Latvian (ergonomic, ŪGJRMV) + + + + + adapted + Latvian (adapted) + + + + + + + mao + + mi + Maori + + mri + + + + + + + me + + sr + Montenegrin + + srp + + + + + + cyrillic + Montenegrin (Cyrillic) + + + + + cyrillicyz + Montenegrin (Cyrillic, ZE and ZHE swapped) + + + + + latinunicode + Montenegrin (Latin, Unicode) + + + + + latinyz + Montenegrin (Latin, QWERTY) + + + + + latinunicodeyz + Montenegrin (Latin, Unicode, QWERTY) + + + + + cyrillicalternatequotes + Montenegrin (Cyrillic, with guillemets) + + + + + latinalternatequotes + Montenegrin (Latin, with guillemets) + + + + + + + mk + + mk + Macedonian + + mkd + + + + + + nodeadkeys + Macedonian (no dead keys) + + + + + + + mt + + mt + Maltese + + mlt + + + + + + us + Maltese (US) + + + + + alt-us + Maltese (US layout with AltGr overrides) + + + + + alt-gb + Maltese (UK, with AltGr overrides) + + + + + + + mn + + mn + Mongolian + + mon + + + + + + + no + + no + Norwegian + + nor + nob + nno + + + + + + nodeadkeys + Norwegian (no dead keys) + + + + + winkeys + Norwegian (Windows) + + + + + dvorak + Norwegian (Dvorak) + + + + + smi + Northern Saami (Norway) + + sme + + + + + + smi_nodeadkeys + Northern Saami (Norway, no dead keys) + + sme + + + + + + mac + Norwegian (Macintosh) + + + + + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + + + + + colemak + Norwegian (Colemak) + + + + + + + pl + + pl + Polish + + pol + + + + + + legacy + Polish (legacy) + + + + + qwertz + Polish (QWERTZ) + + + + + dvorak + Polish (Dvorak) + + + + + dvorak_quotes + Polish (Dvorak, with Polish quotes on quotemark key) + + + + + dvorak_altquotes + Polish (Dvorak, with Polish quotes on key 1) + + + + + csb + Kashubian + + csb + + + + + + szl + Silesian + + szl + + + + + + ru_phonetic_dvorak + + ru + Russian (Poland, phonetic Dvorak) + + rus + + + + + + dvp + Polish (programmer Dvorak) + + + + + + + pt + + pt + Portuguese + + por + + + + + + nodeadkeys + Portuguese (no dead keys) + + + + + sundeadkeys + Portuguese (Sun dead keys) + + + + + mac + Portuguese (Macintosh) + + + + + mac_nodeadkeys + Portuguese (Macintosh, no dead keys) + + + + + mac_sundeadkeys + Portuguese (Macintosh, Sun dead keys) + + + + + nativo + Portuguese (Nativo) + + + + + nativo-us + Portuguese (Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Portugal, Nativo) + + epo + + + + + + + + ro + + ro + Romanian + + ron + + + + + + cedilla + Romanian (cedilla) + + + + + std + Romanian (standard) + + + + + std_cedilla + Romanian (standard cedilla) + + + + + winkeys + Romanian (Windows) + + + + + + + ru + + ru + Russian + + rus + + + + + + phonetic + Russian (phonetic) + + + + + phonetic_winkeys + Russian (phonetic, Windows) + + + + + phonetic_YAZHERTY + Russian (phonetic, YAZHERTY) + + + + + typewriter + Russian (typewriter) + + + + + legacy + Russian (legacy) + + + + + typewriter-legacy + Russian (typewriter, legacy) + + + + + tt + Tatar + + tat + + + + + + os_legacy + Ossetian (legacy) + + oss + + + + + + os_winkeys + Ossetian (Windows) + + oss + + + + + + cv + Chuvash + + chv + + + + + + cv_latin + Chuvash (Latin) + + chv + + + + + + udm + Udmurt + + udm + + + + + + kom + Komi + + kom + + + + + + sah + Yakut + + sah + + + + + + xal + Kalmyk + + xal + + + + + + dos + Russian (DOS) + + + + + mac + Russian (Macintosh) + + + + + srp + Serbian (Russia) + + rus + srp + + + + + + bak + Bashkirian + + bak + + + + + + chm + Mari + + chm + + + + + + phonetic_azerty + Russian (phonetic, AZERTY) + + + + + phonetic_dvorak + Russian (phonetic, Dvorak) + + + + + phonetic_fr + Russian (phonetic, French) + + + + + + + rs + + sr + Serbian + + srp + + + + + + yz + Serbian (Cyrillic, ZE and ZHE swapped) + + + + + latin + Serbian (Latin) + + + + + latinunicode + Serbian (Latin, Unicode) + + + + + latinyz + Serbian (Latin, QWERTY) + + + + + latinunicodeyz + Serbian (Latin, Unicode, QWERTY) + + + + + alternatequotes + Serbian (Cyrillic, with guillemets) + + + + + latinalternatequotes + Serbian (Latin, with guillemets) + + + + + rue + Pannonian Rusyn + + rue + + + + + + + + si + + sl + Slovenian + + slv + + + + + + alternatequotes + Slovenian (with guillemets) + + + + + us + Slovenian (US) + + + + + + + sk + + sk + Slovak + + slk + + + + + + bksl + Slovak (extended backslash) + + + + + qwerty + Slovak (QWERTY) + + + + + qwerty_bksl + Slovak (QWERTY, extended backslash) + + + + + + + es + + es + Spanish + + spa + + + + + + nodeadkeys + Spanish (no dead keys) + + + + + winkeys + Spanish (Windows) + + + + + deadtilde + Spanish (dead tilde) + + + + + sundeadkeys + Spanish (Sun dead keys) + + + + + dvorak + Spanish (Dvorak) + + + + + ast + ast + Asturian (Spain, with bottom-dot H and L) + + ast + + + + + + cat + ca + Catalan (Spain, with middle-dot L) + + cat + + + + + + mac + Spanish (Macintosh) + + + + + + + se + + sv + Swedish + + swe + + + + + + nodeadkeys + Swedish (no dead keys) + + + + + dvorak + Swedish (Dvorak) + + + + + rus + + ru + Russian (Sweden, phonetic) + + rus + + + + + + rus_nodeadkeys + + ru + Russian (Sweden, phonetic, no dead keys) + + rus + + + + + + smi + Northern Saami (Sweden) + + sme + + + + + + mac + Swedish (Macintosh) + + + + + svdvorak + Swedish (Svdvorak) + + + + + us_dvorak + Swedish (Dvorak, intl.) + + + + + us + Swedish (US) + + + + + swl + Swedish Sign Language + + swl + + + + + + + + ch + + de + German (Switzerland) + + deu + gsw + + + + + + legacy + German (Switzerland, legacy) + + + + + de_nodeadkeys + + de + German (Switzerland, no dead keys) + + + + + de_sundeadkeys + + de + German (Switzerland, Sun dead keys) + + + + + fr + + fr + French (Switzerland) + + fra + + + + + + fr_nodeadkeys + + fr + French (Switzerland, no dead keys) + + fra + + + + + + fr_sundeadkeys + + fr + French (Switzerland, Sun dead keys) + + fra + + + + + + fr_mac + + fr + French (Switzerland, Macintosh) + + fra + + + + + + de_mac + + de + German (Switzerland, Macintosh) + + + + + + + sy + + ar + Arabic (Syria) + + syr + + + + + + syc + + syc + Syriac + + + + + syc_phonetic + + syc + Syriac (phonetic) + + + + + ku + + ku + Kurdish (Syria, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Syria, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Syria, Latin Alt-Q) + + kur + + + + + + + + tj + + tg + Tajik + + tgk + + + + + + legacy + Tajik (legacy) + + + + + + + lk + + si + Sinhala (phonetic) + + sin + + + + + + tam_unicode + + ta + Tamil (Sri Lanka, TamilNet '99) + + tam + + + + + + tam_TAB + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + + tam + + + + + + us + + us + Sinhala (US) + + + + + + + th + + th + Thai + + tha + + + + + + tis + Thai (TIS-820.2538) + + + + + pat + Thai (Pattachote) + + + + + + + tr + + tr + Turkish + + tur + + + + + + f + Turkish (F) + + + + + alt + Turkish (Alt-Q) + + + + + sundeadkeys + Turkish (Sun dead keys) + + + + + ku + + ku + Kurdish (Turkey, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Turkey, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Turkey, Latin Alt-Q) + + kur + + + + + + intl + Turkish (intl., with dead keys) + + + + + crh + + crh + Crimean Tatar (Turkish Q) + + crh + + + + + + crh_f + + crh + Crimean Tatar (Turkish F) + + crh + + + + + + crh_alt + + crh + Crimean Tatar (Turkish Alt-Q) + + crh + + + + + + + + tw + + zh + Taiwanese + + fox + + + + + + indigenous + Taiwanese (indigenous) + + ami + tay + bnn + ckv + pwn + pyu + dru + ais + ssf + tao + tsu + trv + xnb + sxr + uun + fos + + + + + + saisiyat + + xsy + Saisiyat (Taiwan) + + xsy + + + + + + + + ua + + uk + Ukrainian + + ukr + + + + + + phonetic + Ukrainian (phonetic) + + + + + typewriter + Ukrainian (typewriter) + + + + + winkeys + Ukrainian (Windows) + + + + + legacy + Ukrainian (legacy) + + + + + rstu + Ukrainian (standard RSTU) + + + + + rstu_ru + Russian (Ukraine, standard RSTU) + + + + + homophonic + Ukrainian (homophonic) + + + + + + + gb + + en + English (UK) + + eng + + + + + + extd + English (UK, extended, Windows) + + + + + intl + English (UK, intl., with dead keys) + + + + + dvorak + English (UK, Dvorak) + + + + + dvorakukp + English (UK, Dvorak, with UK punctuation) + + + + + mac + English (UK, Macintosh) + + + + + mac_intl + English (UK, Macintosh, intl.) + + + + + colemak + English (UK, Colemak) + + + + + pl + + pl + Polish (British keyboard) + + pol + + + + + + + + uz + + uz + Uzbek + + uzb + + + + + + latin + Uzbek (Latin) + + + + + + + vn + + vi + Vietnamese + + vie + + + + + + us + Vietnamese (US) + + + + + fr + Vietnamese (French) + + + + + + + kr + + ko + Korean + + kor + + + + + + kr104 + Korean (101/104-key compatible) + + + + + + + nec_vndr/jp + + ja + Japanese (PC-98) + + JP + + + jpn + + + + + + ie + + ie + Irish + + eng + + + + + + CloGaelach + CloGaelach + + gle + + + + + + UnicodeExpert + Irish (UnicodeExpert) + + + + + ogam + Ogham + + sga + + + + + + ogam_is434 + Ogham (IS434) + + sga + + + + + + + + pk + + ur + Urdu (Pakistan) + + urd + + + + + + urd-crulp + Urdu (Pakistan, CRULP) + + + + + urd-nla + Urdu (Pakistan, NLA) + + + + + ara + ar + Arabic (Pakistan) + + ara + + + + + + snd + + sd + Sindhi + + snd + + + + + + + + mv + + dv + Dhivehi + + div + + + + + + + za + + en + English (South Africa) + + eng + + + + + + epo + + eo + Esperanto + + epo + + + + + + legacy + Esperanto (legacy) + + + + + + + np + + ne + Nepali + + nep + + sat + + + + + + ng + + en + English (Nigeria) + + eng + + + + + + igbo + + ig + Igbo + + ibo + + + + + + yoruba + + yo + Yoruba + + yor + + + + + + hausa + + ha + Hausa (Nigeria) + + hau + + + + + + + + et + + am + Amharic + + amh + + + + + + + sn + + wo + Wolof + + wol + + + + + + + brai + + brl + Braille + + + + + left_hand + Braille (left-handed) + + + + + left_hand_invert + Braille (left-handed inverted thumb) + + + + + right_hand + Braille (right-handed) + + + + + right_hand_invert + Braille (right-handed inverted thumb) + + + + + + + tm + + tk + Turkmen + + tuk + + + + + + alt + Turkmen (Alt-Q) + + + + + + + ml + + bm + Bambara + + bam + + + + + + fr-oss + + fr + French (Mali, alt.) + + fra + + + + + + us-mac + + en + English (Mali, US, Macintosh) + + eng + + + + + + us-intl + + en + English (Mali, US, intl.) + + eng + + + + + + + + tz + + sw + Swahili (Tanzania) + + swa + + + + + + tg + fr-tg + French (Togo) + + fra + ajg + blo + kpo + ewe + fon + fue + gej + ife + kbp + las + dop + mfg + nmz + bud + gng + kdh + soy + + + + + + ke + + sw + Swahili (Kenya) + + swa + + + + + + kik + + ki + Kikuyu + + kik + + + + + + + + bw + + tn + Tswana + + tsn + + + + + + ph + + ph + Filipino + + eng + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + qwerty-bay + Filipino (QWERTY, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + + + + + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + + + + + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + colemak + Filipino (Colemak, Latin) + + + + + colemak-bay + Filipino (Colemak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + dvorak + Filipino (Dvorak, Latin) + + + + + dvorak-bay + Filipino (Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + + + md + md + Moldavian + + ron + + + + + + gag + gag + Moldavian (Gagauz) + + gag + + + + + + + + id + id + Indonesian (Arab Melayu, phonetic) + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phoneticx + Indonesian (Arab Melayu, extended phonetic) + + + + + + + jv + jv + Indonesian (Javanese) + + jv + + + + + + + my + ms + Malay (Jawi, Arabic Keyboard) + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phonetic + Malay (Jawi, phonetic) + + + + + + + + + + grp + Switching to another layout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + + + + + + + + + + + + + + + + ctrl + Ctrl position + + + + + + + + + + + + + + + + + grp_led + Use keyboard LED to show alternative layout + + + + + + + + + mod_led + Use keyboard LED to indicate modifiers + + + + + + + keypad + Layout of numeric keypad + + + + + + + + + + + + + + + kpdl + Numeric keypad Delete behavior + + + + + + + + + + + + + + caps + Caps Lock behavior + + + + + + + + + + + + + + + + + + + + + + altwin + Alt and Win behavior + + + + + + + + + + + + + + + + + + + Compose key + Position of Compose key + + + + + + + + + + + + + + + + + + + + + + + compat + Compatibility options + + + + + + + + + + + + + + + + + + + + + currencysign + Currency signs + + + + + + + + + + lv5 + Key to choose 5th level + + + + + + + + + + + + + nbsp + Non-breaking space input + + + + + + + + + + + + + + + + + + + + + japan + Japanese keyboard options + + + + + + + + korean + Korean Hangul/Hanja keys + + + + + + + + + esperanto + Esperanto letters with superscripts + + + + + + + + solaris + Old Solaris keycodes compatibility + + + + + + terminate + Key sequence to kill the X server + + + + + 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 @@ + + + + + + + + apl + apl + APL + + eng + + + + + + dyalog + dlg + APL symbols (Dyalog APL) + + + + + sax + sax + APL symbols (SAX, Sharp APL for Unix) + + + + + unified + ufd + APL symbols (unified) + + + + + apl2 + apl2 + APL symbols (IBM APL2) + + + + + aplplusII + aplII + APL symbols (Manugistics APL*PLUS II) + + + + + aplx + aplx + APL symbols (APLX unified) + + + + + + + ca + fr + French (Canada) + + fra + + + + + + kut + kut + Kutenai + + + + + shs + shs + Secwepemctsin + + + + + sun_type6 + Multilingual (Canada, Sun Type 6/7) + + + + + + + de + de + German + + ger + + + + + + us + German (US) + + eng + + + + + + hu + German (with Hungarian letters, no dead keys) + + ger + hun + + + + + + pl + Polish (Germany, no dead keys) + + ger + pol + + + + + + sun_type6 + German (Sun Type 6/7) + + + + + adnw + German (Aus der Neo-Welt) + + + + + koy + German (KOY) + + + + + bone + German (Bone) + + + + + bone_eszett_home + German (Bone, eszett in the home row) + + + + + neo_qwertz + German (Neo, QWERTZ) + + + + + neo_qwerty + German (Neo, QWERTY) + + + + + ru-recom + + ru + Russian (Germany, recommended) + + rus + + + + + + ru-translit + + ru + Russian (Germany, transliteration) + + rus + + + + + + lld + de_lld + German (Ladin) + + ger + lld + + + + + + + + eg + ⲕⲏⲙⲉ + Coptic + + cop + egy + + + + + + hu + Hungarian + + + + + oldhun + oldhun + Old Hungarian + + + + + ohu_lig + ohu_lig + Old Hungarian (for ligatures) + + + + + + + + ir + fa + Persian + + per + + + + + + ave + Avestan + + ave + + + + + + + + lt + lt + Lithuanian + + lit + + + + + + us_dvorak + Lithuanian (Dvorak) + + + + + sun_type6 + Lithuanian (Sun Type 6/7) + + + + + + + lv + lv + Latvian + + lav + + + + + + dvorak + Latvian (Dvorak) + + + + + ykeydvorak + Latvian (Dvorak, with Y) + + + + + minuskeydvorak + Latvian (Dvorak, with minus) + + + + + dvorakprogr + Latvian (programmer Dvorak) + + + + + ykeydvorakprogr + Latvian (programmer Dvorak, with Y) + + + + + minuskeydvorakprogr + Latvian (programmer Dvorak, with minus) + + + + + colemak + Latvian (Colemak) + + + + + apostrophecolemak + Latvian (Colemak, with apostrophe) + + + + + sun_type6 + Latvian (Sun Type 6/7) + + + + + + + us + en + English (US) + + eng + + + + + + intl-unicode + English (US, intl., AltGr Unicode combining) + + + + + alt-intl-unicode + English (US, intl., AltGr Unicode combining, alt.) + + + + + ats + Atsina + + + + + + crd + Coeur d'Alene Salish + + crd + + + + + + cz_sk_de + Czech Slovak and German (US) + + eng + cze + slo + ger + + + + + + drix + English (Drix) + + + + + de_se_fi + German, Swedish and Finnish (US) + + eng + ger + swe + fin + + + + + + ibm238l + English (US, IBM Arabic 238_L) + + + + + sun_type6 + English (US, Sun Type 6/7) + + + + + carpalx + English (Carpalx) + + + + + carpalx-intl + English (Carpalx, intl., with dead keys) + + + + + carpalx-altgr-intl + English (Carpalx, intl., with AltGr dead keys) + + + + + carpalx-full + English (Carpalx, full optimization) + + + + + carpalx-full-intl + English (Carpalx, full optimization, intl., with dead keys) + + + + + carpalx-full-altgr-intl + English (Carpalx, full optimization, intl., with AltGr dead keys) + + + + + 3l + English (3l) + + + + + 3l-cros + English (3l, Chromebook) + + + + + 3l-emacs + English (3l, emacs) + + + + + scn + Sicilian (US keyboard) + + eng + ita + scn + + + + + + + + pl + pl + Polish + + pol + + + + + + intl + Polish (intl., with dead keys) + + + + + colemak + Polish (Colemak) + + + + + sun_type6 + Polish (Sun Type 6/7) + + + + + glagolica + Polish (Glagolica) + + + + + + + ro + ro + Romanian + + rum + + + + + + crh_dobruja + crh + Crimean Tatar (Dobruja Q) + + crh + + + + + + ergonomic + Romanian (ergonomic Touchtype) + + + + + sun_type6 + Romanian (Sun Type 6/7) + + + + + + + rs + sr + Serbian + + srp + + + + + + combiningkeys + Serbian (combining accents instead of dead keys) + + + + + + + ru + ru + Russian + + + + + chu + Church Slavonic + + chu + + + + + + ruu + ru + Russian (with Ukrainian-Belorussian layout) + + rus + ukr + bel + + + + + + rulemak + Russian (Rulemak, phonetic Colemak) + + + + + phonetic_mac + Russian (phonetic Macintosh) + + + + + sun_type6 + Russian (Sun Type 6/7) + + + + + unipunct + Russian (with US punctuation) + + + + + prxn + ru + Russian (Polyglot and Reactionary) + + RU + RS + BA + ME + MK + BG + MD + UA + BY + KZ + MN + KG + TJ + UZ + TM + AZ + + + rus + rus-petr1708 + ukr + bel + srp + mkd + bul + chu + rum-Cyrl + kaz + kir + uzb + bak + aze + tat + uig + kdr + tyv + kjh + crh + tgk + abk + sah + mon + kal + sjd + chv + oss + krl + ale + wbl + kur + niv + dng + kom + udm + sel + ulc + ude + oac + oaa + gld + eve + evn + kca + itl + yrk + neg + + + + + + + + am + hy + Armenian + + hye + + + + + + olpc-phonetic + Armenian (OLPC, phonetic) + + + + + + + il + he + Hebrew + + heb + + + + + + biblicalSIL + Hebrew (Biblical, SIL phonetic) + + heb + + + + + + + + ara + ar + Arabic + + + + + sun_type6 + Arabic (Sun Type 6/7) + + + + + basic_ext + Arabic (Arabic numerals, extensions in the 4th level) + + + + + basic_ext_digits + Arabic (Eastern Arabic numerals, extensions in the 4th level) + + + + + uga + Ugaritic instead of Arabic + + + + + + + be + be + Belgian + + + + + sun_type6 + Belgian (Sun Type 6/7) + + + + + + + br + pt + Portuguese (Brazil) + + + + + sun_type6 + Portuguese (Brazil, Sun Type 6/7) + + + + + + + cz + cs + Czech + + + + + sun_type6 + Czech (Sun Type 6/7) + + + + + prog + Czech (programming) + + + + + typo + Czech (typographic) + + + + + coder + Czech (coder) + + + + + prog_typo + Czech (programming, typographic) + + + + + + + dk + da + Danish + + + + + sun_type6 + Danish (Sun Type 6/7) + + + + + + + nl + nl + Dutch + + + + + sun_type6 + Dutch (Sun Type 6/7) + + + + + + + ee + et + Estonian + + + + + sun_type6 + Estonian (Sun Type 6/7) + + + + + + + fi + fi + Finnish + + + + + sun_type6 + Finnish (Sun Type 6/7) + + + + + das + Finnish (DAS) + + + + + fidvorak + Finnish (Dvorak) + + + + + + + fr + fr + French + + + + + sun_type6 + French (Sun Type 6/7) + + + + + us-alt + French (US with dead keys, alt.) + + + + + us-azerty + French (US, AZERTY) + + + + + + + gr + gr + Greek + + + + + sun_type6 + Greek (Sun Type 6/7) + + + + + colemak + Greek (Colemak) + + + + + + + it + it + Italian + + + + + sun_type6 + Italian (Sun Type 6/7) + + + + + lld + it_lld + Italian (Ladin) + + it + lld + + + + + + + + jp + ja + Japanese + + + + + sun_type6 + Japanese (Sun Type 6) + + + + + sun_type7 + Japanese (Sun Type 7, PC-compatible) + + + + + sun_type7_suncompat + Japanese (Sun Type 7, Sun-compatible) + + + + + + + no + no + Norwegian + + + + + sun_type6 + Norwegian (Sun Type 6/7) + + + + + + + pt + pt + Portuguese + + + + + sun_type6 + Portuguese (Sun Type 6/7) + + + + + + + pt + pt + Portuguese + + + + + colemak + Portuguese (Colemak) + + + + + + + sk + sk + Slovak + + + + + acc + Slovak (ACC layout, only accented letters) + + + + + sun_type6 + Slovak (Sun Type 6/7) + + + + + + + es + es + Spanish + + + + + sun_type6 + Spanish (Sun Type 6/7) + + + + + + + se + sv + Swedish + + + + + dvorak_a5 + Swedish (Dvorak A5) + + + + + sun_type6 + Swedish (Sun Type 6/7) + + + + + ovd + Elfdalian (Swedish, with combining ogonek) + + ovd + + + + + + + + ch + de + German (Switzerland) + + + + + sun_type6_de + German (Switzerland, Sun Type 6/7) + + + + + sun_type6_fr + French (Switzerland, Sun Type 6/7) + + + + + + + tr + tr + Turkish + + + + + sun_type6 + Turkish (Sun Type 6/7) + + + + + + + ua + uk + Ukrainian + + + + + sun_type6 + Ukrainian (Sun Type 6/7) + + + + + + + gb + en + English (UK) + + + + + sun_type6 + English (UK, Sun Type 6/7) + + + + + + + kr + ko + Korean + + + + + sun_type6 + Korean (Sun Type 6/7) + + + + + + + vn + + vi + Vietnamese + + vie + + + + + + aderty + Vietnamese (AÐERTY) + + + + + qderty + Vietnamese (QĐERTY) + + + + + + + eu + + eu + EurKEY (US) + + cat + dan + eng + est + fao + fin + ger + gre + gsw + ita + lav + lit + nld + nor + por + spa + swe + + + + + + cm + cm + English (Cameroon) + + + + + mmuock + Mmuock + + + + + + + trans + + International Phonetic Alphabet + + + + + + in + + in + Indian + + + + + modi-kagapa + mr + Modi (KaGaPa phonetic) + + mar + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + parens + Parentheses position + + + + + 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 @@ + + + + + + + pc86 + Generic 86-key PC + Generic + + + + + pc101 + Generic 101-key PC + Generic + + + + + pc102 + Generic 102-key PC + Generic + + + + + pc104 + Generic 104-key PC + Generic + + + + + pc104alt + Generic 104-key PC with L-shaped Enter key + Generic + + + + + pc105 + Generic 105-key PC + Generic + + + + + dell101 + Dell 101-key PC + Dell + + + + + latitude + Dell Latitude laptop + Dell + + + + + dellm65 + Dell Precision M65 laptop + Dell + + + + + everex + Everex STEPnote + Everex + + + + + flexpro + Keytronic FlexPro + Keytronic + + + + + microsoft + Microsoft Natural + Microsoft + + + + + omnikey101 + Northgate OmniKey 101 + Northgate + + + + + winbook + Winbook Model XP5 + Generic + + + + + pc98 + PC-98 + Generic + + + + + a4techKB21 + A4Tech KB-21 + A4Tech + + + + + a4techKBS8 + A4Tech KBS-8 + A4Tech + + + + + a4_rfkb23 + A4Tech Wireless Desktop RFKB-23 + A4Tech + + + + + airkey + Acer AirKey V + Acer + + + + + azonaRF2300 + Azona RF2300 wireless Internet + Azona + + + + + scorpius + Advance Scorpius KI + Scorpius + + + + + brother + Brother Internet + Brother + + + + + btc5113rf + BTC 5113RF Multimedia + BTC + + + + + btc5126t + BTC 5126T + BTC + + + + + btc6301urf + BTC 6301URF + BTC + + + + + btc9000 + BTC 9000 + BTC + + + + + btc9000a + BTC 9000A + BTC + + + + + btc9001ah + BTC 9001AH + BTC + + + + + btc5090 + BTC 5090 + BTC + + + + + btc9019u + BTC 9019U + BTC + + + + + btc9116u + BTC 9116U Mini Wireless Internet and Gaming + + + + + cherryblue + Cherry Blue Line CyBo@rd + + + + + cherryblueb + Cherry CyMotion Master XPress + Cherry + + + + + cherrybluea + Cherry Blue Line CyBo@rd (alt.) + Cherry + + + + + cherrycyboard + Cherry CyBo@rd USB-Hub + Cherry + + + + + cherrycmexpert + Cherry CyMotion Expert + Cherry + + + + + cherrybunlim + Cherry B.UNLIMITED + Cherry + + + + + chicony + Chicony Internet + Chicony + + + + + chicony0108 + Chicony KU-0108 + Chicony + + + + + chicony0420 + Chicony KU-0420 + Chicony + + + + + chicony9885 + Chicony KB-9885 + Chicony + + + + + compaqeak8 + Compaq Easy Access + Compaq + + + + + compaqik7 + Compaq Internet (7 keys) + Compaq + + + + + compaqik13 + Compaq Internet (13 keys) + Compaq + + + + + compaqik18 + Compaq Internet (18 keys) + Compaq + + + + + cymotionlinux + Cherry CyMotion Master Linux + Cherry + + + + + armada + Compaq Armada laptop + Compaq + + + + + presario + Compaq Presario laptop + Compaq + + + + + ipaq + Compaq iPaq + Compaq + + + + + dell + Dell + Dell + + + + + dellsk8125 + Dell SK-8125 + Dell + + + + + dellsk8135 + Dell SK-8135 + Dell + + + + + dellusbmm + Dell USB Multimedia + Dell + + + + + inspiron + Dell Inspiron 6000/8000 laptop + Dell + + + + + precision_m + Dell Precision M laptop + Dell + + + + + dexxa + Dexxa Wireless Desktop + Dexxa + + + + + diamond + Diamond 9801/9802 + Diamond + + + + + dtk2000 + DTK2000 + + + + + ennyah_dkb1008 + Ennyah DKB-1008 + Ennyah + + + + + fscaa1667g + Fujitsu-Siemens Amilo laptop + Fujitsu-Siemens + + + + + genius + Genius Comfy KB-16M/Multimedia KWD-910 + Genius + + + + + geniuscomfy + Genius Comfy KB-12e + Genius + + + + + geniuscomfy2 + Genius Comfy KB-21e-Scroll + Genius + + + + + geniuskb19e + Genius KB-19e NB + Genius + + + + + geniuskkb2050hs + Genius KKB-2050HS + Genius + + + + + gyration + Gyration + Gyration + + + + + kinesis + Kinesis + Kinesis + + + + + logitech_base + Logitech + Logitech + + + + + logitech_g15 + Logitech G15 extra keys via G15daemon + Logitech + + + + + hpi6 + Hewlett-Packard Internet + Hewlett-Packard + + + + + hp250x + Hewlett-Packard NEC SK-2500 Multimedia + Hewlett-Packard + + + + + hpxe3gc + Hewlett-Packard Omnibook XE3 GC + Hewlett-Packard + + + + + hpxe3gf + Hewlett-Packard Omnibook XE3 GF + Hewlett-Packard + + + + + hpxt1000 + Hewlett-Packard Omnibook XT1000 + Hewlett-Packard + + + + + hpdv5 + Hewlett-Packard Pavilion dv5 + Hewlett-Packard + + + + + hpzt11xx + Hewlett-Packard Pavilion ZT1100 + Hewlett-Packard + + + + + hp500fa + Hewlett-Packard Omnibook 500 FA + Hewlett-Packard + + + + + hp5xx + Hewlett-Packard Omnibook 500 + Hewlett-Packard + + + + + hpnx9020 + Hewlett-Packard nx9020 + Hewlett-Packard + + + + + hp6000 + Hewlett-Packard Omnibook 6000/6100 + Hewlett-Packard + + + + + honeywell_euroboard + Honeywell Euroboard + Hewlett-Packard + + + + + hpmini110 + Hewlett-Packard Mini 110 laptop + Hewlett-Packard + + + + + rapidaccess + IBM Rapid Access + Lenovo (previously IBM) + + + + + rapidaccess2 + IBM Rapid Access II + Lenovo (previously IBM) + + + + + thinkpad + IBM ThinkPad 560Z/600/600E/A22E + Lenovo (previously IBM) + + + + + thinkpad60 + IBM ThinkPad R60/T60/R61/T61 + Lenovo (previously IBM) + + + + + thinkpadz60 + IBM ThinkPad Z60m/Z60t/Z61m/Z61t + Lenovo (previously IBM) + + + + + ibm_spacesaver + IBM Space Saver + Lenovo (previously IBM) + + + + + logiaccess + Logitech Access + Logitech + + + + + logiclx300 + Logitech Cordless Desktop LX-300 + Logitech + + + + + logii350 + Logitech Internet 350 + Logitech + 046d:c313 + + + + + logimel + Logitech Internet 350 + Logitech + + + + + logicd + Logitech Cordless Desktop + Logitech + + + + + logicd_it + Logitech Cordless Desktop iTouch + Logitech + + + + + logicd_nav + Logitech Cordless Desktop Navigator + Logitech + + + + + logicd_opt + Logitech Cordless Desktop Optical + Logitech + + + + + logicda + Logitech Cordless Desktop (alt.) + Logitech + + + + + logicdpa2 + Logitech Cordless Desktop Pro (2nd alt.) + Logitech + + + + + logicfn + Logitech Cordless Freedom/Desktop Navigator + Logitech + + + + + logicdn + Logitech Cordless Desktop Navigator + Logitech + + + + + logiitc + Logitech iTouch Cordless Y-RB6 + Logitech + + + + + logiik + Logitech Internet + Logitech + + + + + itouch + Logitech iTouch + Logitech + + + + + logicink + Logitech Internet Navigator + Logitech + + + + + logiex110 + Logitech Cordless Desktop EX110 + Logitech + + + + + logiinkse + Logitech iTouch Internet Navigator SE + Logitech + + + + + logiinkseusb + Logitech iTouch Internet Navigator SE USB + Logitech + + + + + logiultrax + Logitech Ultra-X + Logitech + + + + + logiultraxc + Logitech Ultra-X Cordless Media Desktop + Logitech + + + + + logidinovo + Logitech diNovo + Logitech + + + + + logidinovoedge + Logitech diNovo Edge + Logitech + + + + + mx1998 + Memorex MX1998 + Memorex + + + + + mx2500 + Memorex MX2500 EZ-Access + Memorex + + + + + mx2750 + Memorex MX2750 + Memorex + + + + + microsoft4000 + Microsoft Natural Ergonomic 4000 + Microsoft + + + + + microsoft7000 + Microsoft Natural Wireless Ergonomic 7000 + Microsoft + + + + + microsoftinet + Microsoft Internet + Microsoft + + + + + microsoftpro + Microsoft Natural Pro/Internet Pro + Microsoft + + + + + microsoftprousb + Microsoft Natural Pro USB/Internet Pro + Microsoft + + + + + microsoftprooem + Microsoft Natural Pro OEM + Microsoft + + + + + vsonku306 + ViewSonic KU-306 Internet + ViewSonic + + + + + microsoftprose + Microsoft Internet Pro (Swedish) + Microsoft + + + + + microsoftoffice + Microsoft Office Keyboard + Microsoft + + + + + microsoftmult + Microsoft Wireless Multimedia 1.0A + Microsoft + + + + + microsoftsurface + Microsoft Surface + Microsoft + + + + + microsoftelite + Microsoft Natural Elite + Microsoft + + + + + microsoftccurve2k + Microsoft Comfort Curve 2000 + Microsoft + + + + + oretec + Ortek Multimedia/Internet MCK-800 + Ortek + + + + + propeller + Propeller Voyager KTEZ-1000 + KeyTronic + + + + + qtronix + QTronix Scorpius 98N+ + QTronix + + + + + samsung4500 + Samsung SDM 4500P + Samsung + + + + + samsung4510 + Samsung SDM 4510P + Samsung + + + + + sanwaskbkg3 + Sanwa Supply SKB-KG3 + Sanwa Supply Inc. + + + + + sk1300 + NEC SK-1300 + NEC + + + + + sk2500 + NEC SK-2500 + NEC + + + + + sk6200 + NEC SK-6200 + NEC + + + + + sk7100 + NEC SK-7100 + NEC + + + + + sp_inet + Super Power Multimedia + Generic + + + + + sven + SVEN Ergonomic 2500 + SVEN + + + + + sven303 + SVEN Slim 303 + SVEN + + + + + symplon + Symplon PaceBook tablet + Symplon + + + + + toshiba_s3000 + Toshiba Satellite S3000 + Toshiba + + + + + trust + Trust Wireless Classic + Trust + + + + + trustda + Trust Direct Access + Trust + + + + + trust_slimline + Trust Slimline + Trust + + + + + tm2020 + TypeMatrix EZ-Reach 2020 + TypeMatrix + + + + + tm2030PS2 + TypeMatrix EZ-Reach 2030 PS2 + TypeMatrix + + + + + tm2030USB + TypeMatrix EZ-Reach 2030 USB + TypeMatrix + + + + + tm2030USB-102 + TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + TypeMatrix + + + + + tm2030USB-106 + TypeMatrix EZ-Reach 2030 USB (106:JP mode) + TypeMatrix + + + + + yahoo + Yahoo! Internet + Yahoo! + + + + + macbook78 + MacBook/MacBook Pro + Apple + + + + + macbook79 + MacBook/MacBook Pro (intl.) + Apple + + + + + macintosh + Macintosh + Apple + + + + + macintosh_old + Macintosh Old + Apple + + + + + macintosh_hhk + Happy Hacking for Mac + Fujitsu + + + + + acer_c300 + Acer C300 + Acer + + + + + acer_ferrari4k + Acer Ferrari 4000 + Acer + + + + + acer_laptop + Acer laptop + Acer + + + + + asus_laptop + Asus laptop + Asus + + + + + apple + Apple + Apple + + + + + apple_laptop + Apple laptop + Apple + + + + + applealu_ansi + Apple Aluminium (ANSI) + Apple + + + + + applealu_iso + Apple Aluminium (ISO) + Apple + + + + + applealu_jis + Apple Aluminium (JIS) + Apple + + + + + silvercrest + Silvercrest Multimedia Wireless + Silvercrest + + + + + emachines + eMachines m6800 laptop + eMachines + + + + + benqx + BenQ X-Touch + BenQ + + + + + benqx730 + BenQ X-Touch 730 + BenQ + + + + + benqx800 + BenQ X-Touch 800 + BenQ + + + + + hhk + Happy Hacking + Fujitsu + + + + + classmate + Classmate PC + Intel + + + + + olpc + OLPC + OLPC + + + + + sun_type7_usb + Sun Type 7 USB + Sun Microsystems + + + + + sun_type7_euro_usb + Sun Type 7 USB (European) + Sun Microsystems + + + + + sun_type7_unix_usb + Sun Type 7 USB (Unix) + Sun Microsystems + + + + + sun_type7_jp_usb + Sun Type 7 USB (Japanese)/Japanese 106-key + Sun Microsystems + + + + + sun_type6_usb + Sun Type 6/7 USB + Sun Microsystems + + + + + sun_type6_euro_usb + Sun Type 6/7 USB (European) + Sun Microsystems + + + + + sun_type6_unix_usb + Sun Type 6 USB (Unix) + Sun Microsystems + + + + + sun_type6_jp_usb + Sun Type 6 USB (Japanese) + Sun Microsystems + + + + + sun_type6_jp + Sun Type 6 (Japanese) + Sun Microsystems + + + + + targa_v811 + Targa Visionary 811 + Targa + + + + + unitekkb1925 + Unitek KB-1925 + Unitek Group + + + + + compalfl90 + FL90 + Compal Electronics + + + + + creativedw7000 + Creative Desktop Wireless 7000 + Creative + + + + + teck227 + Truly Ergonomic 227 + Truly Ergonomic + + + + + teck229 + Truly Ergonomic 229 + Truly Ergonomic + + + + + apex300 + SteelSeries Apex 300 (Apex RAW) + SteelSeries + + + + + chromebook + Chromebook + Google + + + + + teck227 + Truly Ergonomic Computer Keyboard Model 227 (Wide Alt keys) + Megawin Technology + + + + + teck229 + Truly Ergonomic Computer Keyboard Model 229 (Standard sized Alt keys, additional Super and Menu key) + Megawin Technology + + + + + + + us + + en + English (US) + + eng + + + + + + chr + + chr + Cherokee + + chr + + + + + + haw + haw + Hawaiian + + haw + + + + + + euro + English (US, euro on 5) + + + + + intl + English (US, intl., with dead keys) + + + + + alt-intl + English (US, alt. intl.) + + + + + colemak + English (Colemak) + + + + + dvorak + English (Dvorak) + + + + + dvorak-intl + English (Dvorak, intl., with dead keys) + + + + + dvorak-alt-intl + English (Dvorak, alt. intl.) + + + + + dvorak-l + English (Dvorak, left-handed) + + + + + dvorak-r + English (Dvorak, right-handed) + + + + + dvorak-classic + English (classic Dvorak) + + + + + dvp + English (programmer Dvorak) + + + + + rus + + ru + Russian (US, phonetic) + + rus + + + + + + mac + English (Macintosh) + + + + + altgr-intl + English (intl., with AltGr dead keys) + + eng + fra + deu + + + + + + olpc2 + English (the divide/multiply toggle the layout) + + + + + hbs + Serbo-Croatian (US) + + eng + bos + hbs + hrv + srp + + + + + + norman + English (Norman) + + + + + workman + English (Workman) + + + + + workman-intl + English (Workman, intl., with dead keys) + + + + + + + af + + fa + Afghani + + + + + ps + + ps + Pashto + + pus + + + + + + uz + + uz + Uzbek (Afghanistan) + + uzb + + + + + + olpc-ps + + ps + Pashto (Afghanistan, OLPC) + + pus + + + + + + fa-olpc + + fa + Persian (Afghanistan, Dari OLPC) + + + + + uz-olpc + + uz + Uzbek (Afghanistan, OLPC) + + uzb + + + + + + + + ara + + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + azerty + Arabic (AZERTY) + + + + + azerty_digits + Arabic (AZERTY, Eastern Arabic numerals) + + + + + digits + Arabic (Eastern Arabic numerals) + + + + + qwerty + Arabic (QWERTY) + + + + + qwerty_digits + Arabic (QWERTY, Eastern Arabic numerals) + + + + + buckwalter + Arabic (Buckwalter) + + + + + olpc + Arabic (OLPC) + + + + + mac + Arabic (Macintosh) + + + + + + + al + + sq + Albanian + + sqi + + + + + + plisi + Albanian (Plisi) + + + + + veqilharxhi + Albanian (Veqilharxhi) + + + + + + + am + + hy + Armenian + + hye + + + + + + phonetic + Armenian (phonetic) + + + + + phonetic-alt + Armenian (alt. phonetic) + + + + + eastern + Armenian (eastern) + + + + + western + Armenian (western) + + + + + eastern-alt + Armenian (alt. eastern) + + + + + + + at + + de + German (Austria) + + deu + + + + + + nodeadkeys + German (Austria, no dead keys) + + + + + sundeadkeys + German (Austria, Sun dead keys) + + + + + mac + German (Austria, Macintosh) + + + + + + + au + + en + English (Australian) + + eng + + + + + + az + + az + Azerbaijani + + aze + + + + + + cyrillic + Azerbaijani (Cyrillic) + + + + + + + by + + by + Belarusian + + bel + + + + + + legacy + Belarusian (legacy) + + + + + latin + Belarusian (Latin) + + + + + ru + Russian (Belarus) + + + + + intl + Belarusian (intl.) + + + + + + + be + + be + Belgian + + deu + nld + fra + + + + + + oss + Belgian (alt.) + + + + + oss_latin9 + Belgian (Latin-9 only, alt.) + + + + + oss_sundeadkeys + Belgian (Sun dead keys, alt.) + + + + + iso-alternate + Belgian (ISO, alt.) + + + + + nodeadkeys + Belgian (no dead keys) + + + + + sundeadkeys + Belgian (Sun dead keys) + + + + + wang + Belgian (Wang 724 AZERTY) + + + + + + + bd + + bn + Bangla + + ben + + sat + + + + + + probhat + Bangla (Probhat) + + + + + + + in + + in + Indian + + + + + ben + + bn + Bangla (India) + + ben + + sat + + + + + + ben_probhat + + bn + Bangla (India, Probhat) + + ben + + sat + + + + + + ben_baishakhi + Bangla (India, Baishakhi) + + ben + + sat + + + + + + ben_bornona + Bangla (India, Bornona) + + ben + + sat + + + + + + ben_gitanjali + Bangla (India, Gitanjali) + + ben + + sat + + + + + + ben_inscript + Bangla (India, Baishakhi Inscript) + + ben + + sat + + + + + + eeyek + Manipuri (Eeyek) + + mni + + + + + + guj + + gu + Gujarati + + guj + + + + + + guru + + pa + Punjabi (Gurmukhi) + + pan + + + + + + jhelum + + pa + Punjabi (Gurmukhi Jhelum) + + pan + + + + + + kan + + kn + Kannada + + kan + + + + + + kan-kagapa + + kn + Kannada (KaGaPa, phonetic) + + kan + + + + + + mal + + ml + Malayalam + + mal + + + + + + mal_lalitha + + ml + Malayalam (Lalitha) + + mal + + + + + + mal_enhanced + + ml + Malayalam (enhanced Inscript, with rupee) + + mal + + + + + + ori + + or + Oriya + + ori + + sat + + + + + + olck + + sat + Ol Chiki + + + sat + + + + + + tam_tamilnet + + ta + Tamil (TamilNet '99) + + tam + + + + + + tam_tamilnet_with_tam_nums + + ta + Tamil (TamilNet '99 with Tamil numerals) + + tam + + + + + + tam_tamilnet_TAB + + ta + Tamil (TamilNet '99, TAB encoding) + + tam + + + + + + tam_tamilnet_TSCII + + ta + Tamil (TamilNet '99, TSCII encoding) + + tam + + + + + + tam + + ta + Tamil (Inscript) + + tam + + + + + + tel + + te + Telugu + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + tel-sarala + + te + Telugu (Sarala) + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + urd-phonetic + + ur + Urdu (phonetic) + + urd + + + + + + urd-phonetic3 + + ur + Urdu (alt. phonetic) + + urd + + + + + + urd-winkeys + + ur + Urdu (Windows) + + urd + + + + + + bolnagri + + hi + Hindi (Bolnagri) + + hin + + + + + + hin-wx + + hi + Hindi (Wx) + + hin + + + + + + hin-kagapa + + hi + Hindi (KaGaPa, phonetic) + + hin + + + + + + san-kagapa + + sa + Sanskrit (KaGaPa, phonetic) + + san + + + + + + mar-kagapa + + mr + Marathi (KaGaPa, phonetic) + + mar + + + + + + eng + + en + English (India, with rupee) + + eng + + + + + + iipa + iipa + Indic IPA (IIPA) + + eng + + + + + + + marathi + ins + मराठी इन्स्क्रिप्ट + + eng + + + + + + + + ba + + bs + Bosnian + + bos + + + + + + alternatequotes + Bosnian (with guillemets) + + + + + unicode + Bosnian (with Bosnian digraphs) + + + + + unicodeus + Bosnian (US, with Bosnian digraphs) + + + + + us + Bosnian (US) + + + + + + + br + + pt + Portuguese (Brazil) + + por + + + + + + nodeadkeys + Portuguese (Brazil, no dead keys) + + + + + dvorak + Portuguese (Brazil, Dvorak) + + + + + nativo + Portuguese (Brazil, Nativo) + + + + + nativo-us + Portuguese (Brazil, Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Brazil, Nativo) + + epo + + + + + + thinkpad + Portuguese (Brazil, IBM/Lenovo ThinkPad) + + + + + + + bg + + bg + Bulgarian + + bul + + + + + + phonetic + Bulgarian (traditional phonetic) + + + + + bas_phonetic + Bulgarian (new phonetic) + + + + + + + dz + kab + Kabylian (azerty layout, no dead keys) + + + + + azerty-deadkeys + kab + Kabylian (azerty layout, with dead keys) + + kab + + + + + + qwerty-gb-deadkeys + kab + Kabylian (qwerty-gb layout, with dead keys) + + kab + + + + + + qwerty-us-deadkeys + kab + Kabylian (qwerty-us layout, with dead keys) + + kab + + + + + + ber + kab + Kabylian (Algeria, Tifinagh) + + kab + + + + + + ar + ar + Arabic (Algeria) + + ara + + + + + + + + ma + + ar + Arabic (Morocco) + + + + + french + + fr + French (Morocco) + + fra + + + + + + tifinagh + + ber + Berber (Morocco, Tifinagh) + + ber + + + + + + tifinagh-alt + + ber + Berber (Morocco, Tifinagh alt.) + + ber + + + + + + tifinagh-alt-phonetic + + ber + Berber (Morocco, Tifinagh phonetic, alt.) + + ber + + + + + + tifinagh-extended + + ber + Berber (Morocco, Tifinagh extended) + + ber + + + + + + tifinagh-phonetic + + ber + Berber (Morocco, Tifinagh phonetic) + + ber + + + + + + tifinagh-extended-phonetic + + ber + Berber (Morocco, Tifinagh extended phonetic) + + ber + + + + + + + + cm + + cm + English (Cameroon) + + eng + + + + + + french + French (Cameroon) + + fra + + + + + + qwerty + Cameroon Multilingual (QWERTY, intl.) + + eng + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + azerty + Cameroon (AZERTY, intl.) + + fra + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + dvorak + Cameroon (Dvorak, intl.) + + + + + mmuock + Mmuock + + + + + + + mm + + my + Burmese + + mya + + + + + + zawgyi + zg + Burmese Zawgyi + + + + + + + ca + + fr + French (Canada) + + fra + + + + + + fr-dvorak + + fr + French (Canada, Dvorak) + + + + + fr-legacy + + fr + French (Canada, legacy) + + + + + multix + Canadian (intl.) + + + + + multi + Canadian (intl., 1st part) + + + + + multi-2gr + Canadian (intl., 2nd part) + + + + + ike + + ike + Inuktitut + + iku + + + + + + eng + + en + English (Canada) + + eng + + + + + + + + cd + + fr + French (Democratic Republic of the Congo) + + fra + + + + + + + cn + + zh + Chinese + + zho + + + + + + + mon_trad + Mongolian (Bichig) + + mvf + + + + + + mon_trad_todo + Mongolian (Todo) + + mvf + + + + + + mon_trad_xibe + Mongolian (Xibe) + + sjo + + + + + + mon_trad_manchu + Mongolian (Manchu) + + mnc + + + + + + mon_trad_galik + Mongolian (Galik) + + mvf + + + + + + mon_todo_galik + Mongolian (Todo Galik) + + mvf + + + + + + mon_manchu_galik + Mongolian (Manchu Galik) + + mnc + + + + + + + tib + Tibetan + + tib + + + + + + tib_asciinum + Tibetan (with ASCII numerals) + + tib + + + + + + ug + ug + Uyghur + + uig + + + + + + altgr-pinyin + Hanyu Pinyin (with AltGr dead keys) + + zho + + + + + + + + hr + + hr + Croatian + + hrv + + + + + + alternatequotes + Croatian (with guillemets) + + + + + unicode + Croatian (with Croatian digraphs) + + + + + unicodeus + Croatian (US, with Croatian digraphs) + + + + + us + Croatian (US) + + + + + + + cz + + cs + Czech + + ces + + + + + + bksl + Czech (with <\|> key) + + + + + qwerty + Czech (QWERTY) + + + + + qwerty_bksl + Czech (QWERTY, extended backslash) + + + + + qwerty-mac + Czech (QWERTY, Macintosh) + + + + + ucw + Czech (UCW, only accented letters) + + + + + dvorak-ucw + Czech (US, Dvorak, UCW support) + + + + + rus + + ru + Russian (Czech, phonetic) + + rus + + + + + + + + dk + + da + Danish + + dan + + + + + + nodeadkeys + Danish (no dead keys) + + + + + winkeys + Danish (Windows) + + + + + mac + Danish (Macintosh) + + + + + mac_nodeadkeys + Danish (Macintosh, no dead keys) + + + + + dvorak + Danish (Dvorak) + + + + + + + nl + + nl + Dutch + + nld + + + + + + sundeadkeys + Dutch (Sun dead keys) + + + + + mac + Dutch (Macintosh) + + + + + std + Dutch (standard) + + + + + + + bt + + dz + Dzongkha + + dzo + + + + + + ee + + et + Estonian + + est + + + + + + nodeadkeys + Estonian (no dead keys) + + + + + dvorak + Estonian (Dvorak) + + + + + us + Estonian (US) + + + + + + + ir + + fa + Persian + + fas + + + + + + pes_keypad + Persian (with Persian keypad) + + + + + ku + + ku + Kurdish (Iran, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iran, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Iran, Latin Alt-Q) + + kur + + + + + + ku_ara + + ku + Kurdish (Iran, Arabic-Latin) + + kur + + + + + + + + iq + + ar + Iraqi + + ara + kur + + + + + + ku + + ku + Kurdish (Iraq, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iraq, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Iraq, Latin Alt-Q) + + kur + + + + + + ku_ara + + ku + Kurdish (Iraq, Arabic-Latin) + + kur + + + + + + + + fo + + fo + Faroese + + fao + + + + + + nodeadkeys + Faroese (no dead keys) + + + + + + + fi + + fi + Finnish + + fin + + + + + + winkeys + Finnish (Windows) + + + + + classic + Finnish (classic) + + + + + nodeadkeys + Finnish (classic, no dead keys) + + + + + smi + Northern Saami (Finland) + + sme + + + + + + mac + Finnish (Macintosh) + + + + + + + fr + + fr + French + + fra + + + + + + nodeadkeys + French (no dead keys) + + + + + sundeadkeys + French (Sun dead keys) + + + + + oss + French (alt.) + + + + + oss_latin9 + French (alt., Latin-9 only) + + + + + oss_nodeadkeys + French (alt., no dead keys) + + + + + oss_sundeadkeys + French (alt., Sun dead keys) + + + + + latin9 + French (legacy, alt.) + + + + + latin9_nodeadkeys + French (legacy, alt., no dead keys) + + + + + latin9_sundeadkeys + French (legacy, alt., Sun dead keys) + + + + + bepo + French (BEPO) + + + + + bepo_latin9 + French (BEPO, Latin-9 only) + + + + + bepo_afnor + French (BEPO, AFNOR) + + + + + dvorak + French (Dvorak) + + + + + mac + French (Macintosh) + + + + + azerty + French (AZERTY) + + + + + afnor + French (AZERTY, AFNOR) + + + + + bre + French (Breton) + + + + + oci + Occitan + + oci + + + + + + geo + Georgian (France, AZERTY Tskapo) + + kat + + + + + + us + French (US) + + + + + + + gh + + en + English (Ghana) + + eng + + + + + + generic + English (Ghana, multilingual) + + + + + akan + + ak + Akan + + aka + + + + + + ewe + + ee + Ewe + + ewe + + + + + + fula + + ff + Fula + + ful + + + + + + ga + + gaa + Ga + + gaa + + + + + + hausa + + ha + Hausa (Ghana) + + hau + + + + + + avn + + avn + Avatime + + avn + + + + + + gillbt + English (Ghana, GILLBT) + + + + + + + gn + + fr + French (Guinea) + + fra + + + + + + + ge + + ka + Georgian + + kat + + + + + + ergonomic + Georgian (ergonomic) + + + + + mess + Georgian (MESS) + + + + + ru + + ru + Russian (Georgia) + + rus + + + + + + os + Ossetian (Georgia) + + oss + + + + + + + + de + + de + German + + deu + + + + + + deadacute + German (dead acute) + + + + + deadgraveacute + German (dead grave acute) + + + + + nodeadkeys + German (no dead keys) + + + + + T3 + German (T3) + + + + + ro + Romanian (Germany) + + ron + + + + + + ro_nodeadkeys + Romanian (Germany, no dead keys) + + ron + + + + + + dvorak + German (Dvorak) + + + + + sundeadkeys + German (Sun dead keys) + + + + + neo + German (Neo 2) + + + + + mac + German (Macintosh) + + + + + mac_nodeadkeys + German (Macintosh, no dead keys) + + + + + dsb + Lower Sorbian + + dsb + + + + + + dsb_qwertz + Lower Sorbian (QWERTZ) + + dsb + + + + + + qwerty + German (QWERTY) + + + + + tr + Turkish (Germany) + + tr + + + + + + ru + + ru + Russian (Germany, phonetic) + + rus + + + + + + deadtilde + German (dead tilde) + + + + + + + gr + + gr + Greek + + ell + + + + + + simple + Greek (simple) + + + + + extended + Greek (extended) + + + + + nodeadkeys + Greek (no dead keys) + + + + + polytonic + Greek (polytonic) + + + + + + + hu + + hu + Hungarian + + hun + + + + + + standard + Hungarian (standard) + + + + + nodeadkeys + Hungarian (no dead keys) + + + + + qwerty + Hungarian (QWERTY) + + + + + 101_qwertz_comma_dead + Hungarian (QWERTZ, 101-key, comma, dead keys) + + + + + 101_qwertz_comma_nodead + Hungarian (QWERTZ, 101-key, comma, no dead keys) + + + + + 101_qwertz_dot_dead + Hungarian (QWERTZ, 101-key, dot, dead keys) + + + + + 101_qwertz_dot_nodead + Hungarian (QWERTZ, 101-key, dot, no dead keys) + + + + + 101_qwerty_comma_dead + Hungarian (QWERTY, 101-key, comma, dead keys) + + + + + 101_qwerty_comma_nodead + Hungarian (QWERTY, 101-key, comma, no dead keys) + + + + + 101_qwerty_dot_dead + Hungarian (QWERTY, 101-key, dot, dead keys) + + + + + 101_qwerty_dot_nodead + Hungarian (QWERTY, 101-key, dot, no dead keys) + + + + + 102_qwertz_comma_dead + Hungarian (QWERTZ, 102-key, comma, dead keys) + + + + + 102_qwertz_comma_nodead + Hungarian (QWERTZ, 102-key, comma, no dead keys) + + + + + 102_qwertz_dot_dead + Hungarian (QWERTZ, 102-key, dot, dead keys) + + + + + 102_qwertz_dot_nodead + Hungarian (QWERTZ, 102-key, dot, no dead keys) + + + + + 102_qwerty_comma_dead + Hungarian (QWERTY, 102-key, comma, dead keys) + + + + + 102_qwerty_comma_nodead + Hungarian (QWERTY, 102-key, comma, no dead keys) + + + + + 102_qwerty_dot_dead + Hungarian (QWERTY, 102-key, dot, dead keys) + + + + + 102_qwerty_dot_nodead + Hungarian (QWERTY, 102-key, dot, no dead keys) + + + + + + + is + + is + Icelandic + + isl + + + + + + Sundeadkeys + Icelandic (Sun dead keys) + + + + + nodeadkeys + Icelandic (no dead keys) + + + + + mac_legacy + Icelandic (Macintosh, legacy) + + + + + mac + Icelandic (Macintosh) + + + + + dvorak + Icelandic (Dvorak) + + + + + + + il + + he + Hebrew + + heb + + + + + + lyx + Hebrew (lyx) + + + + + phonetic + Hebrew (phonetic) + + + + + biblical + Hebrew (Biblical, Tiro) + + + + + + + it + + it + Italian + + ita + + + + + + nodeadkeys + Italian (no dead keys) + + + + + winkeys + Italian (Windows) + + + + + mac + Italian (Macintosh) + + + + + us + Italian (US) + + + + + geo + Georgian (Italy) + + kat + + + + + + ibm + Italian (IBM 142) + + + + + intl + Italian (intl., with dead keys) + + deu + fra + ita + slk + srd + nap + scn + fur + + + + + + scn + Sicilian + + ita + scn + + + + + + fur + Friulian (Italy) + + fur + + + + + + + + jp + + ja + Japanese + + jpn + + + + + + kana + Japanese (Kana) + + + + + kana86 + Japanese (Kana 86) + + + + + OADG109A + Japanese (OADG 109A) + + + + + mac + Japanese (Macintosh) + + + + + dvorak + Japanese (Dvorak) + + + + + + + kg + + ki + Kyrgyz + + kir + + + + + + phonetic + Kyrgyz (phonetic) + + + + + + + kh + + km + Khmer (Cambodia) + + khm + + + + + + + kz + + kk + Kazakh + + kaz + + + + + + ruskaz + + ru + Russian (Kazakhstan, with Kazakh) + + kaz + rus + + + + + + kazrus + Kazakh (with Russian) + + kaz + rus + + + + + + ext + Kazakh (extended) + + kaz + + + + + + latin + Kazakh (Latin) + + kaz + + + + + + + + la + + lo + Lao + + lao + + + + + + stea + Lao (STEA) + + lao + + + + + + + + latam + + es + Spanish (Latin American) + + AR + BO + CL + CO + CR + CU + DO + EC + GT + HN + HT + MX + NI + PA + PE + PR + PY + SV + US + UY + VE + + + spa + + + + + + nodeadkeys + Spanish (Latin American, no dead keys) + + + + + deadtilde + Spanish (Latin American, dead tilde) + + + + + sundeadkeys + Spanish (Latin American, Sun dead keys) + + + + + dvorak + Spanish (Latin American, Dvorak) + + + + + colemak + Spanish (Latin American, Colemak) + + + + + colemak-gaming + Spanish (Latin American, Colemak for gaming) + + + + + + + lt + + lt + Lithuanian + + lit + + + + + + std + Lithuanian (standard) + + + + + us + Lithuanian (US) + + + + + ibm + Lithuanian (IBM LST 1205-92) + + + + + lekp + Lithuanian (LEKP) + + + + + lekpa + Lithuanian (LEKPa) + + + + + sgs + Samogitian + + sgs + + + + + + + + lv + + lv + Latvian + + lav + + + + + + apostrophe + Latvian (apostrophe) + + + + + tilde + Latvian (tilde) + + + + + fkey + Latvian (F) + + + + + modern + Latvian (modern) + + + + + ergonomic + Latvian (ergonomic, ŪGJRMV) + + + + + adapted + Latvian (adapted) + + + + + + + mao + + mi + Maori + + mri + + + + + + + me + + sr + Montenegrin + + srp + + + + + + cyrillic + Montenegrin (Cyrillic) + + + + + cyrillicyz + Montenegrin (Cyrillic, ZE and ZHE swapped) + + + + + latinunicode + Montenegrin (Latin, Unicode) + + + + + latinyz + Montenegrin (Latin, QWERTY) + + + + + latinunicodeyz + Montenegrin (Latin, Unicode, QWERTY) + + + + + cyrillicalternatequotes + Montenegrin (Cyrillic, with guillemets) + + + + + latinalternatequotes + Montenegrin (Latin, with guillemets) + + + + + + + mk + + mk + Macedonian + + mkd + + + + + + nodeadkeys + Macedonian (no dead keys) + + + + + + + mt + + mt + Maltese + + mlt + + + + + + us + Maltese (US) + + + + + alt-us + Maltese (US layout with AltGr overrides) + + + + + alt-gb + Maltese (UK, with AltGr overrides) + + + + + + + mn + + mn + Mongolian + + mon + + + + + + + no + + no + Norwegian + + nor + nob + nno + + + + + + nodeadkeys + Norwegian (no dead keys) + + + + + winkeys + Norwegian (Windows) + + + + + dvorak + Norwegian (Dvorak) + + + + + smi + Northern Saami (Norway) + + sme + + + + + + smi_nodeadkeys + Northern Saami (Norway, no dead keys) + + sme + + + + + + mac + Norwegian (Macintosh) + + + + + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + + + + + colemak + Norwegian (Colemak) + + + + + + + pl + + pl + Polish + + pol + + + + + + legacy + Polish (legacy) + + + + + qwertz + Polish (QWERTZ) + + + + + dvorak + Polish (Dvorak) + + + + + dvorak_quotes + Polish (Dvorak, with Polish quotes on quotemark key) + + + + + dvorak_altquotes + Polish (Dvorak, with Polish quotes on key 1) + + + + + csb + Kashubian + + csb + + + + + + szl + Silesian + + szl + + + + + + ru_phonetic_dvorak + + ru + Russian (Poland, phonetic Dvorak) + + rus + + + + + + dvp + Polish (programmer Dvorak) + + + + + + + pt + + pt + Portuguese + + por + + + + + + nodeadkeys + Portuguese (no dead keys) + + + + + sundeadkeys + Portuguese (Sun dead keys) + + + + + mac + Portuguese (Macintosh) + + + + + mac_nodeadkeys + Portuguese (Macintosh, no dead keys) + + + + + mac_sundeadkeys + Portuguese (Macintosh, Sun dead keys) + + + + + nativo + Portuguese (Nativo) + + + + + nativo-us + Portuguese (Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Portugal, Nativo) + + epo + + + + + + + + ro + + ro + Romanian + + ron + + + + + + cedilla + Romanian (cedilla) + + + + + std + Romanian (standard) + + + + + std_cedilla + Romanian (standard cedilla) + + + + + winkeys + Romanian (Windows) + + + + + + + ru + + ru + Russian + + rus + + + + + + phonetic + Russian (phonetic) + + + + + phonetic_winkeys + Russian (phonetic, Windows) + + + + + phonetic_YAZHERTY + Russian (phonetic, YAZHERTY) + + + + + typewriter + Russian (typewriter) + + + + + legacy + Russian (legacy) + + + + + typewriter-legacy + Russian (typewriter, legacy) + + + + + tt + Tatar + + tat + + + + + + os_legacy + Ossetian (legacy) + + oss + + + + + + os_winkeys + Ossetian (Windows) + + oss + + + + + + cv + Chuvash + + chv + + + + + + cv_latin + Chuvash (Latin) + + chv + + + + + + udm + Udmurt + + udm + + + + + + kom + Komi + + kom + + + + + + sah + Yakut + + sah + + + + + + xal + Kalmyk + + xal + + + + + + dos + Russian (DOS) + + + + + mac + Russian (Macintosh) + + + + + srp + Serbian (Russia) + + rus + srp + + + + + + bak + Bashkirian + + bak + + + + + + chm + Mari + + chm + + + + + + phonetic_azerty + Russian (phonetic, AZERTY) + + + + + phonetic_dvorak + Russian (phonetic, Dvorak) + + + + + phonetic_fr + Russian (phonetic, French) + + + + + + + rs + + sr + Serbian + + srp + + + + + + yz + Serbian (Cyrillic, ZE and ZHE swapped) + + + + + latin + Serbian (Latin) + + + + + latinunicode + Serbian (Latin, Unicode) + + + + + latinyz + Serbian (Latin, QWERTY) + + + + + latinunicodeyz + Serbian (Latin, Unicode, QWERTY) + + + + + alternatequotes + Serbian (Cyrillic, with guillemets) + + + + + latinalternatequotes + Serbian (Latin, with guillemets) + + + + + rue + Pannonian Rusyn + + rue + + + + + + + + si + + sl + Slovenian + + slv + + + + + + alternatequotes + Slovenian (with guillemets) + + + + + us + Slovenian (US) + + + + + + + sk + + sk + Slovak + + slk + + + + + + bksl + Slovak (extended backslash) + + + + + qwerty + Slovak (QWERTY) + + + + + qwerty_bksl + Slovak (QWERTY, extended backslash) + + + + + + + es + + es + Spanish + + spa + + + + + + nodeadkeys + Spanish (no dead keys) + + + + + winkeys + Spanish (Windows) + + + + + deadtilde + Spanish (dead tilde) + + + + + sundeadkeys + Spanish (Sun dead keys) + + + + + dvorak + Spanish (Dvorak) + + + + + ast + ast + Asturian (Spain, with bottom-dot H and L) + + ast + + + + + + cat + ca + Catalan (Spain, with middle-dot L) + + cat + + + + + + mac + Spanish (Macintosh) + + + + + + + se + + sv + Swedish + + swe + + + + + + nodeadkeys + Swedish (no dead keys) + + + + + dvorak + Swedish (Dvorak) + + + + + rus + + ru + Russian (Sweden, phonetic) + + rus + + + + + + rus_nodeadkeys + + ru + Russian (Sweden, phonetic, no dead keys) + + rus + + + + + + smi + Northern Saami (Sweden) + + sme + + + + + + mac + Swedish (Macintosh) + + + + + svdvorak + Swedish (Svdvorak) + + + + + us_dvorak + Swedish (Dvorak, intl.) + + + + + us + Swedish (US) + + + + + swl + Swedish Sign Language + + swl + + + + + + + + ch + + de + German (Switzerland) + + deu + gsw + + + + + + legacy + German (Switzerland, legacy) + + + + + de_nodeadkeys + + de + German (Switzerland, no dead keys) + + + + + de_sundeadkeys + + de + German (Switzerland, Sun dead keys) + + + + + fr + + fr + French (Switzerland) + + fra + + + + + + fr_nodeadkeys + + fr + French (Switzerland, no dead keys) + + fra + + + + + + fr_sundeadkeys + + fr + French (Switzerland, Sun dead keys) + + fra + + + + + + fr_mac + + fr + French (Switzerland, Macintosh) + + fra + + + + + + de_mac + + de + German (Switzerland, Macintosh) + + + + + + + sy + + ar + Arabic (Syria) + + syr + + + + + + syc + + syc + Syriac + + + + + syc_phonetic + + syc + Syriac (phonetic) + + + + + ku + + ku + Kurdish (Syria, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Syria, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Syria, Latin Alt-Q) + + kur + + + + + + + + tj + + tg + Tajik + + tgk + + + + + + legacy + Tajik (legacy) + + + + + + + lk + + si + Sinhala (phonetic) + + sin + + + + + + tam_unicode + + ta + Tamil (Sri Lanka, TamilNet '99) + + tam + + + + + + tam_TAB + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + + tam + + + + + + us + + us + Sinhala (US) + + + + + + + th + + th + Thai + + tha + + + + + + tis + Thai (TIS-820.2538) + + + + + pat + Thai (Pattachote) + + + + + + + tr + + tr + Turkish + + tur + + + + + + f + Turkish (F) + + + + + alt + Turkish (Alt-Q) + + + + + sundeadkeys + Turkish (Sun dead keys) + + + + + ku + + ku + Kurdish (Turkey, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Turkey, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Turkey, Latin Alt-Q) + + kur + + + + + + intl + Turkish (intl., with dead keys) + + + + + crh + + crh + Crimean Tatar (Turkish Q) + + crh + + + + + + crh_f + + crh + Crimean Tatar (Turkish F) + + crh + + + + + + crh_alt + + crh + Crimean Tatar (Turkish Alt-Q) + + crh + + + + + + + + tw + + zh + Taiwanese + + fox + + + + + + indigenous + Taiwanese (indigenous) + + ami + tay + bnn + ckv + pwn + pyu + dru + ais + ssf + tao + tsu + trv + xnb + sxr + uun + fos + + + + + + saisiyat + + xsy + Saisiyat (Taiwan) + + xsy + + + + + + + + ua + + uk + Ukrainian + + ukr + + + + + + phonetic + Ukrainian (phonetic) + + + + + typewriter + Ukrainian (typewriter) + + + + + winkeys + Ukrainian (Windows) + + + + + legacy + Ukrainian (legacy) + + + + + rstu + Ukrainian (standard RSTU) + + + + + rstu_ru + Russian (Ukraine, standard RSTU) + + + + + homophonic + Ukrainian (homophonic) + + + + + + + gb + + en + English (UK) + + eng + + + + + + extd + English (UK, extended, Windows) + + + + + intl + English (UK, intl., with dead keys) + + + + + dvorak + English (UK, Dvorak) + + + + + dvorakukp + English (UK, Dvorak, with UK punctuation) + + + + + mac + English (UK, Macintosh) + + + + + mac_intl + English (UK, Macintosh, intl.) + + + + + colemak + English (UK, Colemak) + + + + + pl + + pl + Polish (British keyboard) + + pol + + + + + + + + uz + + uz + Uzbek + + uzb + + + + + + latin + Uzbek (Latin) + + + + + + + vn + + vi + Vietnamese + + vie + + + + + + us + Vietnamese (US) + + + + + fr + Vietnamese (French) + + + + + + + kr + + ko + Korean + + kor + + + + + + kr104 + Korean (101/104-key compatible) + + + + + + + nec_vndr/jp + + ja + Japanese (PC-98) + + JP + + + jpn + + + + + + ie + + ie + Irish + + eng + + + + + + CloGaelach + CloGaelach + + gle + + + + + + UnicodeExpert + Irish (UnicodeExpert) + + + + + ogam + Ogham + + sga + + + + + + ogam_is434 + Ogham (IS434) + + sga + + + + + + + + pk + + ur + Urdu (Pakistan) + + urd + + + + + + urd-crulp + Urdu (Pakistan, CRULP) + + + + + urd-nla + Urdu (Pakistan, NLA) + + + + + ara + ar + Arabic (Pakistan) + + ara + + + + + + snd + + sd + Sindhi + + snd + + + + + + + + mv + + dv + Dhivehi + + div + + + + + + + za + + en + English (South Africa) + + eng + + + + + + epo + + eo + Esperanto + + epo + + + + + + legacy + Esperanto (legacy) + + + + + + + np + + ne + Nepali + + nep + + sat + + + + + + ng + + en + English (Nigeria) + + eng + + + + + + igbo + + ig + Igbo + + ibo + + + + + + yoruba + + yo + Yoruba + + yor + + + + + + hausa + + ha + Hausa (Nigeria) + + hau + + + + + + + + et + + am + Amharic + + amh + + + + + + + sn + + wo + Wolof + + wol + + + + + + + brai + + brl + Braille + + + + + left_hand + Braille (left-handed) + + + + + left_hand_invert + Braille (left-handed inverted thumb) + + + + + right_hand + Braille (right-handed) + + + + + right_hand_invert + Braille (right-handed inverted thumb) + + + + + + + tm + + tk + Turkmen + + tuk + + + + + + alt + Turkmen (Alt-Q) + + + + + + + ml + + bm + Bambara + + bam + + + + + + fr-oss + + fr + French (Mali, alt.) + + fra + + + + + + us-mac + + en + English (Mali, US, Macintosh) + + eng + + + + + + us-intl + + en + English (Mali, US, intl.) + + eng + + + + + + + + tz + + sw + Swahili (Tanzania) + + swa + + + + + + tg + fr-tg + French (Togo) + + fra + ajg + blo + kpo + ewe + fon + fue + gej + ife + kbp + las + dop + mfg + nmz + bud + gng + kdh + soy + + + + + + ke + + sw + Swahili (Kenya) + + swa + + + + + + kik + + ki + Kikuyu + + kik + + + + + + + + bw + + tn + Tswana + + tsn + + + + + + ph + + ph + Filipino + + eng + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + qwerty-bay + Filipino (QWERTY, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + + + + + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + + + + + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + colemak + Filipino (Colemak, Latin) + + + + + colemak-bay + Filipino (Colemak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + dvorak + Filipino (Dvorak, Latin) + + + + + dvorak-bay + Filipino (Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + + + md + md + Moldavian + + ron + + + + + + gag + gag + Moldavian (Gagauz) + + gag + + + + + + + + id + id + Indonesian (Arab Melayu, phonetic) + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phoneticx + Indonesian (Arab Melayu, extended phonetic) + + + + + + + jv + jv + Indonesian (Javanese) + + jv + + + + + + + my + ms + Malay (Jawi, Arabic Keyboard) + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phonetic + Malay (Jawi, phonetic) + + + + + + + + + + grp + Switching to another layout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + + + + + + + + + + + + + + + + ctrl + Ctrl position + + + + + + + + + + + + + + + + + grp_led + Use keyboard LED to show alternative layout + + + + + + + + + mod_led + Use keyboard LED to indicate modifiers + + + + + + + keypad + Layout of numeric keypad + + + + + + + + + + + + + + + kpdl + Numeric keypad Delete behavior + + + + + + + + + + + + + + caps + Caps Lock behavior + + + + + + + + + + + + + + + + + + + + + + altwin + Alt and Win behavior + + + + + + + + + + + + + + + + + + + Compose key + Position of Compose key + + + + + + + + + + + + + + + + + + + + + + + compat + Compatibility options + + + + + + + + + + + + + + + + + + + + + currencysign + Currency signs + + + + + + + + + + lv5 + Key to choose 5th level + + + + + + + + + + + + + nbsp + Non-breaking space input + + + + + + + + + + + + + + + + + + + + + japan + Japanese keyboard options + + + + + + + + korean + Korean Hangul/Hanja keys + + + + + + + + + esperanto + Esperanto letters with superscripts + + + + + + + + solaris + Old Solaris keycodes compatibility + + + + + + terminate + Key sequence to kill the X server + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 is mapped to the right Win key. +partial modifier_keys +xkb_symbols "menu_win" { + key { [ 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 { [ slash, backslash, bar ] }; key { [ 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 { [ NoSymbol, hyphen ] }; key { [ 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 { [ 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 @@ -34,6 +34,15 @@ xkb_symbols "escape" { key { [ Escape ] }; }; +hidden partial modifier_keys +xkb_symbols "escape_shifted_capslock" { + key { + type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Escape, Caps_Lock ], + actions[Group1] = [ NoAction(), LockMods(modifiers = Lock) ] + }; +}; + hidden partial modifier_keys xkb_symbols "backspace" { key { [ 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 { [ udiaeresis, egrave, section, ydiaeresis ] }; key { [ dead_diaeresis, exclam, grave, apostrophe ] }; key { [ a, A, aring, Aring ] }; - key { [ s, S, ssharp, NoSymbol ] }; + key { [ s, S, ssharp, U1E9E ] }; // ligature fl key { [ 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 { }; }; +// 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 { [ Control_L ] }; + replace key { [ Hyper_L ] }; + modifier_map Control { }; + modifier_map Mod3 { }; +}; + +// Set CapsLock to left Ctrl and left Ctrl to switch layout. +partial modifier_keys +xkb_symbols "swapcaps_and_switch_layout" { + replace key { [ Control_L ] }; + replace key { [ ISO_Next_Group ] }; + modifier_map Control { }; + modifier_map Lock { }; +}; + // 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 { [ backslash, bar, slash, NoSymbol ] }; }; +partial alphanumeric_keys +xkb_symbols "qwerty-mac" { + + // This layout corresponds to the Apple's Czech - QWERTY. + // 2018 by Jakub Jirutka + + include "latin" + name[Group1]= "Czech (QWERTY, Macintosh)"; + + key { [ less, greater, lessthanequal, greaterthanequal]}; + key { [ plus, 1, grave, notsign ] }; + key { [ ecaron, 2, at, enfilledcircbullet]}; + key { [ scaron, 3, numbersign, notequal ] }; + key { [ ccaron, 4, dollar, sterling ] }; + key { [ rcaron, 5, asciitilde, U25CA ] }; + key { [ zcaron, 6, asciicircum, dagger ] }; + key { [ yacute, 7, ampersand, paragraph ] }; + key { [ aacute, 8, asterisk, division ] }; + key { [ iacute, 9, braceleft, guillemotleft] }; + key { [ eacute, 0, braceright, guillemotright]}; + key { [ equal, percent, dead_abovering, dead_cedilla]}; + key { [dead_acute, dead_caron, dead_circumflex, dead_macron]}; + + key { [ q, Q, NoSymbol, NoSymbol ] }; + key { [ w, W, eabovedot, Eabovedot ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ r, R, EuroSign, registered ] }; + key { [ t, T, NoSymbol, trademark ] }; + key { [ y, Y, NoSymbol, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol ] }; + key { [ i, I, NoSymbol, NoSymbol ] }; + key { [ o, O, NoSymbol, NoSymbol ] }; + key { [ p, P, NoSymbol, NoSymbol ] }; + + key { [ uacute, slash, bracketleft, less ] }; + key { [parenright, parenleft, bracketright, greater ] }; + + key { [ a, A, aogonek, Aogonekl ] }; + key { [ s, S, ssharp, U2211 ] }; + key { [ d, D, partialderivate, U2206 ] }; + key { [ f, F, NoSymbol, NoSymbol ] }; + key { [ g, G, NoSymbol, NoSymbol ] }; + key { [ h, H, leftsinglequotemark, leftdoublequotemark]}; + key { [ j, J, rightsinglequotemark, rightdoublequotemark]}; + key { [ k, K, NoSymbol, NoSymbol ] }; + key { [ l, L, lstroke, Lstroke ] }; + + key { [ uring, quotedbl, semicolon, ellipsis ] }; + key { [ section, exclam, apostrophe, dead_tilde ] }; + key { [dead_diaeresis, grave, dead_diaeresis, dead_doubleacute]}; + + key { [ backslash, bar, NoSymbol, NoSymbol ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, NoSymbol, NoSymbol ] }; + key { [ c, C, NoSymbol, copyright ] }; + key { [ v, V, NoSymbol, squareroot ] }; + key { [ b, B, NoSymbol, NoSymbol ] }; + key { [ n, N, singlelowquotemark, doublelowquotemark]}; + key { [ m, M, NoSymbol, NoSymbol ] }; + key { [ comma, question, less, lessthanequal] }; + key { [ period, colon, greater, greaterthanequal]}; + key { [ minus, underscore, endash, emdash ] }; + + key { [ 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 { [zcaron, Zcaron ] }; - key { [ssharp ] }; + key { [ssharp, U1E9E ] }; key { [ccaron, Ccaron ] }; key { [ccedilla, Ccedilla ] }; key { [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 and Tomáš Hudec + // + // 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 { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N, ncaron, Ncaron ] }; + key { [ m, M ] }; + key { [ comma, less, multiply ] }; + key { [ period, greater, division ] }; + key { [ slash, question, dead_abovedot ] }; + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D, dcaron, Dcaron ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon, uring, Uring ] }; + key { [ apostrophe, quotedbl, section ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T, tcaron, Tcaron ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft, uacute, Uacute ] }; + key { [ bracketright, braceright ] }; + key { [ plus, 1, exclam, NoSymbol ] }; + key { [ ecaron, 2, at, Ecaron ] }; + key { [ scaron, 3, numbersign, Scaron ] }; + key { [ ccaron, 4, dollar, Ccaron ] }; + key { [ rcaron, 5, percent, Rcaron ] }; + key { [ zcaron, 6, asciicircum, Zcaron ] }; + key { [ yacute, 7, ampersand, Yacute ] }; + key { [ aacute, 8, asterisk, Aacute ] }; + key { [ iacute, 9, parenleft, Iacute ] }; + key { [ eacute, 0, parenright, Eacute ] }; + key { [ equal, minus, underscore, U2212 ] }; + key { [ dead_acute, dead_caron, plusminus, notequal ] }; + key { [ backslash, bar, dead_diaeresis ] }; + key { [ BackSpace, BackSpace ] }; + key { [ Caps_Lock ] }; + key { [ Menu, Multi_key ] }; + key { [ Alt_L, Meta_L ] }; + key { [ Control_L ] }; + key { [ Shift_L ] }; + key { [ Super_L ] }; + key { [ ISO_Level3_Shift ] }; + key { [ Control_R ] }; + key { [ Return ] }; + key { [ Shift_R ] }; + key { [ Super_R ] }; + key { [ space ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { [ grave, asciitilde ] }; + + include "level3(ralt_switch)" +}; + +xkb_symbols "typo" { + // cz-typo 1.0 2019-05-15 by Viktor Grešák and Tomáš Hudec + // + // 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 { [ NoSymbol, NoSymbol, degree, U2300 ] }; + key { [ NoSymbol, NoSymbol, multiply, U22C5 ] }; + key { [ NoSymbol, NoSymbol, ampersand, copyright ] }; + key { [ NoSymbol, NoSymbol, at, ordfeminine ] }; + key { [ NoSymbol, NoSymbol, enfilledcircbullet, enopencircbullet ] }; + key { [ NoSymbol, NoSymbol, U203A, U2039 ] }; + key { [ NoSymbol, NoSymbol, doublelowquotemark, leftdoublequotemark ] }; + key { [ NoSymbol, NoSymbol, ellipsis, rightdoublequotemark ] }; + key { [ NoSymbol, NoSymbol, endash, emdash ] }; + key { [ NoSymbol, NoSymbol, UFB00, UFB05 ] }; + key { [ NoSymbol, NoSymbol, U2010, U2011 ] }; + key { [ NoSymbol, NoSymbol, guillemotright, guillemotleft ] }; + key { [ NoSymbol, NoSymbol, dagger, doubledagger ] }; + key { [ NoSymbol, NoSymbol, UFB02, UFB04 ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, UFB03 ] }; + key { [ NoSymbol, NoSymbol, U2030, registered ] }; + key { [ NoSymbol, NoSymbol, leftarrow ] }; + key { [ NoSymbol, NoSymbol, downarrow, uparrow ] }; + key { [ NoSymbol, NoSymbol, rightarrow, UFB01 ] }; + key { [ NoSymbol, NoSymbol, minutes, seconds ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, rightsinglequotemark ] }; + key { [ NoSymbol, NoSymbol, underscore, U2212 ] }; + key { [ space, space, space, nobreakspace ] }; + key { [ 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 {[ grave, asciitilde, semicolon, dead_abovering ]}; + key {[ 2, at, ecaron, Ecaron ]}; + key {[ 3, numbersign, scaron, Scaron ]}; + key {[ 4, dollar, ccaron, Ccaron ]}; + key {[ 5, percent, rcaron, Rcaron ]}; + key {[ 6, asciicircum, zcaron, Zcaron ]}; + key {[ 7, ampersand, yacute, Yacute ]}; + key {[ 8, asterisk, aacute, Aacute ]}; + key {[ 9, parenleft, iacute, Iacute ]}; + key {[ 0, parenright, eacute, Eacute ]}; + key {[ equal, plus, dead_acute, dead_caron ]}; + + key {[ e, E, e, EuroSign ]}; + key {[ bracketleft, braceleft, uacute, Uacute ]}; + + key {[ semicolon, colon, uring, Uring ]}; + key {[ apostrophe, quotedbl, section, quotedbl ]}; + key {[ 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 and Tomáš Hudec + // + // 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 { [ udiaeresis, Udiaeresis, dead_horn, NoSymbol, U017F, dead_abovering, dead_grave, NoSymbol ] }; key.type[Group1] = "EIGHT_LEVEL"; key { [ plus, asterisk, asciitilde, NoSymbol, dead_tilde, dead_macron, at, NoSymbol ] }; - + key.type[Group1] = "ONE_LEVEL"; key { [ Caps_Lock ] }; key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; @@ -157,7 +157,7 @@ xkb_symbols "T3" { key { [ v, V, guillemotleft, NoSymbol, leftdoublequotemark, leftsinglequotemark, U2039, NoSymbol ] }; key { [ b, B, U2039, NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A, NoSymbol ] }; key { [ n, N, endash, NoSymbol, U019E, U0220, endash, NoSymbol ] }; - key { [ m, M, Greek_mu, NoSymbol, mu, masculine, emdash, NoSymbol ] }; + key { [ m, M, mu, NoSymbol, mu, masculine, emdash, NoSymbol ] }; key.type[Group1] = "EIGHT_LEVEL"; key { [ comma, semicolon, U02BB, NoSymbol, ellipsis, multiply, dollar, NoSymbol ] }; key { [ 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)"; }; @@ -763,51 +763,6 @@ xkb_symbols "pl" { include "level3(ralt_switch)" }; -partial alphanumeric_keys -xkb_symbols "htcdream" { - include "inet(htcdream)" - - name[Group1]= "German"; - - //second row - key { [ q, Q, Tab, Tab ] }; - key { [ w, W, grave, grave ] }; - key { [ e, E, EuroSign, EuroSign ] }; - key { [ r, R, underscore, underscore ] }; - key { [ t, T, sterling, sterling] }; - key { [ z, Z, division, division ] }; - key { [ u, U, udiaeresis, udiaeresis ] }; - key { [ i, I, minus, minus ] }; - key { [ o, O, odiaeresis, odiaeresis ] }; - key { [ p, P, equal, equal ] }; - - //third row - key { [ a, A, adiaeresis, adiaeresis ] }; - key { [ s, S, ssharp, ssharp] }; - key { [ d ,D, backslash, backslash ] }; - key { [ f, F, braceleft, braceleft ] }; - key { [ g, G, braceright, braceright ] }; - key { [ h, H, multiply, multiply ] }; - key { [ j, J, colon, colon ] }; - key { [ k, K, plus, plus ] }; - key { [ l, L, apostrophe, apostrophe ] }; - - //forth row - key { [ y, Y, bar, bar ] }; - key { [ x, X, bracketleft, bracketleft ] }; - key { [ c, C, bracketright, bracketright ] }; - key { [ v, V, less, less ] }; - key { [ b, B, greater, greater ] }; - key { [ n, N, semicolon, semicolon ] }; - key { [ m, M, quotedbl, quotedbl ] }; - key { [ comma, comma, question, question ] }; - - //fifth row - key { [ at, at, asciitilde, asciitilde ] }; - - include "level3(alt_switch)" -}; - partial alphanumeric_keys xkb_symbols "tr" { @@ -832,10 +787,10 @@ partial alphanumeric_keys xkb_symbols "us" { include "us" - name[Group1]="German (US, with German letters)"; + name[Group1]="German (US)"; key { [ a, A, adiaeresis, Adiaeresis ] }; - key { [ s, S, ssharp, ssharp ] }; + key { [ s, S, ssharp, U1E9E ] }; key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; key { [ apostrophe, quotedbl, adiaeresis, Adiaeresis ] }; key { [ 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 { [ y, Y, guillemotleft, less ] }; key { [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 { [ 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 name[Group1]="Indian"; @@ -248,20 +250,22 @@ xkb_symbols "ben" { xkb_symbols "ben_probhat" { name[Group1]= "Bangla (India, Probhat)"; + key.type="FOUR_LEVEL"; + key { [ Escape ] }; // numbers key { [ U200D, asciitilde ] }; - key { [ U09E7, exclam ] }; - key { [ U09E8, at ] }; - key { [ U09E9, numbersign ] }; - key { [ U09EA, U09F3 ] }; + key { [ U09E7, exclam, U09F4 ] }; + key { [ U09E8, at, U09F5 ] }; + key { [ U09E9, numbersign, U09F6 ] }; + key { [ U09EA, U09F3, U09F7, U09F2 ] }; key { [ U09EB, percent ] }; key { [ U09EC, asciicircum ] }; - key { [ U09ED, U099E ] }; + key { [ U09ED, U099E, U09FA ] }; key { [ U09EE, U09CE ] }; key { [ U09EF, parenleft ] }; - key { [ U09E6, parenright ] }; + key { [ U09E6, parenright, U09F8, U09F9 ] }; key { [ minus, underscore ] }; key { [ equal, plus ] }; key { [ BackSpace ] }; @@ -279,17 +283,17 @@ xkb_symbols "ben_probhat" { key { [ U0993, U0994 ] }; key { [ U09AA, U09AB ] }; key { [ U09C7, U09C8 ] }; - key { [ U09CB, U09CC ] }; + key { [ U09CB, U09CC, U09D7 ] }; key { [ Return ] }; // caps, a to ' // key { [ Caps_Lock ] }; - key { [ U09BE, U0985 ] }; - key { [ U09B8, U09B7 ] }; - key { [ U09A1, U09A2 ] }; + key { [ U09BE, U0985, U098C, U09E0 ] }; + key { [ U09B8, U09B7, U09E1, U09E3 ] }; + key { [ U09A1, U09A2, U09C4, U09E2 ] }; key { [ U09A4, U09A5 ] }; key { [ U0997, U0998 ] }; - key { [ U09B9, U0983 ] }; + key { [ U09B9, U0983, U09BD ] }; key { [ U099C, U099D ] }; key { [ U0995, U0996 ] }; key { [ U09B2, U0982 ] }; @@ -306,7 +310,7 @@ xkb_symbols "ben_probhat" { key { [ U09A8, U09A3 ] }; key { [ U09AE, U0999 ] }; key { [ comma, U09C3 ] }; - key { [ U0964, U0981 ] }; + key { [ U0964, U0981, U09BC ] }; key { [ U09CD, question ] }; key { [ 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 { [ Escape ] }; // numbers @@ -1053,7 +1057,7 @@ xkb_symbols "ori" { // INSCRIPT partial alphanumeric_keys xkb_symbols "tam" { - name[Group1]= "Tamil"; + name[Group1]= "Tamil (Inscript)"; key { [ 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 { [ 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 { [ 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 // Last Modified: Sat Jan 5 17:11:26 CST 2002 - name[Group1]= "Tamil (TSCII typewriter)"; + name[Group1]= "Tamil (TamilNet '99, TSCII encoding)"; key { [ 0x10000b7, 0x10000a4 ] }; // aytham key { [ 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 // Date : Sun Aug 12 02:23:00 CDT 2001 - name[Group1]= "Tamil (TAB typewriter)"; + name[Group1]= "Tamil (TamilNet '99, TAB encoding)"; // numeral row key { [ 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 { [ 1, exclam] }; + key { [ 2, at] }; + key { [ 3, numbersign] }; + key { [ 4, U20B9] }; + key { [ 5, percent] }; + key { [ 6, asciicircum] }; + key { [ 7, ampersand] }; + key { [ 8, asterisk] }; + key { [ 9, parenleft] }; + key { [ 0, parenright] }; + key { [ minus, underscore] }; + key { [ equal, plus] }; + + key { [ U02B0, U02B1] }; // [ʰ], [ʱ] + key { [ U00E6, q] }; // [æ], [q] found in Urdu + key { [ a, U028B] }; // [a], [ʋ] + key { [ i, U026A] }; // [i] [ɪ] + key { [ u, U026F] }; // [u] [ɯ] found in Tamil + key { [ b, Y] }; // [b] + key { [ h, U014B] }; // [h], [ŋ] + key { [ g, U0263] }; // [g], [ɣ] found in Urdu + key { [ d, U00F0] }; // [d], [ð] found in Malayalam + key { [ U02A4, U02A3] }; // [ʤ], [ʣ] found in Marathi + key { [ U0256, U027D] }; // [ɖ], [ɽ] + key { [ bracketleft, bracketright] }; // "[", "]" needed for denoting phonetic symbols + + key { [ o, U0254] }; // [o], [ɔ] found in Bangla + key { [ e, U025B] }; // [e], [ɛ] + key { [ U0259, U0361] }; // [ə], [ ͡ ] + key { [ i, U026A] }; // [i], [ɪ] + key { [ u, U026F] }; // [u], [ɯ] + key { [ p, f] }; // [p], [f] + key { [ U027E, r] }; // [ɾ], [r] + key { [ k, x] }; // [k], [x] found in Urdu + key { [ t, U03B8] }; // [t], [θ] + key { [ U02A7, U02A6] }; // [ʧ], [ʦ] found in Marathi + key { [ U0288, quotedbl] }; // [ʈ] + key { [ grave, asciitilde] }; + + key { [ backslash, bar] }; + key { [ U032A, U0303] }; // [ ̪], [ ̃] Dental mark, nasalisation mark + key { [ U0306, X] }; // [ ̆] Short sound + key { [ m, U0273] }; // [m], [ɳ] + key { [ n, v] }; // [n], [v] + key { [ w, z] }; // [w], [z] + key { [ l, U026D] }; // [l], [ɭ] + key { [ s, U0283] }; // [s], [ʃ] + key { [ comma, U0282] }; // [ʂ] + key { [ period, U02D0] }; // [ː] Long sound + key { [ 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 { [ U0962, U090C, grave, asciitilde ] }; // Added ॢ & ऌ + key { [ U0967, exclam, 1, exclam ] }; // Added exclamation mark + key { [ U0968, U0945, 2, at ] }; // Added ॅ + key { [ U0969, U093D, 3, numbersign ] }; // Added ऽ + key { [ U096a, U20B9, 4 ] }; // Added ₹ + key { [ U096b, percent, 5, percent ] }; + key { [ U096c, asciicircum, 6, asciicircum ] }; + key { [ U096d, U0970, 7, ampersand ] }; // Added ॰ + key { [ U096e, U0950, 8, asterisk ] }; + key { [ U096f, parenleft, 9, parenleft ] }; + key { [ U0966, parenright, 0, parenright ] }; + key { [ minus, U0903, minus, underscore ] }; + key { [ U0943, U090b, U0944, U0960 ] }; + + key { [ U094c, U0914 ] }; + key { [ U0948, U0910 ] }; + key { [ U093e, U0906 ] }; + key { [ U0940, U0908, U0963, U0961 ] }; + key { [ U0942, U090a ] }; + key { [ U092c, U092d ] }; + key { [ U0939, U0919 ] }; + key { [ U0917, U0918, U095a ] }; + key { [ U0926, U0927 ] }; + key { [ U091c, U091d, U095b ] }; + key { [ U0921, U0922, U095c, U095d ] }; + key { [ U093c, U091e ] }; + key { [ U0949, U0911, U005C, U007C ] }; + + key { [ U094b, U0913 ] }; + key { [ U0947, U090f ] }; + key { [ U094d, U0905 ] }; + key { [ U093f, U0907, U0962, U090c ] }; + key { [ U0941, U0909 ] }; + key { [ U092a, U092b, NoSymbol, U095e ] }; + key { [ U0930, U0931 ] }; + key { [ U0915, U0916, U0958, U0959 ] }; + key { [ U0924, U0925 ] }; + key { [ U091a, U091b, U0952 ] }; + key { [ U091f, U0920, NoSymbol, U0951 ] }; + + key { [ apostrophe, U0972, U0953 ] }; // Added apostrophe & ॲ + key { [ U0902, U0901, NoSymbol, U0950 ] }; + key { [ U092e, U0923, U0954 ] }; + key { [ U0928, quotedbl ] }; // Added " + key { [ U0935, UA8FB ] }; // Added headstroke + key { [ U0932, U0933 ] }; + key { [ U0938, U0936 ] }; + key { [ comma, U0937, U0970 ] }; + key { [ period, U0964, U0965, U093d ] }; + key { [ 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 +// +// +partial alphanumeric_keys +xkb_symbols "modi-kagapa" { + name[Group1] = "Modi (KaGaPa phonetic)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ apostrophe, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U11651 ] }; + key { [ 2, at, U11652, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U11653 ] }; + key { [ 4, dollar, U11654, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U11655 ] }; + key { [ 6, asciicircum, U11656, U200C ] }; // ZWNJ + key { [ 7, ampersand, U11657, U200D ] }; // ZWJ + key { [ 8, asterisk, U11658 ] }; + key { [ 9, parenleft, U11659 ] }; + key { [ 0, parenright, U11650, U11643 ] }; // U11643: Modi abbreviation sign + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ U005C, U007C, U11641, U11642 ] }; // backslash, pipe, Modi danda, Modi double danda + + //Q Row + key { [ U11618, U11619 ] }; // Q: retroflex Modi letter Ta, Tha + key { [ U1161A, U1161B ] }; // W: retroflex Modi letter Da, Dha + key { [ U11639, U1160A, U1160B ] }; // E: Modi vovel sign E, Modi letter E, letter ai + key { [ U11628, U11635, U11606 ] }; // R: Modi ra, Modi vowel sign vocalic R, vocalic letter R + key { [ U1161D, U1161E ] }; // T: dental Modi letter ta, tha + key { [ U11627, U1163A ] }; // Y: Modi letter ya, Modi vowel sign ai + key { [ U11633, U11634, U11604, U11605 ] }; // U: Modi vowel sign u, uu, Modi letter u, uu + key { [ U11631, U11632, U11602, U11603 ] }; // I: Modi vowel sign i, ii, Modi letter i, ii + key { [ U1163B, U1160C ] }; // O: Modi vowel sign o, Modi letter o + key { [ U11622, U11623 ] }; // P: Modi letter pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + //A Row + key { [ U11630, U11601, U11600 ] }; // A: Modi vowel sign aa, Modi letter aa, Modi letter a + key { [ U1162D, U1162B ] }; // S: Modi letter sa, sha + key { [ U1161F, U11620 ] }; // D: dental Modi letter da, dha + key { [ U1163F, U11636, U11607 ] }; // F: Modi sign virama, Modi vowel sign vocalic RR, letter vocalic RR + key { [ U11610, U11611 ] }; // G: Modi letter ga, gha + key { [ U1162E, U1163E ] }; // H: Modi letter ha, Modi visarga + key { [ U11615, U11616 ] }; // J: Modi letter ja, jha + key { [ U1160E, U1160F ] }; // K: Modi letter ka, kha + key { [ U11629, U1162F, U11637, U11608 ] }; // L: Modi letter la, lla, Modi vowel sign vocalic L, letter vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + //Z Row + key { [ U11617, U11612 ] }; // Z: Modi letter nya, nga + key { [ U1162C, U11609, U11638 ] }; // X: Modi letter ssa, Modi letter vocalic ll, Modi vowel sign vocalic ll + key { [ U11613, U11614 ] }; // C: Modi letter ca, cha + key { [ U1162A, U1163C, U1160D ] }; // V: Modi letter va, Modi vowel sign au, Modi letter au + key { [ U11624, U11625 ] }; // B: Modi letter ba, bha + key { [ U11621, U1161C ] }; // N: Modi letter na, nna + key { [ U11626, U1163D, U093D, U0950 ] }; // M: Modi ma, Modi anusvara, avagraha, Devanagari OM + key { [ comma, U003C, U11640, U11644 ] }; // comma: comma, less than, Modi chandrabindu, Modi sign huva + key { [ period, U003E ] }; // period: period, greater than, matra, candra o + key { [ 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 { [ Print ] }; // key { [ ] }; // KEY_HP key { [ XF86WebCam ] }; -// key { [ ] }; // KEY_SOUND + key { [ XF86AudioPreset ] }; // key { [ ] }; // KEY_QUESTION key { [ XF86Mail ] }; key { [ XF86Messenger ] }; // KEY_CHAT @@ -212,11 +212,16 @@ xkb_symbols "evdev" { key { [ XF86WLAN ] }; // key { [ ] }; // KEY_VIDEO_NEXT -- drive next video source // key { [ ] }; // KEY_VIDEO_PREV -- drive previous video source -// key { [ ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min + key { [ XF86MonBrightnessCycle ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min // key { [ ] }; // KEY_BRIGHTNESS_ZERO -- brightness off // key { [ ] }; // KEY_DISPLAY_OFF -- turn off display -// key { [ ] }; // KEY_WIMAX - key { [ XF86Hibernate ] }; // KEY_HIBERNATE + key { [ XF86WWAN ] }; // KEY_WWAN + key { [ XF86RFKill ] }; // KEY_RFKILL + + key { [ XF86Favorites ] }; + key { [ XF86Keyboard ] }; + key { [ XF86RotationLockToggle ] }; + key { [ XF86FullScreen ] }; key { [ XF86Tools ] }; key { [ XF86Launch5 ] }; @@ -1422,6 +1427,16 @@ xkb_symbols "microsoftmult" { key { [ XF86Documents ] }; }; +// Microsoft Surface +partial alphanumeric_keys +xkb_symbols "microsoftsurface" { + include "inet(evdev)" + key { [ XF86Search ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; +}; + // Oretec @@ -1850,32 +1865,6 @@ xkb_symbols "pc105" { include "inet(media_nav_acpi_common)" }; - -// HTC Dream -partial alphanumeric_keys -xkb_symbols "htcdream" { - key { [ BackSpace ] }; - key { [ Return ] }; - - key { [ 1, 1, exclam, exclam ] }; - key { [ 2, 2, at, at ] }; - key { [ 3, 3, numbersign, numbersign ] }; - key { [ 4, 4, dollar, dollar ] }; - key { [ 5, 5, percent, percent ] }; - key { [ 6, 6, dead_circumflex, dead_circumflex ] }; - key { [ 7, 7, ampersand, ampersand ] }; - key { [ 8, 8, asterisk, asterisk ] }; - key { [ 9, 9, parenleft, parenleft ] }; - key { [ 0, 0, parenright, parenright ] }; - - key { [ Shift_L ] }; - key { [ space ] }; - key { [ period, period, slash, slash ] }; - key { [ Shift_R ] }; - - modifier_map Shift { , }; -}; - 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 { [ 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 { 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 { + 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 { + 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 { [ 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 { [ 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 // 2001/12/23 by Leon Kanter // 2005/12/09 Valery Inozemtsev +// 2018/07/15 @a13 (a.k.a. @dbvvmpg) and Stepanenko Andrey // Windows layout -default partial alphanumeric_keys +default partial alphanumeric_keys xkb_symbols "winkeys" { include "ru(common)" @@ -215,13 +216,22 @@ partial alphanumeric_keys xkb_symbols "phonetic_winkeys" { include "ru(phonetic)" - name[Group1]= "Russian (phonetic, with Win keys)"; + name[Group1]= "Russian (phonetic, Windows)"; key { [ Cyrillic_ha, Cyrillic_HA ] }; key { [ Cyrillic_che, Cyrillic_CHE ] }; key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; }; +partial alphanumeric_keys +xkb_symbols "phonetic_YAZHERTY" { + include "ru(phonetic_winkeys)" + name[Group1]= "Russian (phonetic, YAZHERTY)"; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; +}; + + partial alphanumeric_keys xkb_symbols "tt" { @@ -230,12 +240,12 @@ xkb_symbols "tt" { key.type[group1]="FOUR_LEVEL"; - key { [ 0x010004bb, 0x010004ba, Cyrillic_io, Cyrillic_IO ] }; - key { [ 0x010004e9, 0x010004e8, Cyrillic_tse, Cyrillic_TSE ] }; - key { [ 0x010004d9, 0x010004d8, Cyrillic_shcha, Cyrillic_SHCHA ] }; - key { [ 0x010004af, 0x010004ae, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; - key { [ 0x010004a3, 0x010004a2, Cyrillic_zhe, Cyrillic_ZHE ] }; - key { [ 0x01000497, 0x01000496, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ 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 { [ Cyrillic_e, Cyrillic_E ] }; key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; @@ -434,20 +444,20 @@ xkb_symbols "bak" { key.type[group1]="FOUR_LEVEL"; - key { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] }; - key { [ exclam, quotedbl, 1, 1 ] }; - key { [ 0x010004e9, 0x010004e8, 2, 2 ] }; - key { [ 0x010004a1, 0x010004a0, 3, 3 ] }; - key { [ 0x01000493, 0x01000492, 4, 4 ] }; - key { [ 0x010004ab, 0x010004aa, 5, 5 ] }; - key { [ colon, semicolon, 6, 6 ] }; - key { [ 0x01000499, 0x01000498, 7, 7 ] }; - key { [ 0x010004bb, 0x010004ba, 8, 8 ] }; - key { [ question, parenleft, 9, 9 ] }; - key { [ numerosign, parenright, 0, 0 ] }; - key { [ minus, percent, minus, underscore ] }; - key { [ 0x010004af, 0x010004ae, equal, plus ] }; - key { [ 0x010004a3, 0x010004a2, backslash, slash ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_io, Cyrillic_IO ] }; + key { [ exclam, quotedbl, 1, 1 ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, 2, 2 ] }; + key { [ 0x010004a1, 0x010004a0, 3, 3 ] }; + key { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, 4, 4 ] }; + key { [ 0x010004ab, 0x010004aa, 5, 5 ] }; + key { [ colon, semicolon, 6, 6 ] }; + key { [ 0x01000499, 0x01000498, 7, 7 ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, 8, 8 ] }; + key { [ question, parenleft, 9, 9 ] }; + key { [ numerosign, parenright, 0, 0 ] }; + key { [ minus, percent, minus, underscore ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, equal, plus ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, backslash, slash ] }; include "level3(ralt_switch)" }; @@ -517,7 +527,7 @@ xkb_symbols "phonetic_azerty" { key { [parenright, degree, bracketright, questiondown ] }; key { [ equal, plus, braceright, dead_ogonek ] }; - key { [ comma, question, acute, doubleacute ] }; + key { [ comma, question, acute, doubleacute ] }; key { [ semicolon, period, horizconnector, multiply ] }; key { [ colon, slash, periodcentered, division ] }; key { [ 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 // 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 { [ Cyrillic_io, Cyrillic_IO, U0300, asciitilde ] }; - key { [ 1, exclam, U0301 ] }; - key { [ 2, at, U030B ] }; + key { [ Cyrillic_io, Cyrillic_IO, U0300, U030F ] }; // Combining grave, double grave + key { [ 1, exclam, U0301, U030B ] }; // Combining acute, double acute + key { [ 2, at, U0308 ] }; // Combining diaeresis key { [ 3, numerosign, numbersign ] }; key { [ 4, dollar, cent ] }; key { [ 5, percent, EuroSign ] }; - key { [ 6, asciicircum, U0306 ] }; - key { [ 7, ampersand, U0307 ] }; - key { [ 8, asterisk, U20BD ] }; + key { [ 6, asciicircum, U0306, U0304 ] }; // Combining breve, macron + key { [ 7, ampersand ] }; + key { [ 8, asterisk, U20BD, U20B4 ] }; // ruble, hryvnia key { [ 9, parenleft, bracketleft ] }; key { [ 0, parenright, bracketright ] }; key { [ minus, underscore, endash, emdash ] }; key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] }; - key { [ Cyrillic_ya, Cyrillic_YA, q, Q ] }; - key { [ Cyrillic_zhe, Cyrillic_ZHE, w, W ] }; - key { [ Cyrillic_ef, Cyrillic_EF, f, F ] }; - key { [ Cyrillic_pe, Cyrillic_PE, p, P ] }; - key { [ Cyrillic_ghe, Cyrillic_GHE, g, G ] }; - key { [ Cyrillic_shorti, Cyrillic_SHORTI, j, J ] }; - key { [ Cyrillic_el, Cyrillic_EL, l, L ] }; - key { [ Cyrillic_u, Cyrillic_U, u, U ] }; - key { [ Cyrillic_yeru, Cyrillic_YERU, y, Y ] }; + key { [ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ] }; // yat + key { [ Cyrillic_zhe, Cyrillic_ZHE, U0475, U0474 ] }; // izhitsa + key { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472 ] }; // fita + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE ] }; + key { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE ] }; + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_yi, Ukrainian_YI ] }; key { [ Cyrillic_yu, Cyrillic_YU, semicolon, colon ] }; key { [ Cyrillic_sha, Cyrillic_SHA, guillemotleft, braceleft ] }; key { [ Cyrillic_shcha, Cyrillic_SHCHA, guillemotright, braceright ] }; key { [ Cyrillic_e, Cyrillic_E, backslash, bar ] }; - key { [ Cyrillic_a, Cyrillic_A, a, A ] }; - key { [ Cyrillic_er, Cyrillic_ER, r, R ] }; - key { [ Cyrillic_es, Cyrillic_ES, s, S ] }; - key { [ Cyrillic_te, Cyrillic_TE, t, T ] }; - key { [ Cyrillic_de, Cyrillic_DE, d, D ] }; - key { [ Cyrillic_che, Cyrillic_CHE, h, H ] }; - key { [ Cyrillic_en, Cyrillic_EN, n, N ] }; - key { [ Cyrillic_ie, Cyrillic_IE, e, E ] }; - key { [ Cyrillic_i, Cyrillic_I, i, I ] }; - key { [ Cyrillic_o, Cyrillic_O, o, O ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_te, Cyrillic_TE, Serbian_tshe, Serbian_TSHE ] }; + key { [ Cyrillic_de, Cyrillic_DE, Serbian_dje, Serbian_DJE ] }; + key { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_dzhe, Cyrillic_DZHE ] }; + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Ukrainian_ie, Ukrainian_IE ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, quotedbl ] }; - key { [ Cyrillic_ze, Cyrillic_ZE, z, Z ] }; - key { [ Cyrillic_ha, Cyrillic_HA, x, X ] }; - key { [ Cyrillic_tse, Cyrillic_TSE, c, C ] }; - key { [ Cyrillic_ve, Cyrillic_VE, v, V ] }; - key { [ Cyrillic_be, Cyrillic_BE, b, B ] }; - key { [ Cyrillic_ka, Cyrillic_KA, k, K ] }; - key { [ Cyrillic_em, Cyrillic_EM, m, M ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, Macedonia_dse, Macedonia_DSE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_be, Cyrillic_BE, Macedonia_gje, Macedonia_GJE ] }; + key { [ Cyrillic_ka, Cyrillic_KA, Macedonia_kje, Macedonia_KJE ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; key { [ comma, semicolon, less ] }; key { [ period, colon, greater ] }; - key { [ slash, question ] }; + key { [ slash, question, U04CF, U04C0 ] }; // palochka - key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; - key { [ U0301, asciitilde, grave ] }; - key { [ space, space, space, nobreakspace ] }; - key { [ Mode_switch, Multi_key ] }; + key { [ 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 { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key { [ Ukrainian_yi, Ukrainian_YI, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign key { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ - key { [ U0454, U0404, U0465, U0464 ] }; // є Є ѥ Ѥ + key { [ Ukrainian_ie, Ukrainian_IE, U0465, U0464 ] }; // є Є ѥ Ѥ key { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ key { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ key { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A key { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ key { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ key { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ - key { [ U0455, U0405,parenleft,U002A ] }; // ѕ Ѕ ( * - key { [Cyrillic_u,Cyrillic_U,parenright,U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u + key { [ Macedonia_dse, Macedonia_DSE, parenleft, asterisk ] }; // ѕ Ѕ ( * + key { [ Cyrillic_u, Cyrillic_U, parenright, U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u key { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) key { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) - key { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_i ] }; key { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; key { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! key { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; @@ -792,33 +817,33 @@ xkb_symbols "ruu" { name[Group1]= "Russian (with Ukrainian-Belorussian layout)"; key { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol - key { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To + key { [ 1, exclam, division, U2248 ] }; // Division Sign and Almost Equal To key { [ 2, quotedbl, currency, infinity ] }; - key { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign + key { [ 3, numerosign, section, U20B4 ] }; // Paragraph and Hryvnia sign key { [ 4, semicolon, dollar, EuroSign ] }; - key { [ 5, percent, degree, U2030 ] }; // Per Mille Sign - key { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To - key { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To - key { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign + key { [ 5, percent, degree, permille ] }; + key { [ 6, colon, less, lessthanequal ] }; + key { [ 7, question, greater, greaterthanequal ] }; + key { [ 8, asterisk,enfilledcircbullet,multiply ] }; key { [ 9, parenleft, bracketleft, braceleft ] }; key { [ 0, parenright, bracketright, braceright ] }; key { [ minus, underscore, emdash, endash ] }; key { [ equal, plus, notequal, plusminus ] }; key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; - key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm + key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign + key { [ Cyrillic_ze, Cyrillic_ZE, paragraph ] }; key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; - key { [ slash, bar, backslash, U00A6 ] }; // Broken Bar + key { [ slash, bar, backslash, brokenbar ] }; key { [ Cyrillic_es, Cyrillic_ES, copyright ] }; key { [ Cyrillic_te, Cyrillic_TE, trademark ] }; - key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, mu ] }; key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; key { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; key { [ period, comma, slash, ellipsis ] }; @@ -884,34 +909,34 @@ xkb_symbols "prxn" { key { [ U2019, apostrophe, U0301, U0300, U2053, U2015, U02BC, asciitilde ] }; // Typographic Apostrophe, Apostrophe, Combining Acute, Combining Grave, Swung Dash, Quotation Dash, Modifier Letter Apostrophe, Tilde key { [ 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 { [ 2,quotedbl,numerosign, U20BF, U20B8, U20AE, U00A3, U20B9 ] }; // 2 " № ₿ ₸ ₮ £ ₹ - key { [ 3, U00A7, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ + key { [ 3, section, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ key { [ 4, semicolon, dollar, EuroSign, U0482, U20DD, U0488, U0489 ] }; // 4 ; $ € Thousands Sign, Combining Enclosing Circle, Combining Hundred Thousands, Combining Millions - key { [ 5, percent, degree, U2030, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet + key { [ 5, percent, degree, permille, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet key { [ 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 { [ 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 { [ 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 { [ 9,parenleft, bracketleft, braceleft, U035F, U035D, U035E, U035C ] }; // 9 ( [ { Combining Double Macron Below, Combining Double Breve, Combining Double Macron, Combining Double Breve Below key { [ 0,parenright,bracketright, braceright, U27E8, U27E9, U04A7, U04A6 ] }; // 0 ) ] } ⟨⟩ ҧ Ҧ - key { [ minus, underscore, emdash, endash, U2011, U00AD, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign + key { [ minus, underscore, emdash, endash, U2011,hyphen, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign key { [ equal, plus,notequal, U2248, U04FF, U04FE, U050D, U050C ] }; // = + ≠ ≈ ӿ Ӿ ԍ Ԍ key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE, U04CF, U04C0, U030A, U0325 ] }; // й Й ј Ј ӏ Ӏ, Combining Ring Above and Below key { [ Cyrillic_tse, Cyrillic_TSE, U04B5, U04B4, Cyrillic_u_straight, Cyrillic_U_straight, U051B, U051A ] }; // ц Ц ҵ Ҵ ү Ү ԛ Ԛ - key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў - key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender,Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў + key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO, U0463, U0462, UA653, UA652 ] }; // е Е ё Ё ѣ Ѣ ꙓ Ꙓ key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE, Cyrillic_en_descender, Cyrillic_EN_descender, U04C8, U04C7 ] }; // н Н њ Њ ң Ң ӈ Ӈ key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn,Ukrainian_GHE_WITH_UPTURN, Cyrillic_ghe_bar, Cyrillic_GHE_bar, U04F7, U04F6 ] }; // г Г Ґ ґ ғ Ғ ӷ Ӷ key { [ Cyrillic_sha, Cyrillic_SHA, U04A1, U04A0, U04AB, U04AA, UA67D, UA67F ] }; // ш Ш ҡ Ҡ ҫ Ҫ Combining Payerok Payerok key { [ Cyrillic_shcha, Cyrillic_SHCHA, U0505, U0504, UA68D, UA68C, U050F, U050E ] }; // щ Щ ԅ Ԅ ꚍ Ꚍ ԏ Ԏ key { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0, U0499, U0498, U0507, U0506 ] }; // з З ӡ Ӡ ҙ Ҙ ԇ Ԇ - key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ - key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok key { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472, U04C4, U04C3, U04FB, U04FA ] }; // ф Ф ѳ Ѳ ӄ Ӄ ӻ Ӻ - key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ key { [ Cyrillic_ve, Cyrillic_VE, U051D, U051C, U0529, U0528, U0527, U0526 ] }; // в В ԝ Ԝ ԩ Ԩ ԧ Ԧ - key { [ Cyrillic_a, Cyrillic_A, U04D9, U04D8, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ + key { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ key { [ Cyrillic_pe, Cyrillic_PE, U0525, U0524, U0471, U0470, UA65F, UA65E ] }; // п П ԥ Ԥ ѱ Ѱ ꙟ Ꙟ key { [ Cyrillic_er, Cyrillic_ER, U0481, U0480, U048F, U048E, U0521, U0520 ] }; // р Р ҁ Ҁ ҏ Ҏ ԡ Ԡ key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar, U047B, U047A, U0461, U0460 ] }; // о О ө Ө ѻ Ѻ ѡ Ѡ @@ -923,11 +948,11 @@ xkb_symbols "prxn" { key { [ U0495, U0494, U0501, U0500, U0503, U0502, U0509, U0508 ] }; // ҕ Ҕ ԁ Ԁ ԃ Ԃ ԉ Ԉ key { [ Cyrillic_ya, Cyrillic_YA, U0469, U0468, U0467, U0466, UA657, UA656 ] }; // я Я ѩ Ѩ ѧ Ѧ ꙗ Ꙗ - key { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, U04B7, U04B6, U2016, U00A6 ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ + key { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, Cyrillic_che_descender, Cyrillic_CHE_descender, U2016, U00A6 ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ key { [ Cyrillic_es, Cyrillic_ES, U046D, U046C, U046B, U046A, U04F7, U04F6 ] }; // с С ѭ Ѭ ѫ Ѫ ӷ Ӷ - key { [ Cyrillic_em, Cyrillic_EM, multiply, U00F7, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ - key { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ - key { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke,Cyrillic_CHE_vertstroke]}; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ + key { [ Cyrillic_em, Cyrillic_EM, multiply, division, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ + key { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ + key { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] }; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ key { [Cyrillic_softsign,Cyrillic_SOFTSIGN, U04A5, U04A4, UA64F, UA64E, U048D, U048C ] }; // ь Ь ҥ Ҥ ꙏ Ꙏ ҍ Ҍ key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark, singlelowquotemark, U2039, U0523, U0522 ] }; // б Б « „ ‚ ‹ ԣ Ԣ key { [ 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 { [ 3, numbersign, 3, numerosign ] }; + + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_i, Cyrillic_I, Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ 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 { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ 3, numbersign, numerosign ] }; + key { [ 4, dollar, U20BD ] }; // ruble + key { [ 5, percent ] }; + key { [ 6, caret ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, minus, underscore ] }; + key { [ 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 { 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 { [ e, E, eacute ] }; key { [ u, U, ucircumflex ] }; key { [ i, I, icircumflex ] }; - key { [ s, S, ssharp ] }; + key { [ s, S, ssharp, U1E9E ] }; key { [ semicolon, colon, acircumflex ] }; key { [ q, Q, odiaeresis, dead_ogonek ] }; @@ -488,8 +488,8 @@ xkb_symbols "dvorak-r" { }; // Classic dvorak layout -// by Piter Punk - 2006-07-06 -// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net +// by Piter Punk - 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 { [ h, H, dead_acute ] }; key { [ t, T, thorn, THORN ] }; key { [ n, N, ntilde, Ntilde ] }; - key { [ s, S, ssharp ] }; + key { [ s, S, ssharp, U1E9E ] }; key { [ minus, underscore, hyphen, endash ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; key { [ backslash, bar ] }; @@ -774,7 +774,7 @@ xkb_symbols "colemak" { key { [ a, A, aacute, Aacute ] }; key { [ r, R, dead_grave, asciitilde ] }; - key { [ s, S, ssharp, asciitilde ] }; + key { [ s, S, ssharp, 0x1001e9e ] }; key { [ t, T, dead_acute, dead_doubleacute ] }; key { [ d, D, dead_diaeresis, asciitilde ] }; key { [ h, H, dead_caron, asciitilde ] }; @@ -878,7 +878,7 @@ xkb_symbols "classmate-intl" { key { [ backslash, bar, backslash, bar ] }; - key { [ KP_Home, KP_7, + key { [ KP_Home, KP_7, onehalf, dead_horn ] }; key { [ KP_Up, KP_8, threequarters, dead_ogonek ] }; @@ -957,7 +957,7 @@ xkb_symbols "classmate-altgr-intl" { key { [ backslash, bar, backslash, bar ] }; - key { [ KP_Home, KP_7, + key { [ KP_Home, KP_7, dead_horn, dead_horn ] }; key { [ KP_Up, KP_8, dead_ogonek, dead_ogonek ] }; @@ -1032,7 +1032,7 @@ xkb_symbols "olpc" { key { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below key { [ a, A, ae, AE ] }; - key { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp key { [ d, D, eth, ETH ] }; key { [ f, F, thorn, THORN ] }; key { [ 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 { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below key { [ a, A, ae, AE ] }; - key { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp key { [ d, D, eth, ETH ] }; key { [ f, F, thorn, THORN ] }; key { [ h, H, sterling, sterling ] }; @@ -1178,6 +1178,31 @@ xkb_symbols "chr" { key { [ U13C2, U13C9 ] }; }; +// Add Hawaiian `okina and kahako to US layout +// Author: Greg Meyer , 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 {[ U02BB, quotedbl, apostrophe ] }; + + // kahako + key {[ a, A, amacron, Amacron ]}; + key {[ e, E, emacron, Emacron ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ i, I, imacron, Imacron ]}; + key {[ 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 { [ q, Q, Tab, Tab ] }; - key { [ w, W, grave, grave ] }; - key { [ e, E, underscore, underscore ] }; - key { [ r, R, sterling, sterling ] }; - key { [ t, T, EuroSign, EuroSign ] }; - key { [ y, Y, division, division ] }; - key { [ u, U, multiply, multiply ] }; - key { [ i, I, minus, minus ] }; - key { [ o, O, plus, plus ] }; - key { [ p, P, equal, equal ] }; - - //third row - key { [ a, A, NoSymbol, NoSymbol ] }; - key { [ s, S, bar, bar ] }; - key { [ d ,D, backslash, backslash ] }; - key { [ f, F, braceleft, braceleft ] }; - key { [ g, G, braceright, braceright ] }; - key { [ h, H, colon, colon ] }; - key { [ j, J, semicolon, semicolon ] }; - key { [ k, K, quotedbl, quotedbl ] }; - key { [ l, L, apostrophe, apostrophe ] }; - - //forth row - key { [ z, Z, NoSymbol, NoSymbol ] }; - key { [ x, X, NoSymbol, NoSymbol ] }; - key { [ c, C, NoSymbol, NoSymbol ] }; - key { [ v, V, bracketleft, bracketleft ] }; - key { [ b, B, bracketright, bracketright ] }; - key { [ n, N, less, less ] }; - key { [ m, M, greater, greater ] }; - key { [ comma, comma, question, question ] }; - - //fifth row - key { [ 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 +partial alphanumeric_keys +xkb_symbols "scn" { + + include "us(intl)" + name[Group1]="Sicilian (US keyboard)"; + + key { [ e, E, U0259, U018F ] }; + key { [ d, D, U1E0D, U1E0C ] }; + key { [ f, F, U0111, U0110 ] }; + key { [ h, H, U1E25, U1E24 ] }; + key { [ x, X, U03C7, U03A7 ] }; + key { [ 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 { [ Escape ] }; + key { [ Tab ] }; + key { [ ISO_Level3_Shift ] }; // Sym Modifier + key { [ ISO_Level5_Shift ] }; // Cur/Num Modifier + + // Top row numbers - not part of spec, but given for convenience + key { [ 1 ] }; + key { [ 2 ] }; + key { [ 3 ] }; + key { [ 4 ] }; + key { [ 5 ] }; + key { [ 6 ] }; + key { [ 7 ] }; + key { [ 8 ] }; + key { [ 9 ] }; + key { [ 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 { [ q, Q, quotedbl, Greek_omicron, Prior, Prior, U21CD, Greek_OMICRON ] }; + key { [ f, F, underscore, Greek_phi, BackSpace, BackSpace, U21A4, Greek_PHI ] }; + key { [ u, U, bracketleft, Greek_upsilon, Up, Up, U2191, Greek_UPSILON ] }; + key { [ y, Y, bracketright, Greek_psi, Delete, Delete, U21A6, Greek_PSI ] }; + key { [ z, Z, asciicircum, Greek_zeta, Next, Next, U21CF, Greek_ZETA ] }; + key { [ x, X, exclam, Greek_xi, NoSymbol, NoSymbol, U2260, Greek_XI ] }; + key { [ k, K, less, Greek_kappa, 1, A, U2A7D, Greek_KAPPA ] }; + key { [ c, C, greater, Greek_chi, 2, B, U2A7E, Greek_CHI ] }; + key { [ w, W, equal, Greek_omega, 3, C, U2261, Greek_OMEGA ] }; + key { [ b, B, ampersand, Greek_beta, NoSymbol, NoSymbol, U2248, Greek_BETA ] }; + + // Home row + key { [ o, O, slash, Greek_omega, Home, Home, U21D0, Greek_OMEGA ] }; + key { [ h, H, minus, Greek_theta, Left, Left, U2190, Greek_THETA ] }; + key { [ e, E, braceleft, Greek_epsilon, Down, Down, U2193, Greek_EPSILON ] }; + key { [ a, A, braceright, Greek_alpha, Right, Right, U2192, Greek_ALPHA ] }; + key { [ i, I, asterisk, Greek_iota, End, End, U21D2, Greek_IOTA ] }; + key { [ d, D, question, Greek_delta, period, colon, U2286, Greek_DELTA ] }; + key { [ r, R, parenleft, Greek_rho, 4, D, U2227, Greek_RHO ] }; + key { [ t, T, parenright, Greek_tau, 5, E, U2228, Greek_TAU ] }; + key { [ n, N, apostrophe, Greek_eta, 6, F, U2200, Greek_ETA ] }; + key { [ s, S, colon, Greek_sigma, NoSymbol, NoSymbol, U2203, Greek_SIGMA ] }; + + // Bottom row + key { [ comma, comma, numbersign, NoSymbol, slash, NoSymbol, U21AE, NoSymbol ] }; + key { [ m, M, dollar, Greek_mu, asterisk, NoSymbol, U2194, Greek_MU ] }; + key { [ period, period, bar, NoSymbol, minus, NoSymbol, U21CE, NoSymbol ] }; + key { [ j, J, asciitilde, Greek_SIGMA, plus, NoSymbol, U21D4, NoSymbol ] }; + key { [ semicolon, semicolon, grave, NoSymbol, comma, NoSymbol, U2282, NoSymbol ] }; + key { [ g, G, plus, Greek_gamma, 0, NoSymbol, U2229, Greek_GAMMA ] }; + key { [ l, L, percent, Greek_lambda, 7, parenleft, U222A, Greek_LAMBDA ] }; + key { [ p, P, backslash, Greek_pi, 8, parenright, U2208, Greek_PI ] }; + key { [ 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 { + 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 ] }; + key { [ Control_L ] }; + + modifier_map Control { }; +}; + +// Drix EU Latin - version 3.1 (2019-10-07) +// Author: Jerome Leclanche +// 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 {[ at, asciitilde, sterling, dead_tilde ]}; // @ ~ £ ~ + key {[ 1, quotedbl, onesuperior, dead_grave ]}; // 1 " ¹ ` + key {[ 2, apostrophe, twosuperior, dead_acute ]}; // 2 ' ² ´ + key {[ 3, asciicircum, threesuperior, dead_circumflex ]}; // 3 ^ ³ ^ + key {[ 4, grave, foursuperior, dead_diaeresis ]}; // 4 4 ⁴ ¨ + key {[ 5, degree, fivesuperior, dead_abovering ]}; // 5 ° ⁵ ° + key {[ 6, 6, sixsuperior, dead_macron ]}; // 6 6 ⁶ ¯ + key {[ 7, 7, sevensuperior, dead_cedilla ]}; // 7 7 ⁷ ¸ + key {[ 8, 8, eightsuperior, dead_ogonek ]}; // 8 8 ⁸ ˛ + key {[ 9, 9, ninesuperior, dead_caron ]}; // 9 9 ⁹ ˇ + key {[ 0, bar, zerosuperior, dead_doubleacute ]}; // 0 | ⁰ ˝ + key {[ minus, underscore, quotedbl, plusminus ]}; // - _ " ± + key {[ plus, equal, apostrophe, notequal ]}; // + = ' ≠ + + // Second row + key {[ q, Q, oslash, Ooblique ]}; // q Q ø Ø + key {[ w, W, w, uparrow ]}; // w W w ↑ + key {[ e, E, EuroSign, EuroS ]}; // e E € € + key {[ r, R, registered, 0x10020bd ]}; // r R ® ₽ + key {[ t, T, trademark, Greek_tau ]}; // t T ™ τ + key {[ y, Y, yen, yen ]}; // y Y ¥ ¥ + key {[ u, U, u, U ]}; // u U u U + key {[ i, I, leftsinglequotemark, rightsinglequotemark ]}; // i I ‘ ’ + key {[ o, O, oe, Greek_OMEGA ]}; // o O œ Ω + key {[ p, P, Greek_pi, 0x10020b1 ]}; // p P π ₱ + key {[ parenleft, bracketleft, braceleft, guillemotleft ]}; // ( [ { « + key {[ parenright, bracketright, braceright, guillemotright ]}; // ) ] } » + + // Third row + key {[ a, A, ae, leftarrow ]}; // a A æ ← + key {[ s, S, ssharp, downarrow ]}; // s S ß ↓ + key {[ d, D, Greek_DELTA, rightarrow ]}; // d D Δ → + key {[ f, F, 0x1000192, 0x1000191 ]}; // f F ƒ Ƒ + key {[ g, G, g, G ]}; // g G g G + key {[ h, H, h, H ]}; // h H h H + key {[ j, J, leftdoublequotemark, rightdoublequotemark ]}; // j J “ ” + key {[ k, K, singlelowquotemark, doublelowquotemark ]}; // k K ‚ „ + key {[ l, L, sterling, Greek_lambda ]}; // l L £ λ + key {[ m, M, mu, M ]}; // m M µ M + key {[ numbersign, percent, asciitilde, 0x1002030 ]}; // # % ~ ‰ + + // Fourth row + key {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ + key {[ z, Z, section, paragraph ]}; // z Z § ¶ + key {[ x, X, multiply, division ]}; // x X × ÷ + key {[ c, C, copyright, cent ]}; // c C © ¢ + key {[ v, V, 0x1002640, V ]}; // v V ♀ V + key {[ b, B, 0x1002642, 0x10020bf ]}; // b B ♂ ₿ + key {[ n, N, 0x10026a5, N ]}; // n N ⚥ N + key {[ exclam, question, exclamdown, questiondown ]}; // ! ? ¡ ¿ + key {[ period, comma, 0x1002026, periodcentered ]}; // . , … · + key {[ colon, semicolon, grave, acute ]}; // : ; ` ´ + key {[ slash, backslash, bar, brokenbar ]}; // / \ | ¦ + + // Next to the enter key + key {[ asterisk, ampersand, dollar, multiply ]}; // * & $ × + + // Rebind right Super (windows key) into a Compose key + key {[ Multi_key ]}; + + // Implement AltGr and AltGr+Shift + // For some reason, include "level3(ralt_switch)" doesn't do the trick. + key { + 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 , 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 {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ s, S, ssharp, U1E9E ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ 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 +#if HAVE_UNISTD_H +#include +#endif #include #include #include 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 ] [--model ] " "[--layout ] [--variant ] [--options ]" " \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 -- cgit v1.2.3