Reputation:
In GTK3, how do I get a DrawingArea to respond keyboard events? Should I connect the DrawingArea with a signal or is it more compicated? I'm using GTK3 with the C language.
Upvotes: 1
Views: 610
Reputation:
I fianlly found the solution here. I only connected the signal, but the GTK_CAN_FOCUS also need to be set for the drawingrea.
Upvotes: 2
Reputation: 1761
First you need to enable key presses (and possibly also key releases) in the event mask:
gtk_widget_add_events(my_drawing_area,
GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
Then you can connect to the signal(s):
g_signal_connect(my_drawing_area,"key-press-event",
my_key_press,my_user_data);
g_signal_connect(my_drawing_area,"key-release-event",
my_key_release,my_user_data);
And define some callback functions like this:
gboolean my_key_press(GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
return FALSE;
}
gboolean my_key_release(GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
return FALSE;
}
See documentation for GtkWidget, GObject Signals and GdkEvent for more information.
Upvotes: 0