xref: /aosp_15_r20/prebuilts/build-tools/common/py3-stdlib/tty.py (revision cda5da8d549138a6648c5ee6d7a49cf8f4a657be)
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