1"""Terminal utilities.""" 2 3# Author: Steen Lumholt. 4 5from termios import * 6 7__all__ = ["setraw", "setcbreak"] 8 9# Indexes for termios list. 10IFLAG = 0 11OFLAG = 1 12CFLAG = 2 13LFLAG = 3 14ISPEED = 4 15OSPEED = 5 16CC = 6 17 18def setraw(fd, when=TCSAFLUSH): 19 """Put terminal into a raw mode.""" 20 mode = tcgetattr(fd) 21 mode[IFLAG] = mode[IFLAG] & ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON) 22 mode[OFLAG] = mode[OFLAG] & ~(OPOST) 23 mode[CFLAG] = mode[CFLAG] & ~(CSIZE | PARENB) 24 mode[CFLAG] = mode[CFLAG] | CS8 25 mode[LFLAG] = mode[LFLAG] & ~(ECHO | ICANON | IEXTEN | ISIG) 26 mode[CC][VMIN] = 1 27 mode[CC][VTIME] = 0 28 tcsetattr(fd, when, mode) 29 30def setcbreak(fd, when=TCSAFLUSH): 31 """Put terminal into a cbreak mode.""" 32 mode = tcgetattr(fd) 33 mode[LFLAG] = mode[LFLAG] & ~(ECHO | ICANON) 34 mode[CC][VMIN] = 1 35 mode[CC][VTIME] = 0 36 tcsetattr(fd, when, mode) 37