+static int
+on_key_press_event (GtkWidget *widget,
+ GdkEventKey *key,
+ void *user_data)
+{
+ scherzo_t *scherzo = user_data;
+
+ switch (key->keyval) {
+ case GDK_KEY_plus:
+ case GDK_KEY_KP_Add:
+ case GDK_KEY_equal:
+ case GDK_KEY_KP_Equal:
+ scherzo->staff_height += 4;
+ gtk_widget_queue_draw (widget);
+ return TRUE;
+ break;
+ case GDK_KEY_minus:
+ case GDK_KEY_KP_Subtract:
+ scherzo->staff_height -= 4;
+ gtk_widget_queue_draw (widget);
+ return TRUE;
+ break;
+ case GDK_KEY_q:
+ case GDK_KEY_Q:
+ case GDK_KEY_Escape:
+ gtk_main_quit ();
+ return FALSE;
+ }
+
+ /* Allow the event to propagate to other handlers. */
+ return FALSE;
+}
+