Python termios.IEXTEN Examples
The following are 10
code examples of termios.IEXTEN().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
termios
, or try the search function
.
Example #1
Source File: input_kbd.py From DeepPicar-v2 with GNU General Public License v2.0 | 6 votes |
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)
Example #2
Source File: workarounds.py From accelerator with Apache License 2.0 | 5 votes |
def __init__(self, signal_names=['SIGINFO'], key_values=[20], skip_input_if_possible=True): """signal_names is a list of signal names, which will be listened for if they exist. key_values is a list of (terminal input) key values, each will be considered equivalent of a signal if pressed. If skip_input_if_possible is True no input will be read if all signals exist. No differentiation is made between the signals.""" self.key_values = set(key_values) self.restore = {} self.signal_set = False self.clean = False self.use_input = False all_sigs = True atexit.register(self.cleanup) for name in signal_names: sig = getattr(signal, name, None) if sig is not None: old = signal.signal(sig, self.signal_arrived) self.restore[sig] = old signal.siginterrupt(sig, False) else: all_sigs = False if all_sigs and skip_input_if_possible: return self.tc_original = termios.tcgetattr(0) tc_changed = list(self.tc_original) tc_changed[3] &= ~(termios.ICANON | termios.IEXTEN) self.use_input = True termios.tcsetattr(0, termios.TCSADRAIN, tc_changed)
Example #3
Source File: recipe-580680.py From code with MIT License | 5 votes |
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)
Example #4
Source File: vt100.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _patch_lflag(cls, attrs): return attrs & ~(termios.ECHO | termios.ICANON | termios.IEXTEN | termios.ISIG)
Example #5
Source File: vt100.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _patch_lflag(cls, attrs): return attrs | (termios.ECHO | termios.ICANON | termios.IEXTEN | termios.ISIG)
Example #6
Source File: vt100_input.py From android_universal with MIT License | 5 votes |
def _patch_lflag(cls, attrs): return attrs & ~(termios.ECHO | termios.ICANON | termios.IEXTEN | termios.ISIG)
Example #7
Source File: vt100_input.py From android_universal with MIT License | 5 votes |
def _patch_lflag(cls, attrs): return attrs | (termios.ECHO | termios.ICANON | termios.IEXTEN | termios.ISIG)
Example #8
Source File: cli.py From simdem with MIT License | 4 votes |
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
Example #9
Source File: Pipe.py From redeem with GNU General Public License v3.0 | 4 votes |
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)
Example #10
Source File: misc.py From fast-autocomplete with MIT License | 4 votes |
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