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