diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index f60cc2deaf87717561ecb0a6ae92630465888d73..bc89d83343781535e1f7735886b1d017217d30b4 100644
--- a/sflphone-gtk/src/actions.c
+++ b/sflphone-gtk/src/actions.c
@@ -263,7 +263,6 @@ sflphone_keypad( guint keyval, gchar * key)
         process_dialing(c, keyval, key);
         break;
       case CALL_STATE_CURRENT:
-      case CALL_STATE_RINGING:
       case CALL_STATE_BUSY:
       case CALL_STATE_FAILURE:
         switch (keyval)
@@ -313,6 +312,14 @@ sflphone_keypad( guint keyval, gchar * key)
           break;
         }
         break;
+      case CALL_STATE_RINGING:
+        switch (keyval)
+        {
+        case 65307: /* ESCAPE */
+          dbus_hang_up(c);
+          break;
+        }
+        break;
       default:
         break;
      }