diff --git a/tty_protocol_writer.cpp b/tty_protocol_writer.cpp index 72caf1a..f7e5c43 100644 --- a/tty_protocol_writer.cpp +++ b/tty_protocol_writer.cpp @@ -99,6 +99,37 @@ void set_fd_raw(int fd) { throw std::runtime_error(io_error("Cannot read tty attributes for", std::to_string(fd))); } ::cfmakeraw(&tio); + tio.c_cc[VINTR] = _POSIX_VDISABLE; + tio.c_cc[VQUIT] = _POSIX_VDISABLE; + tio.c_cc[VERASE] = _POSIX_VDISABLE; + tio.c_cc[VKILL] = _POSIX_VDISABLE; + tio.c_cc[VEOF] = _POSIX_VDISABLE; + tio.c_cc[VTIME] = 0; + tio.c_cc[VMIN] = 1; +#ifdef VSWTC + tio.c_cc[VSWTC] = _POSIX_VDISABLE; +#endif + tio.c_cc[VSTART] = _POSIX_VDISABLE; + tio.c_cc[VSTOP] = _POSIX_VDISABLE; + tio.c_cc[VSUSP] = _POSIX_VDISABLE; +#ifdef VEOL + tio.c_cc[VEOL] = _POSIX_VDISABLE; +#endif +#ifdef VREPRINT + tio.c_cc[VREPRINT] = _POSIX_VDISABLE; +#endif +#ifdef VDISCARD + tio.c_cc[VDISCARD] = _POSIX_VDISABLE; +#endif +#ifdef VWERASE + tio.c_cc[VWERASE] = _POSIX_VDISABLE; +#endif +#ifdef VLNEXT + tio.c_cc[VLNEXT] = _POSIX_VDISABLE; +#endif +#ifdef VEOL2 + tio.c_cc[VEOL2] = _POSIX_VDISABLE; +#endif if (::tcsetattr(fd, TCSANOW, &tio) != 0) { throw std::runtime_error(io_error("Cannot apply raw tty attributes to", std::to_string(fd))); }