本文整理匯總了Python中termios.OPOST屬性的典型用法代碼示例。如果您正苦於以下問題:Python termios.OPOST屬性的具體用法?Python termios.OPOST怎麽用?Python termios.OPOST使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類termios
的用法示例。
在下文中一共展示了termios.OPOST屬性的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: init
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def init():
fd = sys.stdin.fileno()
# save old state
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
attrs_save = termios.tcgetattr(fd)
# make raw - the way to do this comes from the termios(3) man page.
attrs = list(attrs_save) # copy the stored version to update
# iflag
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK
| termios.ISTRIP | termios.INLCR | termios. IGNCR
| termios.ICRNL | termios.IXON )
# oflag
attrs[1] &= ~termios.OPOST
# cflag
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
attrs[2] |= termios.CS8
# lflag
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
| termios.ISIG | termios.IEXTEN)
termios.tcsetattr(fd, termios.TCSANOW, attrs)
# turn off non-blocking
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
# read a single keystroke
return (flags_save, attrs_save)
示例2: prepare_tty
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def prepare_tty():
"set the terminal in char mode (return each keyboard press at once) and"\
" switch off echoing of this input; return the original settings"
stdin_fd = sys.stdin.fileno() # will most likely be 0 ;->
old_stdin_config = termios.tcgetattr(stdin_fd)
[ iflag, oflag, cflag, lflag, ispeed, ospeed, cc ] = \
termios.tcgetattr(stdin_fd)
cc[termios.VTIME] = 1
cc[termios.VMIN] = 1
iflag = iflag & ~(termios.IGNBRK |
termios.BRKINT |
termios.PARMRK |
termios.ISTRIP |
termios.INLCR |
termios.IGNCR |
#termios.ICRNL |
termios.IXON)
# oflag = oflag & ~termios.OPOST
cflag = cflag | termios.CS8
lflag = lflag & ~(termios.ECHO |
termios.ECHONL |
termios.ICANON |
# termios.ISIG |
termios.IEXTEN)
termios.tcsetattr(stdin_fd, termios.TCSANOW,
[ iflag, oflag, cflag, lflag, ispeed, ospeed, cc ])
return (stdin_fd, old_stdin_config)
示例3: __enter__
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def __enter__(self) -> 'Pty':
self.r, self.w = openpty()
# tty flags normally change \n to \r\n
attrs = termios.tcgetattr(self.r)
assert isinstance(attrs[1], int)
attrs[1] &= ~(termios.ONLCR | termios.OPOST)
termios.tcsetattr(self.r, termios.TCSANOW, attrs)
return self
示例4: pty_normalize_newlines
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def pty_normalize_newlines(fd):
r"""
Twiddle the tty flags such that \n won't get munged to \r\n.
Details:
https://docs.python.org/2/library/termios.html
http://ftp.gnu.org/old-gnu/Manuals/glibc-2.2.3/html_chapter/libc_17.html#SEC362
"""
import termios as T
attrs = T.tcgetattr(fd)
attrs[1] &= ~(T.ONLCR | T.OPOST)
T.tcsetattr(fd, T.TCSANOW, attrs)
示例5: ttyflags
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def ttyflags(fd):
"""normalize tty i/o for testing"""
# see:
# http://www.gnu.org/software/libc/manual/html_mono/libc.html#Output-Modes
attrs = termios.tcgetattr(fd)
attrs[1] &= ~termios.OPOST # don't munge output
attrs[3] &= ~termios.ECHO # don't echo input
termios.tcsetattr(fd, termios.TCSANOW, attrs)
示例6: get_instruction_key
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def get_instruction_key(self):
"""Waits for a single keypress on stdin.
This is a silly function to call if you need to do it a lot because it has
to store stdin's current setup, setup stdin for reading single keystrokes
then read the single keystroke then revert stdin back after reading the
keystroke.
Returns the character of the key that was pressed (zero on
KeyboardInterrupt which can happen when a signal gets handled)
This method is licensed under cc by-sa 3.0
Thanks to mheyman http://stackoverflow.com/questions/983354/how-do-i-make-python-to-wait-for-a-pressed-key\
"""
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
# save old state
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
attrs_save = termios.tcgetattr(fd)
# make raw - the way to do this comes from the termios(3) man page.
attrs = list(attrs_save) # copy the stored version to update
# iflag
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK
| termios.ISTRIP | termios.INLCR | termios. IGNCR
| termios.ICRNL | termios.IXON )
# oflag
attrs[1] &= ~termios.OPOST
# cflag
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
attrs[2] |= termios.CS8
# lflag
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
| termios.ISIG | termios.IEXTEN)
termios.tcsetattr(fd, termios.TCSANOW, attrs)
# turn off non-blocking
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
# read a single keystroke
try:
ret = sys.stdin.read(1) # returns a single character
except KeyboardInterrupt:
ret = 0
finally:
# restore old state
termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
return ret
示例7: __init__
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def __init__(self, printer, prot, iomanager):
self.printer = printer
self.prot = prot
self.iomanager = iomanager
(master_fd, slave_fd) = os.openpty()
slave = os.ttyname(slave_fd)
master_flags = fcntl.fcntl(master_fd, fcntl.F_GETFL, 0)
fcntl.fcntl(master_fd, fcntl.F_SETFL, master_flags | os.O_NONBLOCK)
# switch to "raw" mode - these constants come from the manpage for termios under cfmakeraw()
master_attr = termios.tcgetattr(master_fd)
master_attr[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK | termios.ISTRIP
| termios.INLCR | termios.IGNCR | termios.ICRNL | termios.IXON)
master_attr[1] &= ~termios.OPOST
master_attr[2] &= ~(termios.CSIZE | termios.PARENB)
master_attr[3] &= ~(termios.ECHO | termios.ECHONL | termios.ICANON | termios.ISIG
| termios.IEXTEN)
master_attr[3] |= termios.CS8
termios.tcsetattr(master_fd, termios.TCSADRAIN, master_attr)
# Fun detail: master will always show as /dev/ptmx, but the kernel knows from
# the fd which PTY we're using. This means we have to use master_fd instead
# of opening master by name.
logging.info("Opened PTY for {} and got {}".format(prot, os.ttyname(slave_fd)))
self.pipe_link = "/dev/" + prot + "_1"
try:
os.unlink(self.pipe_link)
except OSError as e:
# file not found is fine to ignore - anythine else and we should log it
if e.errno != errno.ENOENT:
logging.error("Failed to unlink '{}': {}".format(self.pipe_link, e.strerror))
logging.info("linking {}".format(self.pipe_link))
os.symlink(slave, self.pipe_link)
os.chmod(self.pipe_link, 0o666)
logging.info("{} Pipe open. Use '{}' to communicate with it".format(self.prot, self.pipe_link))
self.rd = os.fdopen(master_fd, "r")
self.wr = os.fdopen(master_fd, "w")
self.send_response = True
self.iomanager.add_file(self.rd, self.get_message)
示例8: read_single_keypress
# 需要導入模塊: import termios [as 別名]
# 或者: from termios import OPOST [as 別名]
def read_single_keypress():
"""Waits for a single keypress on stdin.
https://stackoverflow.com/a/6599441/1497443
This is a silly function to call if you need to do it a lot because it has
to store stdin's current setup, setup stdin for reading single keystrokes
then read the single keystroke then revert stdin back after reading the
keystroke.
Returns the character of the key that was pressed (zero on
KeyboardInterrupt which can happen when a signal gets handled)
"""
if fcntl is None or termios is None:
raise ValueError('termios and/or fcntl packages are not available in your system. This is possible because you are not on a Linux Distro.')
fd = sys.stdin.fileno()
# save old state
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
attrs_save = termios.tcgetattr(fd)
# make raw - the way to do this comes from the termios(3) man page.
attrs = list(attrs_save) # copy the stored version to update
# iflag
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK |
termios.ISTRIP | termios.INLCR | termios.IGNCR |
termios.ICRNL | termios.IXON)
# oflag
attrs[1] &= ~termios.OPOST
# cflag
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
attrs[2] |= termios.CS8
# lflag
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON |
termios.ISIG | termios.IEXTEN)
termios.tcsetattr(fd, termios.TCSANOW, attrs)
# turn off non-blocking
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
# read a single keystroke
try:
ret = sys.stdin.read(1) # returns a single character
except KeyboardInterrupt:
ret = 0
finally:
# restore old state
termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
return ret