docs: def unbuffered_input(self):
          '''Context manager for setting the terminal to use unbuffered input.
  
          Normally, your terminal will collect together a user's input
          keystrokes and deliver them to you in one neat parcel when they hit
          the return/enter key. In a real-time interactive application we instead
          want to receive each keystroke as it happens.
  
          This context manager achieves that by setting 'cbreak' mode on the
          the output tty stream. cbreak is a mode inbetween 'cooked mode', where
          all the user's input is preprocessed, and 'raw mode' where none of it
          is. Basically, in cbreak mode input like :kbd:`Control-c` will still
          interrupt (i.e. 'break') the process, hence the name. Wikipedia is your
          friend on this one!
  
          :meth:`Root.run` uses this context manager for you to make your
          application work in the correct way.
          '''
          if self.is_a_tty:
              orig_tty_attrs = termios.tcgetattr(self.stream)
              tty.setcbreak(self.stream)
              try:
                  yield
              finally:
                  termios.tcsetattr(
                      self.stream, termios.TCSADRAIN, orig_tty_attrs)
          else:
              yield