FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[Original HTTPS Page]
cpython/Lib/tty.py at main · python/cpython · GitHub
python
cpython
Repository navigation
Code
Issues
5k+
(5k+)
Pull requests
2.5k
(2.5k)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Lib
/
tty.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
73 lines (60 loc) · 1.99 KB
Breadcrumbs
cpython
/
Lib
/
tty.py
Copy path
File metadata and controls
73 lines (60 loc) · 1.99 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""Terminal utilities."""
# Author: Steen Lumholt.
from
termios
import
*
__all__
=
[
"cfmakeraw"
,
"cfmakecbreak"
,
"setraw"
,
"setcbreak"
]
# Indices for termios list.
IFLAG
=
0
OFLAG
=
1
CFLAG
=
2
LFLAG
=
3
ISPEED
=
4
OSPEED
=
5
CC
=
6
def
cfmakeraw
(
mode
):
"""Make termios mode raw."""
# Clear all POSIX.1-2017 input mode flags.
# See chapter 11 "General Terminal Interface"
# of POSIX.1-2017 Base Definitions.
mode
[
IFLAG
]
&=
~
(
IGNBRK
|
BRKINT
|
IGNPAR
|
PARMRK
|
INPCK
|
ISTRIP
|
INLCR
|
IGNCR
|
ICRNL
|
IXON
|
IXANY
|
IXOFF
)
# Do not post-process output.
mode
[
OFLAG
]
&=
~
OPOST
# Disable parity generation and detection; clear character size mask;
# let character size be 8 bits.
mode
[
CFLAG
]
&=
~
(
PARENB
|
CSIZE
)
mode
[
CFLAG
]
|=
CS8
# Clear all POSIX.1-2017 local mode flags.
mode
[
LFLAG
]
&=
~
(
ECHO
|
ECHOE
|
ECHOK
|
ECHONL
|
ICANON
|
IEXTEN
|
ISIG
|
NOFLSH
|
TOSTOP
)
# POSIX.1-2017, 11.1.7 Non-Canonical Mode Input Processing,
# Case B: MIN>0, TIME=0
# A pending read shall block until MIN (here 1) bytes are received,
# or a signal is received.
mode
[
CC
]
=
list
(
mode
[
CC
])
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
def
cfmakecbreak
(
mode
):
"""Make termios mode cbreak."""
# Do not echo characters; disable canonical input.
mode
[
LFLAG
]
&=
~
(
ECHO
|
ICANON
)
# POSIX.1-2017, 11.1.7 Non-Canonical Mode Input Processing,
# Case B: MIN>0, TIME=0
# A pending read shall block until MIN (here 1) bytes are received,
# or a signal is received.
mode
[
CC
]
=
list
(
mode
[
CC
])
mode
[
CC
][
VMIN
]
=
1
mode
[
CC
][
VTIME
]
=
0
def
setraw
(
fd
,
when
=
TCSAFLUSH
):
"""Put terminal into raw mode."""
mode
=
tcgetattr
(
fd
)
new
=
list
(
mode
)
cfmakeraw
(
new
)
tcsetattr
(
fd
,
when
,
new
)
return
mode
def
setcbreak
(
fd
,
when
=
TCSAFLUSH
):
"""Put terminal into cbreak mode."""
mode
=
tcgetattr
(
fd
)
new
=
list
(
mode
)
cfmakecbreak
(
new
)
tcsetattr
(
fd
,
when
,
new
)
return
mode
Back
|
FazBrowse Home
|
New Git URL