[XKBCONFIGROOT="$xkb_base"])
AC_SUBST([XKBCONFIGROOT])
+AC_ARG_WITH([default_rules],
+ [AS_HELP_STRING([--with-default-rules=<path>],
+ [Default XKB ruleset (default: evdev)])],
+ [DEFAULT_XKB_RULES="$withval"],
+ [DEFAULT_XKB_RULES="evdev"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_RULES], ["$DEFAULT_XKB_RULES"],
+ [Default XKB ruleset])
+
+AC_ARG_WITH([default_model],
+ [AS_HELP_STRING([--with-default-model=<path>],
+ [Default XKB model (default: pc105)])],
+ [DEFAULT_XKB_MODEL="$withval"],
+ [DEFAULT_XKB_MODEL="pc105"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_MODEL], ["$DEFAULT_XKB_MODEL"],
+ [Default XKB model])
+
+AC_ARG_WITH([default_layout],
+ [AS_HELP_STRING([--with-default-layout=<path>],
+ [Default XKB layout (default: us)])],
+ [DEFAULT_XKB_LAYOUT="$withval"],
+ [DEFAULT_XKB_LAYOUT="us"])
+AC_DEFINE_UNQUOTED([DEFAULT_XKB_LAYOUT], ["$DEFAULT_XKB_LAYOUT"],
+ [Default XKB layout])
AC_CONFIG_FILES([
Makefile
XKB_EXPORT struct xkb_keymap *
xkb_map_new_from_names(struct xkb_context *ctx,
- const struct xkb_rule_names *rmlvo,
+ const struct xkb_rule_names *rmlvo_in,
enum xkb_map_compile_flags flags)
{
struct xkb_component_names *kkctgs;
struct xkb_keymap *keymap;
+ struct xkb_rule_names rmlvo = *rmlvo_in;
- if (!rmlvo || ISEMPTY(rmlvo->rules) || ISEMPTY(rmlvo->layout)) {
- log_err(ctx, "rules and layout required to generate XKB keymap\n");
- return NULL;
- }
+ 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;
- kkctgs = xkb_components_from_rules(ctx, rmlvo);
+ kkctgs = xkb_components_from_rules(ctx, &rmlvo);
if (!kkctgs) {
log_err(ctx, "failed to generate XKB components from rules \"%s\"\n",
- rmlvo->rules);
+ rmlvo.rules);
return NULL;
}
assert(test_rmlvo(ctx, "evdev", "pc105", "us", "intl", ""));
assert(test_rmlvo(ctx, "evdev", "pc105", "us", "intl", "grp:alts_toggle"));
- assert(!test_rmlvo(ctx, "", "", "", "", ""));
assert(!test_rmlvo(ctx, "base", "", "", "", ""));
assert(!test_rmlvo(ctx, "base", "pc105", "", "", ""));
assert(!test_rmlvo(ctx, "badrules", "", "us", "", ""));