/
niceSOFT
/
kbd
Обзор
Документация
Войти
/
niceSOFT
/
kbd
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/libkeymap/libkeymap-test58.c
67 строк
2 KB
Alexey Gladkov
xkbsupport: drop the external XKB names table
20 мар 2026, 15:00
Не верифицирован
20 мар 2026, 15:00
628370f
Код
Авторство
О чём код?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <keymap.h> #include <linux/keyboard.h> #include "libkeymap-test.h" #include "xkbsupport.h" static void set_xkb_config_root(void) { char path[512]; if (snprintf(path, sizeof(path), "%s/data/xkb", TESTDIR) >= (int) sizeof(path)) kbd_error(EXIT_FAILURE, 0, "xkb config root path is too long"); if (setenv("XKB_CONFIG_ROOT", path, 1) != 0) kbd_error(EXIT_FAILURE, errno, "unable to set XKB_CONFIG_ROOT"); } static void set_xcomposefile(void) { char path[512]; if (snprintf(path, sizeof(path), "%s/data/xkb/compose/en_US", TESTDIR) >= (int) sizeof(path)) kbd_error(EXIT_FAILURE, 0, "compose file path is too long"); if (setenv("XCOMPOSEFILE", path, 1) != 0) kbd_error(EXIT_FAILURE, errno, "unable to set XCOMPOSEFILE"); } static void set_xkb_suppress_warnings(void) { if (setenv("LK_XKB_SUPPRESS_WARNINGS", "1", 1) != 0) kbd_error(EXIT_FAILURE, errno, "unable to set LK_XKB_SUPPRESS_WARNINGS"); } int main(int argc KBD_ATTR_UNUSED, char **argv KBD_ATTR_UNUSED) { struct parsed_keymap keymap; struct xkeymap_params params = { .model = "pc104", .layout = "cz", .locale = "en_US.UTF-8", }; init_test_keymap(&keymap, "xkb-cz-dump"); if (lk_set_parser_flags(keymap.ctx, LK_FLAG_PREFER_UNICODE) != 0) kbd_error(EXIT_FAILURE, 0, "Unable to enable preferred Unicode conversion"); set_xkb_config_root(); set_xcomposefile(); set_xkb_suppress_warnings(); if (convert_xkb_keymap(keymap.ctx, ¶ms) != 0) kbd_error(EXIT_FAILURE, 0, "Unable to convert XKB cz layout"); lk_dump_keymap(keymap.ctx, stdout, LK_SHAPE_SEPARATE_LINES, 0); lk_dump_diacs(keymap.ctx, stdout); free_test_keymap(&keymap); return EXIT_SUCCESS; }