--- gnome-settings-daemon-3.4.2.orig/plugins/media-keys/gsd-media-keys-manager.c +++ gnome-settings-daemon-3.4.2/plugins/media-keys/gsd-media-keys-manager.c @@ -177,6 +177,8 @@ static void gsd_media_keys_manager_c static void gsd_media_keys_manager_init (GsdMediaKeysManager *media_keys_manager); static void gsd_media_keys_manager_finalize (GObject *object); static void register_manager (GsdMediaKeysManager *manager); +static void init_kbd (GsdMediaKeysManager *manager); + G_DEFINE_TYPE (GsdMediaKeysManager, gsd_media_keys_manager, G_TYPE_OBJECT) static gpointer manager_object = NULL; @@ -570,6 +572,7 @@ gsettings_changed_cb (GSettings gdk_error_trap_push (); + init_kbd (manager); /* Find the key that was modified */ for (i = 0; i < manager->priv->keys->len; i++) { MediaKey *key; @@ -664,6 +667,7 @@ gconf_changed_cb (GConfClient *c g_return_if_fail (entry != NULL); g_return_if_fail (entry->key[0] == '/'); + init_kbd (manager); /* Look for the dir that changed, thus the MediaKey */ key_elems = g_strsplit (entry->key + 1, "/", -1); if (key_elems == NULL ||