On Thu, 10 Sep 2009, Tor Lillqvist wrote:
Because there the inserted text goes through lots of other code than just directly mapping from key presses to characters, which is never going to work in general.
... but is not as complicated as this text suggests. For all those who (will) have the same problem I post a working code snippet: ----------------------------------------------------------------------- static GtkIMContext *im_context; static void gtk_entry_commit_cb (GtkIMContext *context, const gchar *str, gpointer data) { printf("TEXT = %s\n", str); fflush(stdout); } gboolean key_press_handler(GtkWidget *widget, GdkEventKey *event, gpointer data) { gtk_im_context_filter_keypress(im_context, event); return FALSE; } int main(int argc, char *argv[]) { GtkWidget *the_window; gtk_init (&argc, &argv); the_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (the_window, "key-press-event", G_CALLBACK (key_press_handler), NULL); im_context = gtk_im_context_simple_new (); g_signal_connect (im_context, "commit", G_CALLBACK (gtk_entry_commit_cb), NULL); gtk_widget_show_all(the_window); gtk_main(); return 0; } -------------------------------------------------------
You need to read up on GtkIMContext, I think.
Indeed, and the same hint is on GdkEventKey manual page: http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventKey "The only correct way to handle text input of text is using input methods (see GtkIMContext), ..." But I think only a few programmers can convert this hint into a working program. -- J.Anders, GERMANY, TU Chemnitz, Fakultaet fuer Informatik _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list