package termios
import (
- "fmt";
"os";
"syscall";
"unsafe"
// termios types
type cc_t byte
-type speed_t uint
-type tcflag_t uint
+type speed_t uint32
+type tcflag_t uint32
// termios constants
const (
if r1 != 0 {
// return errors.New("Error")
}
-
return nil
}
}
if r1 != 0 {
- return errors.New ("Error")
+ return errors.New ("Error during ioctl tcsets syscall")
}
-
- return nil
-}
-
-func tty_raw () error {
- raw := orig_termios;
-
- raw.c_iflag &= ^(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
- raw.c_oflag &= ^(OPOST);
- raw.c_cflag |= (CS8);
- raw.c_lflag &= ^(ECHO | ICANON | IEXTEN | ISIG);
-
- raw.c_cc[VMIN] = 1;
- raw.c_cc[VTIME] = 0;
-
- if err := setTermios (&raw); err != nil { return err }
-
return nil
}
-func SetRaw () {
- var (
- err error
- )
+func SetRaw () (error) {
+ if err := getTermios (&orig_termios); err != nil { return err}
- defer func () {
- if err != nil { fmt.Printf ("SetRaw Error: %v\n",err) }
- } ();
+ orig_termios.c_iflag &= ^(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
+ orig_termios.c_oflag &= ^(OPOST);
+ orig_termios.c_cflag |= (CS8);
+ orig_termios.c_lflag &= ^(ECHO | ICANON | IEXTEN | ISIG);
- if err = getTermios (&orig_termios); err != nil { return }
+ orig_termios.c_cc[VMIN] = 1;
+ orig_termios.c_cc[VTIME] = 0;
-// defer func () {
-// err = setTermios (&orig_termios)
-// } ();
-
- if err = tty_raw (); err != nil { return }
- //if err = screenio (); err != nil { return }
+ return setTermios(&orig_termios)
}
-func SetSpeed (speed speed_t) {
- var err error
-
- defer func () {
- if err != nil { fmt.Printf ("SetSpeed Error: %v\n",err) }
- } ();
-
- if err = getTermios (&orig_termios); err != nil { return }
+func SetSpeed (speed speed_t) (error) {
+ if err := getTermios (&orig_termios); err != nil { return err }
orig_termios.c_ispeed = speed
orig_termios.c_ospeed = speed
- err = setTermios (&orig_termios)
+ return setTermios(&orig_termios)
}