From 480f919d770d2c847c4fc2dd94ab6cf85f50c09a Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Wed, 29 Aug 2012 11:54:05 +0300 Subject: [PATCH] test: add rmlvo-to-kccgst tool For a quick look at what components result from the rules. Signed-off-by: Ran Benita --- Makefile.am | 4 ++- test/.gitignore | 1 + test/rmlvo-to-kccgst.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 test/rmlvo-to-kccgst.c diff --git a/Makefile.am b/Makefile.am index 63567d8..d6d165d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -132,10 +132,12 @@ test_stringcomp_LDADD = $(TESTS_LDADD) test_keyseq_LDADD = $(TESTS_LDADD) test_log_LDADD = $(TESTS_LDADD) test_interactive_LDADD = $(TESTS_LDADD) +test_rmlvo_to_kccgst_LDADD = $(TESTS_LDADD) check_PROGRAMS = \ $(TESTS) \ - test/interactive + test/interactive \ + test/rmlvo-to-kccgst EXTRA_DIST = \ test/data \ diff --git a/test/.gitignore b/test/.gitignore index 4cdda7c..f6e3133 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -10,3 +10,4 @@ stringcomp keyseq log interactive +rmlvo-to-kccgst diff --git a/test/rmlvo-to-kccgst.c b/test/rmlvo-to-kccgst.c new file mode 100644 index 0000000..ec2c0c4 --- /dev/null +++ b/test/rmlvo-to-kccgst.c @@ -0,0 +1,85 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "test.h" +#include "xkb-priv.h" +#include "rules.h" + +int +main(int argc, char *argv[]) +{ + int opt; + struct xkb_rule_names rmlvo = { NULL }; + struct xkb_context *ctx; + struct xkb_component_names kccgst; + + while ((opt = getopt(argc, argv, "r:m:l:v:o:h")) != -1) { + switch (opt) { + case 'r': + rmlvo.rules = optarg; + break; + case 'm': + rmlvo.model = optarg; + break; + case 'l': + rmlvo.layout = optarg; + break; + case 'v': + rmlvo.variant = optarg; + break; + case 'o': + rmlvo.options = optarg; + break; + case 'h': + case '?': + fprintf(stderr, "Usage: %s [-r ] [-m ] " + "[-l ] [-v ] [-o ]\n", + argv[0]); + return 1; + } + } + + if (isempty(rmlvo.rules)) + rmlvo.rules = DEFAULT_XKB_RULES; + if (isempty(rmlvo.model)) + rmlvo.model = DEFAULT_XKB_MODEL; + if (isempty(rmlvo.layout)) + rmlvo.layout = DEFAULT_XKB_LAYOUT; + + ctx = test_get_context(); + if (!ctx) { + fprintf(stderr, "Failed to get xkb context\n"); + return 1; + } + + if (!xkb_components_from_rules(ctx, &rmlvo, &kccgst)) + return 1; + + printf("keycodes: %s\n", kccgst.keycodes); + printf("types: %s\n", kccgst.types); + printf("compat: %s\n", kccgst.compat); + printf("symbols: %s\n", kccgst.symbols); + return 0; +} -- 2.7.4