本文整理汇总了Python中termios.TCSADRAIN属性的典型用法代码示例。如果您正苦于以下问题:Python termios.TCSADRAIN属性的具体用法?Python termios.TCSADRAIN怎么用?Python termios.TCSADRAIN使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类termios
的用法示例。
在下文中一共展示了termios.TCSADRAIN属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: raw_terminal
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def raw_terminal():
if not isatty(sys.stdin):
f = open('/dev/tty')
fd = f.fileno()
else:
fd = sys.stdin.fileno()
f = None
try:
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
yield fd
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
sys.stdout.flush()
if f is not None:
f.close()
except termios.error:
pass
示例2: getchar
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def getchar(echo):
if not isatty(sys.stdin):
f = open('/dev/tty')
fd = f.fileno()
else:
fd = sys.stdin.fileno()
f = None
try:
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = os.read(fd, 32)
if echo and isatty(sys.stdout):
sys.stdout.write(ch)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
sys.stdout.flush()
if f is not None:
f.close()
except termios.error:
pass
_translate_ch_to_exc(ch)
return ch.decode(get_best_encoding(sys.stdin), 'replace')
示例3: read_char_no_blocking
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def read_char_no_blocking():
''' Read a character in nonblocking mode, if no characters are present in the buffer, return an empty string '''
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
old_flags = fcntl.fcntl(fd, fcntl.F_GETFL)
try:
tty.setraw(fd, termios.TCSADRAIN)
fcntl.fcntl(fd, fcntl.F_SETFL, old_flags | os.O_NONBLOCK)
return sys.stdin.read(1)
except IOError as e:
ErrorNumber = e[0]
# IOError with ErrorNumber 11(35 in Mac) is thrown when there is nothing to read(Resource temporarily unavailable)
if (sys.platform.startswith("linux") and ErrorNumber != 11) or (sys.platform == "darwin" and ErrorNumber != 35):
raise
return ""
finally:
fcntl.fcntl(fd, fcntl.F_SETFL, old_flags)
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
示例4: restore_echo
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def restore_echo():
"""Hack for https://stackoverflow.com/questions/6488275 equivalent
issue with Nmap (from
http://stackoverflow.com/a/8758047/3223422)
"""
try:
fdesc = sys.stdin.fileno()
except ValueError:
return
try:
attrs = termios.tcgetattr(fdesc)
except termios.error:
return
attrs[3] = attrs[3] | termios.ECHO
termios.tcsetattr(fdesc, termios.TCSADRAIN, attrs)
示例5: __init__
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def __init__(self, verbosity, maxJobs):
super().__init__(verbosity)
self.__index = 1
self.__maxJobs = maxJobs
self.__jobs = {}
self.__slots = [None] * maxJobs
self.__tasksDone = 0
self.__tasksNum = 1
# disable cursor
print("\x1b[?25l")
# disable echo
try:
import termios
fd = sys.stdin.fileno()
self.__oldTcAttr = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSADRAIN, new)
except ImportError:
pass
示例6: raw_terminal
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def raw_terminal():
if not isatty(sys.stdin):
f = open("/dev/tty")
fd = f.fileno()
else:
fd = sys.stdin.fileno()
f = None
try:
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
yield fd
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
sys.stdout.flush()
if f is not None:
f.close()
except termios.error:
pass
示例7: __call__
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def __call__(self):
import sys, tty, termios
from select import select
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
# [ Wait until ready for reading,
# wait until ready for writing
# wait for an "exception condition" ]
# The below line times out after 1 second
# This can be changed to a floating-point value if necessary
[i, o, e] = select([sys.stdin.fileno()], [], [], 1)
if i:
ch = sys.stdin.read(1)
else:
ch = None
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
示例8: getch
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def getch(prompt=None):
"""Reads a single character from stdin.
Args:
prompt (optional): prompt that is presented to user.
Returns:
The single character that was read.
"""
if prompt:
sys.stdout.write(prompt)
sys.stdout.flush()
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
示例9: __call__
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def __call__(self):
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
示例10: getchar
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def getchar():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
示例11: make_terminal_unbuffered
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def make_terminal_unbuffered():
# Based on https://stackoverflow.com/questions/21791621/taking-input-from-sys-stdin-non-blocking
# pylint:disable=global-statement
global OLD_TERMINAL_SETTINGS
OLD_TERMINAL_SETTINGS = termios.tcgetattr(sys.stdin)
new_settings = termios.tcgetattr(sys.stdin)
new_settings[3] = new_settings[3] & ~(termios.ECHO | termios.ICANON)
new_settings[6][termios.VMIN] = 0
new_settings[6][termios.VTIME] = 0
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, new_settings)
示例12: restore_terminal
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def restore_terminal():
# pylint:disable=global-statement
global OLD_TERMINAL_SETTINGS
if OLD_TERMINAL_SETTINGS:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, OLD_TERMINAL_SETTINGS)
OLD_TERMINAL_SETTINGS = None
示例13: _find_getch
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def _find_getch():
try:
import termios
except ImportError:
# Non-POSIX. Return msvcrt's (Windows') getch.
import msvcrt
return msvcrt.getch
# POSIX system. Create and return a getch that manipulates the tty.
import sys, tty
def _getch():
fd = sys.stdin.fileno()
old_settings = None
try:
old_settings = termios.tcgetattr(fd)
tty.setraw(fd)
except termios.error:
pass
try:
ch = sys.stdin.read(1)
finally:
if old_settings is not None:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
return _getch
示例14: read_ch
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def read_ch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
示例15: readchar
# 需要导入模块: import termios [as 别名]
# 或者: from termios import TCSADRAIN [as 别名]
def readchar():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
if ch == '0x03':
raise KeyboardInterrupt
return ch