<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def listen(self):
 """Blocking call on widgets. """

        while self._listen:
            key = u''
            key = self.term.inkey(timeout=0.2)
            try:
                if key.code == KEY_ENTER:
                    self.on_enter(key=key)
                elif key.code in (KEY_DOWN, KEY_UP):
                    self.on_key_arrow(key=key)
                elif key.code == KEY_ESCAPE or key == chr(3):
                    self.on_exit(key=key)
                elif key != '':
                    self.on_key(key=key)
            except KeyboardInterrupt:
                self.on_exit(key=key)