On Fri, Sep 28, 2007 at 05:40:56PM +0800, Magicloud Magiclouds wrote: > As in Emacs, something like Ctrl+Alt+a work, even in a gnome-terminal.
How is Emacs related to this? > But in my simple gtk program, What program? > I just get ctrl+65507(keyval) in key release event. This is the release of Ctrl (when Alt is no longer pressed). If you release Alt before Ctrl, you should get this event. If you release Ctrl first, the Alt flag will be set too in the Ctrl-release event because Alt is still held. Do you mean this is the *only* key release event you receive? > How to make it work? Thanks. In *my* simple Gtk+ program, it works normally. Pressing Ctrl, pressing Alt, pressing l (Ctrl-Alt-a is taken by my window manager), releasing l, releasing Alt, releasing Ctrl prints: press: keyval=ffe3 state=0x0000 press: keyval=ffe9 state=0x0004 press: keyval=006c state=0x000c release: keyval=006c state=0x000c release: keyval=ffe9 state=0x000c release: keyval=ffe3 state=0x0004 This is what xev prints, too. Of course, since the modifier state is the state when the event occurred, you can get various combinations of states in the l-release event depending on the order of key releases. But in all cases user's actions are faithfully reprorted. Yeti -- http://gwyddion.net/ ===================================================================== #include <gtk/gtk.h> static gboolean key_event(G_GNUC_UNUSED GtkWidget *widget, GdkEventKey *event) { g_printerr("%s: keyval=%04x state=0x%04x\n", event->type == GDK_KEY_PRESS ? "press" : "release", event->keyval, event->state); return FALSE; } int main(int argc, char *argv[]) { GtkWidget *window, *view; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 320, 240); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); view = gtk_text_view_new(); g_signal_connect(view, "key-press-event", G_CALLBACK(key_event), NULL); g_signal_connect(view, "key-release-event", G_CALLBACK(key_event), NULL); gtk_container_add(GTK_CONTAINER(window), view); gtk_widget_show_all(window); gtk_main(); return 0; } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list