diff --git a/papersurfer/papersurfer.py b/papersurfer/papersurfer.py
index 4db8226bf77d3983c9aafb2891a8ebce9cc6ec41..8c4c7c9709a66700da3761e1dcace17ffa4af32b 100644
--- a/papersurfer/papersurfer.py
+++ b/papersurfer/papersurfer.py
@@ -275,10 +275,15 @@ class Papersurfer:
 
         urwid.connect_signal(ask, 'change', self.onchange)
         self.main = pile
-        self.mainloop = urwid.MainLoop(self._over, self._palette)
+        self.mainloop = urwid.MainLoop(self._over, self._palette,
+                                       unhandled_input=self.h_input )
         self.mainloop.set_alarm_in(.1, self.load_list)
         self.mainloop.run()
 
+    def h_input(self, key):
+        if key == "esc":
+            raise urwid.ExitMainLoop()
+
     def load_list(self, _loop, _data):
         body = [self.list_item(paper) for paper in self.mtm.retrieve()]
         self.listcontent.clear()