? gok/keyboard-geometry
? gok/test-focus-reject
? gok/test-gok-wordcomplete
Index: gok/gok-keyboard.c
===================================================================
RCS file: /cvs/gnome/gok/gok/gok-keyboard.c,v
retrieving revision 1.121
diff -u -r1.121 gok-keyboard.c
--- gok/gok-keyboard.c	28 Jan 2004 13:34:42 -0000	1.121
+++ gok/gok-keyboard.c	28 Jan 2004 20:35:10 -0000
@@ -89,6 +89,8 @@
 
 /* private prototypes */
 static gboolean gok_keyboard_focus_object (Accessible *accessible);
+static gboolean gok_keyboard_branch_gui_selectaction (AccessibleNode *node);
+static gboolean gok_keyboard_branch_gui_valuator (AccessibleNode* node);
 
 /**
 * gok_keyboard_initialize
@@ -163,7 +165,36 @@
 				 sevent->group);
 			gok_key_set_effective_group (sevent->group);
 		}
+		else
+		{
+		    gok_log ("XKB event changed:%x\n", sevent->changed);
+		}
 	} 
+	else if (event->any.xkb_type == XkbMapNotify) 
+	{
+		g_warning ("XKB Map Notify changed:%x", event->map.changed);
+		XkbGetUpdatedMap (m_XkbDisplay, event->map.changed, m_XkbDescPtr);
+		/* rebuild GOK's 'Compose' keyboard */
+		if (gok_data_get_use_xkb_kbd () && event->map.changed & XkbKeySymsMask)
+		{
+			GokKeyboard *compose_kbd = gok_main_keyboard_find_byname ("Keyboard");
+			GokKeyboard *prev, *next;
+			if (compose_kbd) 
+			{
+				GokKeyboard *tmp = compose_kbd;
+				prev = compose_kbd->pKeyboardPrevious;
+				next = compose_kbd->pKeyboardNext;
+				g_warning ("recreating core keyboard");
+				compose_kbd = gok_keyboard_get_core ();
+				compose_kbd->pKeyboardPrevious = prev;
+				compose_kbd->pKeyboardNext = next;
+				if (prev) prev->pKeyboardNext = compose_kbd;
+				if (next) next->pKeyboardPrevious = compose_kbd;
+				gok_main_set_first_keyboard (compose_kbd);
+				gok_keyboard_delete (tmp, TRUE);
+			}
+		}
+	}
 	/* 
 	 * TODO: change GOK's shift state notification 
 	 * to use XKB instead of at-spi ?
@@ -716,7 +747,7 @@
 			 gok_keyboard_get_number_columns (pKeyboard));
 	}
 	else
-	{
+	{	  
 		g_free (pKeyboard);
 		pKeyboard = NULL;
 	}
@@ -2378,7 +2409,7 @@
 *
 * returns: TRUE if the selection+action were carried out, FALSE if not.
 **/
-gboolean 
+static gboolean 
 gok_keyboard_branch_gui_selectaction (AccessibleNode* node)
 {
 	AccessibleSelection* aselection;
@@ -2469,7 +2500,7 @@
 *
 * returns: TRUE if the keyboard was displayed, FALSE if not.
 **/
-gboolean 
+static gboolean 
 gok_keyboard_branch_gui_valuator (AccessibleNode* node)
 {
 	AccessibleValue* value;
Index: gok/main.c
===================================================================
RCS file: /cvs/gnome/gok/gok/main.c,v
retrieving revision 1.134
diff -u -r1.134 main.c
--- gok/main.c	26 Jan 2004 22:50:49 -0000	1.134
+++ gok/main.c	28 Jan 2004 20:35:14 -0000
@@ -511,7 +511,7 @@
 gok_log ("finished check");
 	
 	/* connect signal handlers; don't trap SIGKILL */ 
-	signal(SIGSEGV, (void (*)(int))gok_sig_handler);
+	/*signal(SIGSEGV, (void (*)(int))gok_sig_handler);*/
 	signal(SIGTERM, (void (*)(int))gok_sig_handler);
 	signal(SIGINT,  (void (*)(int))gok_sig_handler);
 
