summaryrefslogtreecommitdiff
path: root/libgnomekbd
diff options
context:
space:
mode:
Diffstat (limited to 'libgnomekbd')
-rw-r--r--libgnomekbd/gkbd-config-registry.c65
-rw-r--r--libgnomekbd/gkbd-config-registry.h4
-rw-r--r--libgnomekbd/gkbd-config-registry.xml4
-rw-r--r--libgnomekbd/gkbd-desktop-config.c14
-rw-r--r--libgnomekbd/gkbd-desktop-config.h4
-rw-r--r--libgnomekbd/gkbd-indicator-config.c7
-rw-r--r--libgnomekbd/gkbd-indicator.c34
-rw-r--r--libgnomekbd/gkbd-keyboard-config.c83
-rw-r--r--libgnomekbd/gkbd-keyboard-config.h8
9 files changed, 128 insertions, 95 deletions
diff --git a/libgnomekbd/gkbd-config-registry.c b/libgnomekbd/gkbd-config-registry.c
index 98850d2..8c8e0b8 100644
--- a/libgnomekbd/gkbd-config-registry.c
+++ b/libgnomekbd/gkbd-config-registry.c
@@ -28,13 +28,14 @@
static GObjectClass *parent_class = NULL;
gboolean
- gkbd_config_registry_get_current_descriptions_as_utf8
+ gkbd_config_registry_get_descriptions_as_utf8
(GkbdConfigRegistry * registry,
+ gchar ** layout_ids,
+ gchar ** variant_ids,
gchar *** short_layout_descriptions,
gchar *** long_layout_descriptions,
gchar *** short_variant_descriptions,
gchar *** long_variant_descriptions, GError ** error) {
- XklConfigRec *xkl_config;
char **pl, **pv;
guint total_layouts;
gchar **sld, **lld, **svd, **lvd;
@@ -51,14 +52,9 @@ gboolean
XKLF_MULTIPLE_LAYOUTS_SUPPORTED))
return FALSE;
- xkl_config = xkl_config_rec_new ();
-
- if (!xkl_config_rec_get_from_server (xkl_config, registry->engine))
- return FALSE;
-
- pl = xkl_config->layouts;
- pv = xkl_config->variants;
- total_layouts = g_strv_length (xkl_config->layouts);
+ pl = layout_ids;
+ pv = variant_ids;
+ total_layouts = g_strv_length (layout_ids);
sld = *short_layout_descriptions =
g_new0 (char *, total_layouts + 1);
lld = *long_layout_descriptions =
@@ -71,14 +67,16 @@ gboolean
while (pl != NULL && *pl != NULL) {
XklConfigItem item;
+ xkl_debug (100, "ids: [%s][%s]\n", *pl, pv == NULL ? NULL : *pv);
+
g_snprintf (item.name, sizeof item.name, "%s", *pl);
if (xkl_config_registry_find_layout
(registry->registry, &item)) {
- *sld++ = g_strdup (item.short_description);
- *lld++ = g_strdup (item.description);
+ *sld = g_strdup (item.short_description);
+ *lld = g_strdup (item.description);
} else {
- *sld++ = g_strdup ("");
- *lld++ = g_strdup ("");
+ *sld = g_strdup ("");
+ *lld = g_strdup ("");
}
if (*pv != NULL) {
@@ -89,18 +87,26 @@ gboolean
*svd = g_strdup (item.short_description);
*lvd = g_strdup (item.description);
} else {
- *svd++ = g_strdup ("");
- *lvd++ = g_strdup ("");
+ *svd = g_strdup ("");
+ *lvd = g_strdup ("");
}
} else {
- *svd++ = g_strdup ("");
- *lvd++ = g_strdup ("");
+ *svd = g_strdup ("");
+ *lvd = g_strdup ("");
}
+ xkl_debug (100, "description: [%s][%s][%s][%s]\n",
+ *sld, *lld, *svd, *lvd);
+ sld++;
+ lld++;
+ svd++;
+ lvd++;
+
pl++;
- pv++;
+
+ if (*pv != NULL)
+ pv++;
}
- g_object_unref (G_OBJECT (xkl_config));
return TRUE;
}
@@ -169,14 +175,17 @@ gkbd_config_registry_init (GkbdConfigRegistry * registry)
DBUS_PATH_DBUS,
DBUS_INTERFACE_DBUS);
- if (!org_freedesktop_DBus_request_name
- (driver_proxy, "org.gnome.GkbdConfigRegistry", 0,
- &request_ret, &error)) {
- g_warning ("Unable to register service: %s",
- error->message);
- g_error_free (error);
- }
- g_object_unref (driver_proxy);
+ if (driver_proxy != NULL) {
+ if (!org_freedesktop_DBus_request_name
+ (driver_proxy, "org.gnome.GkbdConfigRegistry", 0,
+ &request_ret, &error)) {
+ g_warning ("Unable to register service: %s",
+ error->message);
+ g_error_free (error);
+ }
+ g_object_unref (driver_proxy);
+ } else
+ g_critical ("Could not create DBUS proxy");
/* Init libxklavier stuff */
registry->engine = xkl_engine_get_instance (XOpenDisplay (NULL));
diff --git a/libgnomekbd/gkbd-config-registry.h b/libgnomekbd/gkbd-config-registry.h
index 04d7318..d958090 100644
--- a/libgnomekbd/gkbd-config-registry.h
+++ b/libgnomekbd/gkbd-config-registry.h
@@ -53,8 +53,10 @@ struct GkbdConfigRegistryClass {
extern GType gkbd_config_registry_get_type (void);
extern gboolean
- gkbd_config_registry_get_current_descriptions_as_utf8
+ gkbd_config_registry_get_descriptions_as_utf8
(GkbdConfigRegistry * registry,
+ gchar ** layout_ids,
+ gchar ** variant_ids,
gchar *** short_layout_descriptions,
gchar *** long_layout_descriptions,
gchar *** short_variant_descriptions,
diff --git a/libgnomekbd/gkbd-config-registry.xml b/libgnomekbd/gkbd-config-registry.xml
index 32c4380..73b6404 100644
--- a/libgnomekbd/gkbd-config-registry.xml
+++ b/libgnomekbd/gkbd-config-registry.xml
@@ -3,7 +3,9 @@
<node name="/org/gnome/GkbdConfigRegistry">
<interface name="org.gnome.GkbdConfigRegistry">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="gkbd_config_registry"/>
- <method name="GetCurrentDescriptionsAsUtf8">
+ <method name="GetDescriptionsAsUtf8">
+ <arg type="as" name="layoutIds" direction="in" />
+ <arg type="as" name="variantIds" direction="in" />
<arg type="as" name="shortLayoutDescriptions" direction="out" />
<arg type="as" name="longLayoutDescriptions" direction="out" />
<arg type="as" name="shortVariantDescriptions" direction="out" />
diff --git a/libgnomekbd/gkbd-desktop-config.c b/libgnomekbd/gkbd-desktop-config.c
index bdf2112..936ad67 100644
--- a/libgnomekbd/gkbd-desktop-config.c
+++ b/libgnomekbd/gkbd-desktop-config.c
@@ -52,7 +52,9 @@ const gchar GKBD_DESKTOP_CONFIG_KEY_LAYOUT_NAMES_AS_GROUP_NAMES[]
*/
static gboolean
-gkbd_desktop_config_get_remote_lv_descriptions_utf8 (gchar *** sld,
+gkbd_desktop_config_get_remote_lv_descriptions_utf8 (const gchar ** lids,
+ const gchar ** vids,
+ gchar *** sld,
gchar *** lld,
gchar *** svd,
gchar *** lvd)
@@ -77,8 +79,8 @@ gkbd_desktop_config_get_remote_lv_descriptions_utf8 (gchar *** sld,
"org.gnome.GkbdConfigRegistry");
/* The method call will trigger activation, more on that later */
- if (!org_gnome_GkbdConfigRegistry_get_current_descriptions_as_utf8
- (proxy, sld, lld, svd, lvd, &error)) {
+ if (!org_gnome_GkbdConfigRegistry_get_descriptions_as_utf8
+ (proxy, lids, vids, sld, lld, svd, lvd, &error)) {
/* Method failed, the GError is set, let's warn everyone */
g_warning ("Woops remote method failed: %s",
error->message);
@@ -300,6 +302,10 @@ gkbd_desktop_config_stop_listen (GkbdDesktopConfig * config)
gboolean
gkbd_desktop_config_load_remote_group_descriptions_utf8 (GkbdDesktopConfig
* config,
+ const gchar **
+ layout_ids,
+ const gchar **
+ variant_ids,
gchar ***
short_group_names,
gchar ***
@@ -311,7 +317,7 @@ gkbd_desktop_config_load_remote_group_descriptions_utf8 (GkbdDesktopConfig
gint total_descriptions;
if (!gkbd_desktop_config_get_remote_lv_descriptions_utf8
- (&sld, &lld, &svd, &lvd)) {
+ (layout_ids, variant_ids, &sld, &lld, &svd, &lvd)) {
return False;
}
diff --git a/libgnomekbd/gkbd-desktop-config.h b/libgnomekbd/gkbd-desktop-config.h
index 9d8322e..11eb91d 100644
--- a/libgnomekbd/gkbd-desktop-config.h
+++ b/libgnomekbd/gkbd-desktop-config.h
@@ -78,6 +78,10 @@ gkbd_desktop_config_load_group_descriptions_utf8 (GkbdDesktopConfig *
extern gboolean
gkbd_desktop_config_load_remote_group_descriptions_utf8 (GkbdDesktopConfig
* config,
+ const gchar **
+ layout_ids,
+ const gchar **
+ variant_ids,
gchar ***
short_group_names,
gchar ***
diff --git a/libgnomekbd/gkbd-indicator-config.c b/libgnomekbd/gkbd-indicator-config.c
index d47b150..f353f01 100644
--- a/libgnomekbd/gkbd-indicator-config.c
+++ b/libgnomekbd/gkbd-indicator-config.c
@@ -101,10 +101,11 @@ gkbd_indicator_config_get_images_file (GkbdIndicatorConfig *
if (!ind_config->show_flags)
return NULL;
- if ((kbd_config->layouts != NULL) &&
- (g_slist_length (kbd_config->layouts) > group)) {
+ if ((kbd_config->layouts_variants != NULL) &&
+ (g_slist_length (kbd_config->layouts_variants) > group)) {
char *full_layout_name =
- (char *) g_slist_nth_data (kbd_config->layouts, group);
+ (char *) g_slist_nth_data (kbd_config->
+ layouts_variants, group);
if (full_layout_name != NULL) {
char *l, *v;
diff --git a/libgnomekbd/gkbd-indicator.c b/libgnomekbd/gkbd-indicator.c
index 57091e5..cb0c2e4 100644
--- a/libgnomekbd/gkbd-indicator.c
+++ b/libgnomekbd/gkbd-indicator.c
@@ -245,7 +245,6 @@ gkbd_indicator_prepare_drawing (GkbdIndicator * gki, int group)
char *lbl_title = NULL;
int counter = 0;
char *layout_name = NULL;
- XklConfigItem cfg_item;
GtkWidget *align, *label;
/**
* Map "short desciption" ->
@@ -263,7 +262,7 @@ gkbd_indicator_prepare_drawing (GkbdIndicator * gki, int group)
XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
char *full_layout_name =
(char *) g_slist_nth_data (globals.kbd_cfg.
- layouts,
+ layouts_variants,
group);
char *variant_name;
if (!gkbd_keyboard_config_split_items
@@ -272,10 +271,6 @@ gkbd_indicator_prepare_drawing (GkbdIndicator * gki, int group)
/* just in case */
layout_name = g_strdup (full_layout_name);
- g_snprintf (cfg_item.name,
- sizeof (cfg_item.name), "%s",
- layout_name);
-
if (globals.short_group_names != NULL) {
char *short_group_name =
globals.short_group_names[group];
@@ -415,11 +410,12 @@ gkbd_indicator_ind_cfg_changed (GConfClient * client,
}
static void
-gkbd_indicator_load_group_names (void)
+gkbd_indicator_load_group_names (const gchar ** layout_ids,
+ const gchar ** variant_ids)
{
if (!gkbd_desktop_config_load_remote_group_descriptions_utf8
- (&globals.cfg, &globals.short_group_names,
- &globals.full_group_names)) {
+ (&globals.cfg, layout_ids, variant_ids,
+ &globals.short_group_names, &globals.full_group_names)) {
gint i, total_groups =
xkl_engine_get_num_groups (globals.engine);
globals.full_group_names =
@@ -427,7 +423,7 @@ gkbd_indicator_load_group_names (void)
if (xkl_engine_get_features (globals.engine) &
XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
- GSList *lst = globals.kbd_cfg.layouts;
+ GSList *lst = globals.kbd_cfg.layouts_variants;
for (i = 0; lst; lst = lst->next) {
globals.full_group_names[i++] =
g_strdup ((char *) lst->data);
@@ -445,20 +441,25 @@ gkbd_indicator_load_group_names (void)
static void
gkbd_indicator_kbd_cfg_callback (GkbdIndicator * gki)
{
+ XklConfigRec *xklrec = xkl_config_rec_new ();
xkl_debug (100,
"XKB configuration changed on X Server - reiniting...\n");
- gkbd_keyboard_config_load_from_x_current (&globals.kbd_cfg);
+ gkbd_keyboard_config_load_from_x_current (&globals.kbd_cfg,
+ xklrec);
gkbd_indicator_config_update_images (&globals.ind_cfg,
&globals.kbd_cfg);
g_strfreev (globals.full_group_names);
g_strfreev (globals.short_group_names);
- gkbd_indicator_load_group_names ();
+ gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+ (const gchar **) xklrec->
+ variants);
ForAllIndicators () {
gkbd_indicator_reinit_ui (gki);
} NextIndicator ();
+ g_object_unref (G_OBJECT (xklrec));
}
/* Should be called once for all applets */
@@ -697,6 +698,7 @@ static void
gkbd_indicator_global_init (void)
{
GConfClient *gconf_client;
+ XklConfigRec *xklrec = xkl_config_rec_new ();
globals.engine = xkl_engine_get_instance (GDK_DISPLAY ());
if (globals.engine == NULL) {
@@ -727,13 +729,17 @@ gkbd_indicator_global_init (void)
gkbd_desktop_config_load_from_gconf (&globals.cfg);
gkbd_desktop_config_activate (&globals.cfg);
- gkbd_keyboard_config_load_from_x_current (&globals.kbd_cfg);
+ gkbd_keyboard_config_load_from_x_current (&globals.kbd_cfg,
+ xklrec);
gkbd_indicator_config_load_from_gconf (&globals.ind_cfg);
gkbd_indicator_config_update_images (&globals.ind_cfg,
&globals.kbd_cfg);
gkbd_indicator_config_activate (&globals.ind_cfg);
- gkbd_indicator_load_group_names ();
+ gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+ (const gchar **) xklrec->
+ variants);
+ g_object_unref (G_OBJECT (xklrec));
gkbd_indicator_plugin_manager_init (&globals.plugin_manager);
gkbd_indicator_plugin_manager_init_enabled_plugins (&globals.
diff --git a/libgnomekbd/gkbd-keyboard-config.c b/libgnomekbd/gkbd-keyboard-config.c
index f61d9f7..1a121fc 100644
--- a/libgnomekbd/gkbd-keyboard-config.c
+++ b/libgnomekbd/gkbd-keyboard-config.c
@@ -212,8 +212,8 @@ static void
gkbd_keyboard_config_layouts_add_full (GkbdKeyboardConfig * kbd_config,
const gchar * full_layout_name)
{
- kbd_config->layouts =
- g_slist_append (kbd_config->layouts,
+ kbd_config->layouts_variants =
+ g_slist_append (kbd_config->layouts_variants,
g_strdup (full_layout_name));
}
@@ -229,20 +229,13 @@ gkbd_keyboard_config_copy_from_xkl_config (GkbdKeyboardConfig * kbd_config,
p = pdata->layouts;
p1 = pdata->variants;
while (p != NULL && *p != NULL) {
- if (*p1 == NULL || **p1 == '\0') {
- xkl_debug (150, "Loaded Kbd layout: [%s]\n", *p);
- gkbd_keyboard_config_layouts_add_full (kbd_config,
- *p);
- } else {
- char full_layout[XKL_MAX_CI_NAME_LENGTH * 2];
- g_snprintf (full_layout, sizeof (full_layout),
- "%s\t%s", *p, *p1);
- xkl_debug (150,
- "Loaded Kbd layout with variant: [%s]\n",
- full_layout);
- gkbd_keyboard_config_layouts_add_full (kbd_config,
- full_layout);
- }
+ const gchar *full_layout =
+ gkbd_keyboard_config_merge_items (*p, *p1);
+ xkl_debug (150,
+ "Loaded Kbd layout (with variant): [%s]\n",
+ full_layout);
+ gkbd_keyboard_config_layouts_add_full (kbd_config,
+ full_layout);
p++;
p1++;
}
@@ -279,15 +272,15 @@ gkbd_keyboard_config_copy_to_xkl_config (GkbdKeyboardConfig * kbd_config,
NULL) ? NULL : g_strdup (kbd_config->model);
num_layouts =
- (kbd_config->layouts ==
- NULL) ? 0 : g_slist_length (kbd_config->layouts);
+ (kbd_config->layouts_variants ==
+ NULL) ? 0 : g_slist_length (kbd_config->layouts_variants);
num_options =
(kbd_config->options ==
NULL) ? 0 : g_slist_length (kbd_config->options);
xkl_debug (150, "Taking %d layouts\n", num_layouts);
if (num_layouts != 0) {
- GSList *the_layout = kbd_config->layouts;
+ GSList *the_layout_variant = kbd_config->layouts_variants;
char **p1 = pdata->layouts =
g_new0 (char *, num_layouts + 1);
char **p2 = pdata->variants =
@@ -295,7 +288,7 @@ gkbd_keyboard_config_copy_to_xkl_config (GkbdKeyboardConfig * kbd_config,
for (i = num_layouts; --i >= 0;) {
char *layout, *variant;
if (gkbd_keyboard_config_split_items
- (the_layout->data, &layout, &variant)
+ (the_layout_variant->data, &layout, &variant)
&& variant != NULL) {
*p1 =
(layout ==
@@ -307,9 +300,9 @@ gkbd_keyboard_config_copy_to_xkl_config (GkbdKeyboardConfig * kbd_config,
g_strdup (variant);
} else {
*p1 =
- (the_layout->data ==
+ (the_layout_variant->data ==
NULL) ? g_strdup ("") :
- g_strdup (the_layout->data);
+ g_strdup (the_layout_variant->data);
*p2 = g_strdup ("");
}
xkl_debug (150, "Adding [%s]/%p and [%s]/%p\n",
@@ -317,7 +310,7 @@ gkbd_keyboard_config_copy_to_xkl_config (GkbdKeyboardConfig * kbd_config,
*p2 ? *p2 : "(nil)", *p2);
p1++;
p2++;
- the_layout = the_layout->next;
+ the_layout_variant = the_layout_variant->next;
}
}
@@ -428,8 +421,8 @@ gkbd_keyboard_config_save_params (GkbdKeyboardConfig * kbd_config,
xkl_debug (150, "Saved Kbd model: [%s]\n",
kbd_config->model ? kbd_config->model : "(null)");
- if (kbd_config->layouts) {
- pl = kbd_config->layouts;
+ if (kbd_config->layouts_variants) {
+ pl = kbd_config->layouts_variants;
while (pl != NULL) {
xkl_debug (150, "Saved Kbd layout: [%s]\n",
pl->data);
@@ -438,7 +431,7 @@ gkbd_keyboard_config_save_params (GkbdKeyboardConfig * kbd_config,
gconf_change_set_set_list (cs,
param_names[1],
GCONF_VALUE_STRING,
- kbd_config->layouts);
+ kbd_config->layouts_variants);
} else {
xkl_debug (150, "Saved Kbd layouts: []\n");
gconf_change_set_unset (cs, param_names[1]);
@@ -511,11 +504,12 @@ gkbd_keyboard_config_load_from_gconf (GkbdKeyboardConfig * kbd_config,
kbd_config->model =
g_strdup (kbd_config_default->model);
- if (kbd_config->layouts == NULL) {
- pl = kbd_config_default->layouts;
+ if (kbd_config->layouts_variants == NULL) {
+ pl = kbd_config_default->layouts_variants;
while (pl != NULL) {
- kbd_config->layouts =
- g_slist_append (kbd_config->layouts,
+ kbd_config->layouts_variants =
+ g_slist_append (kbd_config->
+ layouts_variants,
g_strdup (pl->data));
pl = pl->next;
}
@@ -542,9 +536,12 @@ gkbd_keyboard_config_load_from_gconf_backup (GkbdKeyboardConfig *
}
void
-gkbd_keyboard_config_load_from_x_current (GkbdKeyboardConfig * kbd_config)
+gkbd_keyboard_config_load_from_x_current (GkbdKeyboardConfig * kbd_config,
+ XklConfigRec * data)
{
- XklConfigRec *data = xkl_config_rec_new ();
+ gboolean own_data = data == NULL;
+ if (own_data)
+ data = xkl_config_rec_new ();
if (xkl_config_rec_get_from_server (data, kbd_config->engine))
gkbd_keyboard_config_copy_from_xkl_config (kbd_config,
data);
@@ -552,13 +549,15 @@ gkbd_keyboard_config_load_from_x_current (GkbdKeyboardConfig * kbd_config)
xkl_debug (150,
"Could not load keyboard config from server: [%s]\n",
xkl_get_last_error ());
- g_object_unref (G_OBJECT (data));
+ if (own_data)
+ g_object_unref (G_OBJECT (data));
}
void
-gkbd_keyboard_config_load_from_x_initial (GkbdKeyboardConfig * kbd_config)
+gkbd_keyboard_config_load_from_x_initial (GkbdKeyboardConfig * kbd_config,
+ XklConfigRec * data)
{
- XklConfigRec *data = xkl_config_rec_new ();
+ gboolean own_data = data == NULL;
if (xkl_config_rec_get_from_backup (data, kbd_config->engine))
gkbd_keyboard_config_copy_from_xkl_config (kbd_config,
data);
@@ -566,7 +565,8 @@ gkbd_keyboard_config_load_from_x_initial (GkbdKeyboardConfig * kbd_config)
xkl_debug (150,
"Could not load keyboard config from backup: [%s]\n",
xkl_get_last_error ());
- g_object_unref (G_OBJECT (data));
+ if (own_data)
+ g_object_unref (G_OBJECT (data));
}
gboolean
@@ -580,8 +580,8 @@ gkbd_keyboard_config_equals (GkbdKeyboardConfig * kbd_config1,
(kbd_config2->model != NULL) &&
g_ascii_strcasecmp (kbd_config1->model, kbd_config2->model))
return False;
- return gslist_str_equal (kbd_config1->layouts,
- kbd_config2->layouts)
+ return gslist_str_equal (kbd_config1->layouts_variants,
+ kbd_config2->layouts_variants)
&& gslist_str_equal (kbd_config1->options,
kbd_config2->options);
}
@@ -659,7 +659,8 @@ gkbd_keyboard_config_layouts_add (GkbdKeyboardConfig * kbd_config,
void
gkbd_keyboard_config_layouts_reset (GkbdKeyboardConfig * kbd_config)
{
- gkbd_keyboard_config_string_list_reset (&kbd_config->layouts);
+ gkbd_keyboard_config_string_list_reset (&kbd_config->
+ layouts_variants);
}
void
@@ -775,9 +776,9 @@ gkbd_keyboard_config_to_string (const GkbdKeyboardConfig * config)
gint count;
gchar *result;
- if (config->layouts) {
+ if (config->layouts_variants) {
/* g_slist_length is "expensive", so we determinate the length on the fly */
- for (iter = config->layouts, count = 0; iter;
+ for (iter = config->layouts_variants, count = 0; iter;
iter = iter->next, ++count) {
if (buffer->len)
g_string_append (buffer, " ");
diff --git a/libgnomekbd/gkbd-keyboard-config.h b/libgnomekbd/gkbd-keyboard-config.h
index d0ba04d..579338a 100644
--- a/libgnomekbd/gkbd-keyboard-config.h
+++ b/libgnomekbd/gkbd-keyboard-config.h
@@ -39,7 +39,7 @@ extern const gchar GKBD_KEYBOARD_CONFIG_KEY_OPTIONS[];
*/
typedef struct _GkbdKeyboardConfig {
gchar *model;
- GSList *layouts;
+ GSList *layouts_variants;
GSList *options;
/* private, transient */
@@ -71,10 +71,12 @@ extern void gkbd_keyboard_config_save_to_gconf_backup (GkbdKeyboardConfig *
kbd_config);
extern void gkbd_keyboard_config_load_from_x_initial (GkbdKeyboardConfig *
- kbd_config);
+ kbd_config,
+ XklConfigRec * buf);
extern void gkbd_keyboard_config_load_from_x_current (GkbdKeyboardConfig *
- kbd_config);
+ kbd_config,
+ XklConfigRec * buf);
extern void gkbd_keyboard_config_start_listen (GkbdKeyboardConfig *
kbd_config,