code: func NewTerminfoScreen() (Screen, error) {
  	ti, e := terminfo.LookupTerminfo(os.Getenv("TERM"))
  	if e != nil {
  		return nil, e
  	}
  	t := &tScreen{ti: ti}
  
  	t.keyexist = make(map[Key]bool)
  	t.keycodes = make(map[string]*tKeyCode)
  	if len(ti.Mouse) > 0 {
  		t.mouse = []byte(ti.Mouse)
  	}
  	t.prepareKeys()
  	t.buildAcsMap()
  	t.sigwinch = make(chan os.Signal, 10)
  	t.fallback = make(map[rune]string)
  	for k, v := range RuneFallbacks {
  		t.fallback[k] = v
  	}
  
  	return t, nil
  }
docs: // NewTerminfoScreen returns a Screen that uses the stock TTY interface
  // and POSIX termios, combined with a terminfo description taken from
  // the $TERM environment variable.  It returns an error if the terminal
  // is not supported for any reason.
  //
  // For terminals that do not support dynamic resize events, the $LINES
  // $COLUMNS environment variables can be set to the actual window size,
  // otherwise defaults taken from the terminal database are used.