コード例 #1
0
ファイル: term_posix.go プロジェクト: kildevaeld/projects
// 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))
}
コード例 #2
0
ファイル: term_posix.go プロジェクト: kildevaeld/projects
func (t *Term) setSpeed(baud int) error {
	var a attr
	if err := termios.Tcgetattr(uintptr(t.fd), (*syscall.Termios)(&a)); err != nil {
		return err
	}
	a.setSpeed(baud)
	return termios.Tcsetattr(uintptr(t.fd), termios.TCSANOW, (*syscall.Termios)(&a))
}
コード例 #3
0
ファイル: term_posix.go プロジェクト: pkg/term
func (t *Term) setReadTimeout(d time.Duration) error {
	var a attr
	if err := termios.Tcgetattr(uintptr(t.fd), (*syscall.Termios)(&a)); err != nil {
		return err
	}
	a.Cc[syscall.VMIN], a.Cc[syscall.VTIME] = timeoutVals(d)
	return termios.Tcsetattr(uintptr(t.fd), termios.TCSANOW, (*syscall.Termios)(&a))
}
コード例 #4
0
ファイル: raw.go プロジェクト: pcfdev-forks/houdini
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))
}
コード例 #5
0
ファイル: term.go プロジェクト: chzyer/temux
func (p *Pty) Copy(o *os.File) (err error) {
	var attr syscall.Termios
	if err = termios.Tcgetattr(o.Fd(), &attr); err != nil {
		return err
	}
	w, h, err := GetSize(o.Fd())
	if err != nil {
		return err
	}

	if err = SetSize(p.tty.Fd(), w, h); err != nil {
		return err
	}

	err = termios.Tcsetattr(p.tty.Fd(), termios.TCSADRAIN, &attr)
	if err != nil {
		return err
	}
	return nil
}
コード例 #6
0
ファイル: term_posix.go プロジェクト: pkg/term
func (t *Term) setFlowControl(kind int) error {
	var a attr
	if err := termios.Tcgetattr(uintptr(t.fd), (*syscall.Termios)(&a)); err != nil {
		return err
	}
	switch kind {
	case NONE:
		a.Iflag &^= termios.IXON | termios.IXOFF | termios.IXANY
		a.Cflag &^= termios.CRTSCTS

	case XONXOFF:
		a.Cflag &^= termios.CRTSCTS
		a.Iflag |= termios.IXON | termios.IXOFF | termios.IXANY

	case HARDWARE:
		a.Iflag &^= termios.IXON | termios.IXOFF | termios.IXANY
		a.Cflag |= termios.CRTSCTS
	}
	return termios.Tcsetattr(uintptr(t.fd), termios.TCSANOW, (*syscall.Termios)(&a))
}
コード例 #7
0
ファイル: term_posix.go プロジェクト: kildevaeld/projects
// Restore restores the state of the terminal captured at the point that
// the terminal was originally opened.
func (t *Term) Restore() error {
	return termios.Tcsetattr(uintptr(t.fd), termios.TCIOFLUSH, &t.orig)
}
コード例 #8
0
ファイル: keybind_unix.go プロジェクト: k0kubun/go-keybind
func setTerm(term syscall.Termios) {
	if err := termios.Tcsetattr(uintptr(syscall.Stdin), termios.TCSAFLUSH, &term); err != nil {
		panic(err)
	}
}
コード例 #9
0
ファイル: demo.go プロジェクト: jaguilar/vt100
func tcsetattr(fd uintptr, t syscall.Termios) error {
	if err := termios.Tcsetattr(fd, termios.TCSAFLUSH, &t); err != nil {
		return fmt.Errorf("tcsetattr: %v", err)
	}
	return nil
}