diff --git a/Makefile.am b/Makefile.am index 9326539..e34b7ba 100644 --- a/Makefile.am +++ b/Makefile.am @@ -108,7 +108,6 @@ TESTS_ENVIRONMENT = TESTS = \ test/xkey \ test/filecomp \ - test/namescomp \ test/rulescomp \ test/state \ test/context \ @@ -121,7 +120,6 @@ TESTS_LDADD = libtest.la test_xkey_LDADD = $(TESTS_LDADD) test_filecomp_LDADD = $(TESTS_LDADD) -test_namescomp_LDADD = $(TESTS_LDADD) test_rulescomp_LDADD = $(TESTS_LDADD) -lrt test_state_LDADD = $(TESTS_LDADD) test_context_LDADD = $(TESTS_LDADD) diff --git a/src/xkb-priv.h b/src/xkb-priv.h index 86d5324..aec13ab 100644 --- a/src/xkb-priv.h +++ b/src/xkb-priv.h @@ -498,21 +498,6 @@ xkb_key_get_syms_by_level(struct xkb_keymap *keymap, struct xkb_key *key, xkb_group_index_t group, xkb_level_index_t level, const xkb_keysym_t **syms_out); -/** - * Deprecated entrypoint for legacy users who need to be able to compile - * XKB keymaps by KcCGST (Keycodes + Compat + Geometry + Symbols + Types) - * names. - * - * You should not use this unless you are the X server. This entrypoint - * may well disappear in future releases. Please, please, don't use it. - * - * Geometry will be ignored since xkbcommon does not support it in any way. - */ -struct xkb_keymap * -xkb_map_new_from_kccgst(struct xkb_context *ctx, - const struct xkb_component_names *kccgst, - enum xkb_map_compile_flags flags); - extern unsigned xkb_context_take_file_id(struct xkb_context *ctx); diff --git a/src/xkbcomp/xkbcomp.c b/src/xkbcomp/xkbcomp.c index b18cd70..fc23c51 100644 --- a/src/xkbcomp/xkbcomp.c +++ b/src/xkbcomp/xkbcomp.c @@ -200,58 +200,15 @@ err: return NULL; } -struct xkb_keymap * -xkb_map_new_from_kccgst(struct xkb_context *ctx, - const struct xkb_component_names *kccgst, - enum xkb_map_compile_flags flags) -{ - XkbFile *file; - struct xkb_keymap *keymap; - - if (!kccgst) { - log_err(ctx, "No components specified\n"); - return NULL; - } - - if (ISEMPTY(kccgst->keycodes)) { - log_err(ctx, "Keycodes required to generate XKB keymap\n"); - return NULL; - } - - if (ISEMPTY(kccgst->compat)) { - log_err(ctx, "Compat map required to generate XKB keymap\n"); - return NULL; - } - - if (ISEMPTY(kccgst->types)) { - log_err(ctx, "Types required to generate XKB keymap\n"); - return NULL; - } - - if (ISEMPTY(kccgst->symbols)) { - log_err(ctx, "Symbols required to generate XKB keymap\n"); - return NULL; - } - - file = keymap_file_from_components(ctx, kccgst); - if (!file) { - log_err(ctx, "Failed to generate parsed XKB file from components\n"); - return NULL; - } - - keymap = compile_keymap(ctx, file); - FreeXKBFile(file); - return keymap; -} - XKB_EXPORT struct xkb_keymap * xkb_map_new_from_names(struct xkb_context *ctx, const struct xkb_rule_names *rmlvo_in, enum xkb_map_compile_flags flags) { struct xkb_component_names *kkctgs; - struct xkb_keymap *keymap; + struct xkb_keymap *keymap = NULL; struct xkb_rule_names rmlvo = *rmlvo_in; + XkbFile *file; if (ISEMPTY(rmlvo.rules)) rmlvo.rules = DEFAULT_XKB_RULES; @@ -267,8 +224,16 @@ xkb_map_new_from_names(struct xkb_context *ctx, return NULL; } - keymap = xkb_map_new_from_kccgst(ctx, kkctgs, 0); + file = keymap_file_from_components(ctx, kkctgs); + if (!file) { + log_err(ctx, "Failed to generate parsed XKB file from components\n"); + goto out; + } + keymap = compile_keymap(ctx, file); + FreeXKBFile(file); + +out: free(kkctgs->keycodes); free(kkctgs->types); free(kkctgs->compat); diff --git a/test/namescomp.c b/test/namescomp.c deleted file mode 100644 index 6b8b477..0000000 --- a/test/namescomp.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2009 Dan Nicholson - * - * 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 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 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. - * - * Except as contained in this notice, the names of the authors or their - * institutions shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization from the authors. - */ - -#include -#include -#include -#include - -#include "xkb-priv.h" -#include "xkbcommon/xkbcommon.h" -#include "test.h" - -static int -test_names(struct xkb_context *context, const char *keycodes, - const char *types, const char *compat, const char *symbols) -{ - int ret = 1; - struct xkb_keymap *keymap; - struct xkb_component_names kccgst = { - .keycodes = strdup(keycodes), - .types = strdup(types), - .compat = strdup(compat), - .symbols = strdup(symbols), - }; - - fprintf(stderr, "\nCompiling %s %s %s %s\n", kccgst.keycodes, kccgst.types, - kccgst.compat, kccgst.symbols); - - keymap = xkb_map_new_from_kccgst(context, &kccgst, 0); - if (!keymap) { - ret = 0; - goto err_context; - } - - xkb_map_unref(keymap); -err_context: - free(kccgst.keycodes); - free(kccgst.types); - free(kccgst.compat); - free(kccgst.symbols); - return ret; -} - -int -main(void) -{ - struct xkb_context *ctx = test_get_context(); - - assert(ctx); - - assert(test_names(ctx, "evdev+aliases(qwertz)", "complete", "complete", "pc+de")); - assert(test_names(ctx, "evdev+aliases(qwerty)", "complete", "complete", "pc+us")); - assert(test_names(ctx, "evdev+aliases(qwertz)", "complete", "complete", - "pc+de+level3(ralt_switch_for_alts_toggle)+group(alts_toggle)")); - - assert(!test_names(ctx, "", "", "", "")); - assert(!test_names(ctx, "evdev+aliases(qwerty)", "", "", "")); - assert(!test_names(ctx, "evdev+aliases(qwertz)", "", "", "pc+de")); - assert(!test_names(ctx, "evdev+aliases(qwertz)", "complete", "", "pc+de")); - assert(!test_names(ctx, "evdev+aliases(qwertz)", "", "complete", "pc+de")); - assert(!test_names(ctx, "evdev+aliases(qwertz)", "complete", "complete", "")); - assert(!test_names(ctx, "badnames", "complete", "pc+us", "pc(pc101)")); - - xkb_context_unref(ctx); - - return 0; -}