| Server IP : 103.88.176.108 / Your IP : 216.73.216.82 Web Server : Apache/2.4.41 (Ubuntu) System : Linux webserver 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /snap/core24/current/usr/lib/python3.12/ |
Upload File : |
"""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