アレ
f.10 が GTK+ のメニューに乗っ取られているのは gtksetting.c:gtk_settings_class_init() でそういうアクセラレータが登録されているからなのであった。
result = settings_install_property_parser (class, g_param_spec_string ("gtk-menu-bar-accel", P_("Menu bar accelerator"), P_("Keybinding to activate the menu bar"), "F10", G_PARAM_READWRITE), NULL);
とりあえず "F10" を他の適当なキーに書き換えてみたら、f.10 キーの GDK_KEY_PRESS イベントは自 widget の key_press_event ハンドラまで到達する様になった。
/* GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); */ gchar *accel; /* ここでメニューやら他の widget を作成している */ g_object_get(gtk_widget_get_settings(window), "gtk-menu-bar-accel", &accel, NULL); if (accel) { /* とりあえず Menu キーに変更してみる */ g_object_set(gtk_widget_get_settings(window), "gtk-menu-bar-accel", "Menu", NULL); g_free(accel); }
GDK_F10 で grep してみても見つからない筈だよ…。