--- gnome-settings-daemon-2.30.1.orig/plugins/keyboard/gsd-keyboard-manager.c 2010-06-01 13:50:01.142545455 +0200
+++ gnome-settings-daemon-2.30.1/plugins/keyboard/gsd-keyboard-manager.c 2010-06-01 13:56:20.487582147 +0200
@@ -384,6 +384,18 @@
}
static gboolean
+is_xserver_xsun (void) {
+ int dontcare;
+ Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ if ((strcmp(ServerVendor(dpy), "Sun Microsystems, Inc.") == 0) &&\
+ XQueryExtension (dpy, "SUN_ALLPLANES", &dontcare, &dontcare, &dontcare))
+ return TRUE;
+
+ return FALSE;
+}
+
+static gboolean
start_keyboard_idle_cb (GsdKeyboardManager *manager)
{
GConfClient *client;
@@ -398,8 +410,11 @@
gconf_client_add_dir (client, GSD_KEYBOARD_KEY, GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
/* Essential - xkb initialization should happen before */
- gsd_keyboard_xkb_set_post_activation_callback ((PostActivationCallback) gsd_load_modmap_files, NULL);
- gsd_keyboard_xkb_init (client, manager);
+ /* disables the XKB layout support for Gnome when running Xsun */
+ if (!is_xserver_xsun ()) {
+ gsd_keyboard_xkb_set_post_activation_callback ((PostActivationCallback) gsd_load_modmap_files, NULL);
+ gsd_keyboard_xkb_init (client, manager);
+ }
#ifdef HAVE_X11_EXTENSIONS_XKB_H
numlock_xkb_init (manager);