It is not exactly what you would guess. There are two reasons a widget can't get keypresses. Widgets without windows don't get many of the events by default. But a drawing area does have a window so this isn't the problem. Keypresses only go to windows which have focus. Focus can be gotten by tabbing to the window or by setting Gtk::Widget::grab_focus(). In order for this to happen the can focus flag must be set in widget. Since a drawing area is a primitive widget which may or may not be focusable, it is up to the user to call Gtk::Widget::set_flags(GTK_CAN_FOCUS) in their constructor.