--- /dev/null
+# Stubs for termios\r
+\r
+from typing import IO, List, Union\r
+\r
+_FD = Union[int, IO[str]]\r
+_Attr = List[Union[int, List[bytes]]]\r
+\r
+# TODO constants not really documented\r
+B0 = ... # type: int\r
+B1000000 = ... # type: int\r
+B110 = ... # type: int\r
+B115200 = ... # type: int\r
+B1152000 = ... # type: int\r
+B1200 = ... # type: int\r
+B134 = ... # type: int\r
+B150 = ... # type: int\r
+B1500000 = ... # type: int\r
+B1800 = ... # type: int\r
+B19200 = ... # type: int\r
+B200 = ... # type: int\r
+B2000000 = ... # type: int\r
+B230400 = ... # type: int\r
+B2400 = ... # type: int\r
+B2500000 = ... # type: int\r
+B300 = ... # type: int\r
+B3000000 = ... # type: int\r
+B3500000 = ... # type: int\r
+B38400 = ... # type: int\r
+B4000000 = ... # type: int\r
+B460800 = ... # type: int\r
+B4800 = ... # type: int\r
+B50 = ... # type: int\r
+B500000 = ... # type: int\r
+B57600 = ... # type: int\r
+B576000 = ... # type: int\r
+B600 = ... # type: int\r
+B75 = ... # type: int\r
+B921600 = ... # type: int\r
+B9600 = ... # type: int\r
+BRKINT = ... # type: int\r
+BS0 = ... # type: int\r
+BS1 = ... # type: int\r
+BSDLY = ... # type: int\r
+CBAUD = ... # type: int\r
+CBAUDEX = ... # type: int\r
+CDSUSP = ... # type: int\r
+CEOF = ... # type: int\r
+CEOL = ... # type: int\r
+CEOT = ... # type: int\r
+CERASE = ... # type: int\r
+CFLUSH = ... # type: int\r
+CIBAUD = ... # type: int\r
+CINTR = ... # type: int\r
+CKILL = ... # type: int\r
+CLNEXT = ... # type: int\r
+CLOCAL = ... # type: int\r
+CQUIT = ... # type: int\r
+CR0 = ... # type: int\r
+CR1 = ... # type: int\r
+CR2 = ... # type: int\r
+CR3 = ... # type: int\r
+CRDLY = ... # type: int\r
+CREAD = ... # type: int\r
+CRPRNT = ... # type: int\r
+CRTSCTS = ... # type: int\r
+CS5 = ... # type: int\r
+CS6 = ... # type: int\r
+CS7 = ... # type: int\r
+CS8 = ... # type: int\r
+CSIZE = ... # type: int\r
+CSTART = ... # type: int\r
+CSTOP = ... # type: int\r
+CSTOPB = ... # type: int\r
+CSUSP = ... # type: int\r
+CWERASE = ... # type: int\r
+ECHO = ... # type: int\r
+ECHOCTL = ... # type: int\r
+ECHOE = ... # type: int\r
+ECHOK = ... # type: int\r
+ECHOKE = ... # type: int\r
+ECHONL = ... # type: int\r
+ECHOPRT = ... # type: int\r
+EXTA = ... # type: int\r
+EXTB = ... # type: int\r
+FF0 = ... # type: int\r
+FF1 = ... # type: int\r
+FFDLY = ... # type: int\r
+FIOASYNC = ... # type: int\r
+FIOCLEX = ... # type: int\r
+FIONBIO = ... # type: int\r
+FIONCLEX = ... # type: int\r
+FIONREAD = ... # type: int\r
+FLUSHO = ... # type: int\r
+HUPCL = ... # type: int\r
+ICANON = ... # type: int\r
+ICRNL = ... # type: int\r
+IEXTEN = ... # type: int\r
+IGNBRK = ... # type: int\r
+IGNCR = ... # type: int\r
+IGNPAR = ... # type: int\r
+IMAXBEL = ... # type: int\r
+INLCR = ... # type: int\r
+INPCK = ... # type: int\r
+IOCSIZE_MASK = ... # type: int\r
+IOCSIZE_SHIFT = ... # type: int\r
+ISIG = ... # type: int\r
+ISTRIP = ... # type: int\r
+IUCLC = ... # type: int\r
+IXANY = ... # type: int\r
+IXOFF = ... # type: int\r
+IXON = ... # type: int\r
+NCC = ... # type: int\r
+NCCS = ... # type: int\r
+NL0 = ... # type: int\r
+NL1 = ... # type: int\r
+NLDLY = ... # type: int\r
+NOFLSH = ... # type: int\r
+N_MOUSE = ... # type: int\r
+N_PPP = ... # type: int\r
+N_SLIP = ... # type: int\r
+N_STRIP = ... # type: int\r
+N_TTY = ... # type: int\r
+OCRNL = ... # type: int\r
+OFDEL = ... # type: int\r
+OFILL = ... # type: int\r
+OLCUC = ... # type: int\r
+ONLCR = ... # type: int\r
+ONLRET = ... # type: int\r
+ONOCR = ... # type: int\r
+OPOST = ... # type: int\r
+PARENB = ... # type: int\r
+PARMRK = ... # type: int\r
+PARODD = ... # type: int\r
+PENDIN = ... # type: int\r
+TAB0 = ... # type: int\r
+TAB1 = ... # type: int\r
+TAB2 = ... # type: int\r
+TAB3 = ... # type: int\r
+TABDLY = ... # type: int\r
+TCFLSH = ... # type: int\r
+TCGETA = ... # type: int\r
+TCGETS = ... # type: int\r
+TCIFLUSH = ... # type: int\r
+TCIOFF = ... # type: int\r
+TCIOFLUSH = ... # type: int\r
+TCION = ... # type: int\r
+TCOFLUSH = ... # type: int\r
+TCOOFF = ... # type: int\r
+TCOON = ... # type: int\r
+TCSADRAIN = ... # type: int\r
+TCSAFLUSH = ... # type: int\r
+TCSANOW = ... # type: int\r
+TCSBRK = ... # type: int\r
+TCSBRKP = ... # type: int\r
+TCSETA = ... # type: int\r
+TCSETAF = ... # type: int\r
+TCSETAW = ... # type: int\r
+TCSETS = ... # type: int\r
+TCSETSF = ... # type: int\r
+TCSETSW = ... # type: int\r
+TCXONC = ... # type: int\r
+TIOCCONS = ... # type: int\r
+TIOCEXCL = ... # type: int\r
+TIOCGETD = ... # type: int\r
+TIOCGICOUNT = ... # type: int\r
+TIOCGLCKTRMIOS = ... # type: int\r
+TIOCGPGRP = ... # type: int\r
+TIOCGSERIAL = ... # type: int\r
+TIOCGSOFTCAR = ... # type: int\r
+TIOCGWINSZ = ... # type: int\r
+TIOCINQ = ... # type: int\r
+TIOCLINUX = ... # type: int\r
+TIOCMBIC = ... # type: int\r
+TIOCMBIS = ... # type: int\r
+TIOCMGET = ... # type: int\r
+TIOCMIWAIT = ... # type: int\r
+TIOCMSET = ... # type: int\r
+TIOCM_CAR = ... # type: int\r
+TIOCM_CD = ... # type: int\r
+TIOCM_CTS = ... # type: int\r
+TIOCM_DSR = ... # type: int\r
+TIOCM_DTR = ... # type: int\r
+TIOCM_LE = ... # type: int\r
+TIOCM_RI = ... # type: int\r
+TIOCM_RNG = ... # type: int\r
+TIOCM_RTS = ... # type: int\r
+TIOCM_SR = ... # type: int\r
+TIOCM_ST = ... # type: int\r
+TIOCNOTTY = ... # type: int\r
+TIOCNXCL = ... # type: int\r
+TIOCOUTQ = ... # type: int\r
+TIOCPKT = ... # type: int\r
+TIOCPKT_DATA = ... # type: int\r
+TIOCPKT_DOSTOP = ... # type: int\r
+TIOCPKT_FLUSHREAD = ... # type: int\r
+TIOCPKT_FLUSHWRITE = ... # type: int\r
+TIOCPKT_NOSTOP = ... # type: int\r
+TIOCPKT_START = ... # type: int\r
+TIOCPKT_STOP = ... # type: int\r
+TIOCSCTTY = ... # type: int\r
+TIOCSERCONFIG = ... # type: int\r
+TIOCSERGETLSR = ... # type: int\r
+TIOCSERGETMULTI = ... # type: int\r
+TIOCSERGSTRUCT = ... # type: int\r
+TIOCSERGWILD = ... # type: int\r
+TIOCSERSETMULTI = ... # type: int\r
+TIOCSERSWILD = ... # type: int\r
+TIOCSER_TEMT = ... # type: int\r
+TIOCSETD = ... # type: int\r
+TIOCSLCKTRMIOS = ... # type: int\r
+TIOCSPGRP = ... # type: int\r
+TIOCSSERIAL = ... # type: int\r
+TIOCSSOFTCAR = ... # type: int\r
+TIOCSTI = ... # type: int\r
+TIOCSWINSZ = ... # type: int\r
+TOSTOP = ... # type: int\r
+VDISCARD = ... # type: int\r
+VEOF = ... # type: int\r
+VEOL = ... # type: int\r
+VEOL2 = ... # type: int\r
+VERASE = ... # type: int\r
+VINTR = ... # type: int\r
+VKILL = ... # type: int\r
+VLNEXT = ... # type: int\r
+VMIN = ... # type: int\r
+VQUIT = ... # type: int\r
+VREPRINT = ... # type: int\r
+VSTART = ... # type: int\r
+VSTOP = ... # type: int\r
+VSUSP = ... # type: int\r
+VSWTC = ... # type: int\r
+VSWTCH = ... # type: int\r
+VT0 = ... # type: int\r
+VT1 = ... # type: int\r
+VTDLY = ... # type: int\r
+VTIME = ... # type: int\r
+VWERASE = ... # type: int\r
+XCASE = ... # type: int\r
+XTABS = ... # type: int\r
+\r
+def tcgetattr(fd: _FD) -> _Attr: ...\r
+def tcsetattr(fd: _FD, when: int, attributes: _Attr) -> None: ...\r
+def tcsendbreak(fd: _FD, duration: int) -> None: ...\r
+def tcdrain(fd: _FD) -> None: ...\r
+def tcflush(fd: _FD, queue: int) -> None: ...\r
+def tcflow(fd: _FD, action: int) -> None: ...\r