code: def text_input(self, window, allow_resize=False):
          
  
          window.clear()
  
          # Set cursor mode to 1 because 2 doesn't display on some terminals
          self.curs_set(1)
  
          # Keep insert_mode off to avoid the recursion error described here
          # http://bugs.python.org/issue13051
          textbox = textpad.Textbox(window)
          textbox.stripspaces = 0
  
          def validate(ch):
              "Filters characters for special key sequences"
              if ch == self.ESCAPE:
                  raise exceptions.EscapeInterrupt()
              if (not allow_resize) and (ch == curses.KEY_RESIZE):
                  raise exceptions.EscapeInterrupt()
              # Fix backspace for iterm
              if ch == curses.ascii.DEL:
                  ch = curses.KEY_BACKSPACE
              return ch
  
          # Wrapping in an exception block so that we can distinguish when the
          # user hits the return character from when the user tries to back out
          # of the input.
          try:
              out = textbox.edit(validate=validate)
              if isinstance(out, six.binary_type):
                  out = out.decode('utf-8')
          except exceptions.EscapeInterrupt:
              out = None
  
          self.curs_set(0)
          return self.strip_textpad(out)
docs: Transform a window into a text box that will accept user input and loop
          until an escape sequence is entered.
  
          If the escape key (27) is pressed, cancel the textbox and return None.
          Otherwise, the textbox will wait until it is full (^j, or a new line is
          entered on the bottom line) or the BEL key (^g) is pressed.