# Generated by h2py from /usr/include/termios.h
VEOF = 0
VEOL = 1
VEOL2 = 2
VERASE = 3
VWERASE = 4
VKILL = 5
VREPRINT = 6
VINTR = 8
VQUIT = 9
VSUSP = 10
VDSUSP = 11
VSTART = 12
VSTOP = 13
VLNEXT = 14
VDISCARD = 15
VMIN = 16
VTIME = 17
VSTATUS = 18
NCCS = 20
_POSIX_VDISABLE = 0xff
IGNBRK = 0x00000001
BRKINT = 0x00000002
IGNPAR = 0x00000004
PARMRK = 0x00000008
INPCK = 0x00000010
ISTRIP = 0x00000020
INLCR = 0x00000040
IGNCR = 0x00000080
ICRNL = 0x00000100
IXON = 0x00000200
IXOFF = 0x00000400
IXANY = 0x00000800
IMAXBEL = 0x00002000
OPOST = 0x00000001
ONLCR = 0x00000002
OXTABS = 0x00000004
ONOEOT = 0x00000008
CIGNORE = 0x00000001
CSIZE = 0x00000300
CS5 = 0x00000000
CS6 = 0x00000100
CS7 = 0x00000200
CS8 = 0x00000300
CSTOPB = 0x00000400
CREAD = 0x00000800
PARENB = 0x00001000
PARODD = 0x00002000
HUPCL = 0x00004000
CLOCAL = 0x00008000
CCTS_OFLOW = 0x00010000
CRTS_IFLOW = 0x00020000
CDTR_IFLOW = 0x00040000
CDSR_OFLOW = 0x00080000
CCAR_OFLOW = 0x00100000
MDMBUF = 0x00100000
ECHOKE = 0x00000001
ECHOE = 0x00000002
ECHOK = 0x00000004
ECHO = 0x00000008
ECHONL = 0x00000010
ECHOPRT = 0x00000020
ECHOCTL = 0x00000040
ISIG = 0x00000080
ICANON = 0x00000100
ALTWERASE = 0x00000200
IEXTEN = 0x00000400
EXTPROC = 0x00000800
TOSTOP = 0x00400000
FLUSHO = 0x00800000
NOKERNINFO = 0x02000000
PENDIN = 0x20000000
NOFLSH = 0x80000000
TCSANOW = 0
TCSADRAIN = 1
TCSAFLUSH = 2
TCSASOFT = 0x10
B0 = 0
B50 = 50
B75 = 75
B110 = 110
B134 = 134
B150 = 150
B200 = 200
B300 = 300
B600 = 600
B1200 = 1200
B1800 = 1800
B2400 = 2400
B4800 = 4800
B9600 = 9600
B19200 = 19200
B38400 = 38400
B7200 = 7200
B14400 = 14400
B28800 = 28800
B57600 = 57600
B76800 = 76800
B115200 = 115200
B230400 = 230400
EXTA = 19200
EXTB = 38400
TCIFLUSH = 1
TCOFLUSH = 2
TCIOFLUSH = 3
TCOOFF = 1
TCOON = 2
TCIOFF = 3
TCION = 4

# Included from sys/cdefs.h
def __P(protos): return protos		 

def __STRING(x): return #x		 

def __XSTRING(x): return __STRING(x)	 

def __P(protos): return ()		 

def __STRING(x): return "x"

def __RCSID(s): return __IDSTRING(rcsid,s)

def __RCSID_SOURCE(s): return __IDSTRING(rcsid_source,s)

def __COPYRIGHT(s): return __IDSTRING(copyright,s)


# Included from sys/ttycom.h

# Included from sys/ioccom.h
IOCPARM_MASK = 0x1fff
def IOCPARM_LEN(x): return (((x) >> 16) & IOCPARM_MASK)

def IOCBASECMD(x): return ((x) & ~(IOCPARM_MASK << 16))

def IOCGROUP(x): return (((x) >> 8) & 0xff)

IOC_VOID = 0x20000000
IOC_OUT = 0x40000000
IOC_IN = 0x80000000
IOC_INOUT = (IOC_IN|IOC_OUT)
IOC_DIRMASK = 0xe0000000
TIOCM_LE = 0001
TIOCM_DTR = 0002
TIOCM_RTS = 0004
TIOCM_ST = 0010
TIOCM_SR = 0020
TIOCM_CTS = 0040
TIOCM_CAR = 0100
TIOCM_CD = TIOCM_CAR
TIOCM_RNG = 0200
TIOCM_RI = TIOCM_RNG
TIOCM_DSR = 0400
TIOCPKT_DATA = 0x00
TIOCPKT_FLUSHREAD = 0x01
TIOCPKT_FLUSHWRITE = 0x02
TIOCPKT_STOP = 0x04
TIOCPKT_START = 0x08
TIOCPKT_NOSTOP = 0x10
TIOCPKT_DOSTOP = 0x20
TIOCPKT_IOCTL = 0x40
def UIOCCMD(n): return _IO(ord('u'), n)	 

TTYDISC = 0
TABLDISC = 3
SLIPDISC = 4
PPPDISC = 5

# Included from sys/ttydefaults.h
TTYDEF_IFLAG = (BRKINT	| ICRNL	| IMAXBEL | IXON | IXANY)
TTYDEF_OFLAG = (OPOST | ONLCR)
TTYDEF_LFLAG = (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL)
TTYDEF_CFLAG = (CREAD | CS8 | HUPCL)
TTYDEF_SPEED = (B9600)
def CTRL(x): return (x&037)

CEOF = CTRL(ord('d'))
CEOL = 0xff
CERASE = 0177
CINTR = CTRL(ord('c'))
CSTATUS = CTRL(ord('t'))
CKILL = CTRL(ord('u'))
CMIN = 1
CQUIT = 034
CSUSP = CTRL(ord('z'))
CTIME = 0
CDSUSP = CTRL(ord('y'))
CSTART = CTRL(ord('q'))
CSTOP = CTRL(ord('s'))
CLNEXT = CTRL(ord('v'))
CDISCARD = CTRL(ord('o'))
CWERASE = CTRL(ord('w'))
CREPRINT = CTRL(ord('r'))
CEOT = CEOF
CBRK = CEOL
CRPRNT = CREPRINT
CFLUSH = CDISCARD
