Home | History | Annotate | Download | only in Lib
      1 """Terminal utilities."""
      2 
      3 # Author: Steen Lumholt.
      4 
      5 from termios import *
      6 
      7 __all__ = ["setraw", "setcbreak"]
      8 
      9 # Indexes for termios list.
     10 IFLAG = 0
     11 OFLAG = 1
     12 CFLAG = 2
     13 LFLAG = 3
     14 ISPEED = 4
     15 OSPEED = 5
     16 CC = 6
     17 
     18 def 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 
     30 def 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