diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index 35fe31041d..be0f25d7a2 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -374,7 +374,8 @@ GtkCanvas::GtkCanvas () { /* these are the events we want to know about */ add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | - Gdk::SCROLL_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK); + Gdk::SCROLL_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | + Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK); } void @@ -814,6 +815,28 @@ GtkCanvas::on_scroll_event (GdkEventScroll* ev) return deliver_event (reinterpret_cast(©)); } +/** Handler for GDK key press events. + * @param ev Event. + * @return true if the event was handled. + */ +bool +GtkCanvas::on_key_press_event (GdkEventKey* ev) +{ + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, "canvas key press\n"); + return deliver_event (reinterpret_cast(ev)); +} + +/** Handler for GDK key release events. + * @param ev Event. + * @return true if the event was handled. + */ +bool +GtkCanvas::on_key_release_event (GdkEventKey* ev) +{ + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, "canvas key release\n"); + return deliver_event (reinterpret_cast(ev)); +} + /** Handler for GDK button press events. * @param ev Event. * @return true if the event was handled. diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h index a764e6ee8a..26cf850d03 100644 --- a/libs/canvas/canvas/canvas.h +++ b/libs/canvas/canvas/canvas.h @@ -195,6 +195,8 @@ protected: void on_size_allocate (Gtk::Allocation&); bool on_scroll_event (GdkEventScroll *); bool on_expose_event (GdkEventExpose *); + bool on_key_press_event (GdkEventKey *); + bool on_key_release_event (GdkEventKey *); bool on_button_press_event (GdkEventButton *); bool on_button_release_event (GdkEventButton* event); bool on_motion_notify_event (GdkEventMotion *);