user7948550
user7948550

Reputation:

In GTK3, how do I get a DrawingArea to respond keyboard events?

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

Answers (2)

user7948550
user7948550

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

Fabel
Fabel

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

Related Questions