diff --git a/eek/eek-gtk-keyboard.c b/eek/eek-gtk-keyboard.c
index aec4c4d4..175a7f16 100644
--- a/eek/eek-gtk-keyboard.c
+++ b/eek/eek-gtk-keyboard.c
@@ -492,9 +492,9 @@ on_button_event (GtkWidget      *widget,
                  GdkEventButton *event,
                  gpointer        user_data)
 {
-    EekGtkKeyboard *keyboard = EEK_GTK_KEYBOARD(user_data), *key;
+    EekGtkKeyboard *keyboard = EEK_GTK_KEYBOARD(user_data);
     EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
-    EekBounds bounds;
+    EekKey *key;
     gdouble x, y;
 
     x = (gdouble)event->x / priv->scale;
@@ -503,7 +503,7 @@ on_button_event (GtkWidget      *widget,
     if (key)
         switch (event->type) {
         case GDK_BUTTON_PRESS:
-            press_key (EEK_GTK_KEYBOARD(keyboard), EEK_KEY(key));
+            press_key (EEK_GTK_KEYBOARD(keyboard), key);
             return TRUE;
         case GDK_BUTTON_RELEASE:
             release_key (EEK_GTK_KEYBOARD(keyboard));
diff --git a/eek/eek-keyboard.c b/eek/eek-keyboard.c
index 5cef6069..2ade076e 100644
--- a/eek/eek-keyboard.c
+++ b/eek/eek-keyboard.c
@@ -514,13 +514,15 @@ eek_keyboard_find_section_by_position (EekKeyboard *keyboard,
 {
     EekBounds bounds;
     EekPoint point;
+    EekElement *element;
 
     eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
     point.x = x - bounds.x;
     point.y = y - bounds.y;
-    return eek_container_find (EEK_CONTAINER(keyboard),
-                               compare_section_by_position,
-                               &point);
+    element = eek_container_find (EEK_CONTAINER(keyboard),
+                                  compare_section_by_position,
+                                  &point);
+    return EEK_SECTION(element);
 }
 
 EekKey *
diff --git a/eek/eek-types.c b/eek/eek-types.c
index 46db453a..183b95c0 100644
--- a/eek/eek-types.c
+++ b/eek/eek-types.c
@@ -85,7 +85,6 @@ eek_point_get_type (void)
 void
 eek_point_rotate (EekPoint *point, gint angle)
 {
-    EekPoint *p;
     gdouble r, phi;
 
     phi = atan2 (point->y, point->x);
diff --git a/src/eekboard.c b/src/eekboard.c
index 18c2cd3d..3b7ec39a 100644
--- a/src/eekboard.c
+++ b/src/eekboard.c
@@ -97,6 +97,7 @@ struct _Eekboard {
     XklEngine *engine;
     XklConfigRegistry *registry;
     GtkUIManager *ui_manager;
+    gulong on_key_pressed_id, on_key_released_id;
 
     guint countries_merge_id;
     GtkActionGroup *countries_action_group;
@@ -152,9 +153,6 @@ static void       on_about          (GtkAction       *action,
                                      GtkWidget       *window);
 static void       on_quit           (GtkAction *      action,
                                      GtkWidget       *window);
-static void       on_monitor_key_event_toggled
-                                    (GtkToggleAction *action,
-                                     GtkWidget       *window);
 static void       eekboard_free     (Eekboard        *eekboard);
 static GtkWidget *create_widget     (Eekboard        *eekboard,
                                      gint             initial_width,
@@ -174,7 +172,6 @@ static const char ui_description[] =
     "      "
     "    "
     "