diff --git a/src/compositor.c b/src/compositor.c index 10a99e8c..4322fb81 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -2775,23 +2775,10 @@ weston_compositor_init(struct weston_compositor *ec, { struct wl_event_loop *loop; struct xkb_rule_names xkb_names; - const struct config_key keyboard_config_keys[] = { - { "keymap_rules", CONFIG_KEY_STRING, &xkb_names.rules }, - { "keymap_model", CONFIG_KEY_STRING, &xkb_names.model }, - { "keymap_layout", CONFIG_KEY_STRING, &xkb_names.layout }, - { "keymap_variant", CONFIG_KEY_STRING, &xkb_names.variant }, - { "keymap_options", CONFIG_KEY_STRING, &xkb_names.options }, - }; - const struct config_section cs[] = { - { "keyboard", - keyboard_config_keys, ARRAY_LENGTH(keyboard_config_keys) }, - }; - - memset(&xkb_names, 0, sizeof(xkb_names)); + struct weston_config_section *s; ec->config_fd = config_fd; ec->config = weston_config_parse(config_fd); - parse_config_file(config_fd, cs, ARRAY_LENGTH(cs), ec); ec->wl_display = display; wl_signal_init(&ec->destroy_signal); @@ -2829,6 +2816,17 @@ weston_compositor_init(struct weston_compositor *ec, weston_plane_init(&ec->primary_plane, 0, 0); weston_compositor_stack_plane(ec, &ec->primary_plane, NULL); + s = weston_config_get_section(ec->config, "keyboard", NULL, NULL); + weston_config_section_get_string(s, "keymap_rules", + (char **) &xkb_names.rules, NULL); + weston_config_section_get_string(s, "keymap_model", + (char **) &xkb_names.model, NULL); + weston_config_section_get_string(s, "keymap_layout", + (char **) &xkb_names.layout, NULL); + weston_config_section_get_string(s, "keymap_variant", + (char **) &xkb_names.variant, NULL); + weston_config_section_get_string(s, "keymap_options", + (char **) &xkb_names.options, NULL); if (weston_compositor_xkb_init(ec, &xkb_names) < 0) return -1;