// RawMode places the terminal into raw mode. func RawMode(t *Term) error { var a attr if err := termios.Tcgetattr(uintptr(t.fd), (*syscall.Termios)(&a)); err != nil { return err } termios.Cfmakeraw((*syscall.Termios)(&a)) return termios.Tcsetattr(uintptr(t.fd), termios.TCSANOW, (*syscall.Termios)(&a)) }
func SetRaw(tty *os.File) error { var attr syscall.Termios err := termios.Tcgetattr(uintptr(tty.Fd()), (*syscall.Termios)(&attr)) if err != nil { return err } termios.Cfmakeraw((*syscall.Termios)(&attr)) return termios.Tcsetattr(uintptr(tty.Fd()), termios.TCSANOW, (*syscall.Termios)(&attr)) }
func makeRaw(fd uintptr) (syscall.Termios, error) { orig, err := tcgetattr(fd) if err != nil { return orig, err } t := orig termios.Cfmakeraw(&t) if err := tcsetattr(fd, t); err != nil { return orig, err } return orig, nil }