问题
What signals/functions should I use to get keyboard input in GTK+3?
I have looked around and the only tutorials I know of that cover GTK+3 (zetcode and gnome developer) don't seem to cover that.
Anyone can point me in the right direction?
回答1:
Thanks xing for your advice, It was really helpful. I was lost, hence my question that is perhaps too general to escape the traditional downvoting of part of the C community. I will summarize here how to handle keyboard events in GTK3, which I hope will be useful since I cannot find it put together anywhere else.
Imagine you are using GTK+3 and you want your application to do something when you press the space key. This is how you do it:
-First enable the #GDK_KEY_PRESS_MASK mask for your Gdk.Window:
gtk_widget_add_events(window, GDK_KEY_PRESS_MASK);
-Then you connect the window with the keyboard_press() function:
g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (my_keypress_function), NULL);
-Define your keyboard_press() to something once the space key has been pressed:
gboolean my_keypress_function (GtkWidget *widget, GdkEventKey *event, gpointer data) {
if (event->keyval == GDK_KEY_space){
printf("SPACE KEY PRESSED!")
return TRUE;
}
return FALSE;
}
回答2:
it's g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (on_key_press), NULL);
来源:https://stackoverflow.com/questions/44098084/how-do-i-handle-keyboard-events-in-gtk3