27 lines
637 B
Go
27 lines
637 B
Go
|
// +build !windows
|
||
|
|
||
|
package term
|
||
|
|
||
|
import (
|
||
|
"syscall"
|
||
|
|
||
|
"github.com/pkg/term/termios"
|
||
|
)
|
||
|
|
||
|
// SetRaw put terminal into a raw mode
|
||
|
func SetRaw(fd int) error {
|
||
|
n, err := getOriginalTermios(fd)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
n.Iflag &^= syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK |
|
||
|
syscall.ISTRIP | syscall.INLCR | syscall.IGNCR |
|
||
|
syscall.ICRNL | syscall.IXON
|
||
|
n.Lflag &^= syscall.ECHO | syscall.ICANON | syscall.IEXTEN | syscall.ISIG | syscall.ECHONL
|
||
|
n.Cflag &^= syscall.CSIZE | syscall.PARENB
|
||
|
n.Cc[syscall.VMIN] = 1
|
||
|
n.Cc[syscall.VTIME] = 0
|
||
|
return termios.Tcsetattr(uintptr(fd), termios.TCSANOW, (*syscall.Termios)(&n))
|
||
|
}
|