| 1234567891011121314151617181920212223242526272829 |
- // +build !windows
- package term
- import (
- "syscall"
- "github.com/pkg/term/termios"
- "golang.org/x/sys/unix"
- )
- // 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.Cflag |= syscall.CS8 // Set to 8-bit wide. Typical value for displaying characters.
- n.Cc[syscall.VMIN] = 1
- n.Cc[syscall.VTIME] = 0
- return termios.Tcsetattr(uintptr(fd), termios.TCSANOW, (*unix.Termios)(&n))
- }
|