Python curses.has_key() Examples
The following are 9
code examples of curses.has_key().
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
curses
, or try the search function
.
Example #1
Source File: telnetsrvlib.py From hontel with MIT License | 6 votes |
def setterm(self, term): "Set the curses structures for this terminal" log.debug("Setting termtype to %s" % (term, )) curses.setupterm(term) # This will raise if the termtype is not supported self.TERM = term self.ESCSEQ = {} for k in self.KEYS.keys(): str = curses.tigetstr(curses.has_key._capability_names[k]) if str: self.ESCSEQ[str] = k # Create a copy to prevent altering the class self.CODES = self.CODES.copy() self.CODES['DEOL'] = curses.tigetstr('el') self.CODES['DEL'] = curses.tigetstr('dch1') self.CODES['INS'] = curses.tigetstr('ich1') self.CODES['CSRLEFT'] = curses.tigetstr('cub1') self.CODES['CSRRIGHT'] = curses.tigetstr('cuf1')
Example #2
Source File: telnetsrvlib.py From hontel with MIT License | 6 votes |
def sendcommand(self, cmd, opt=None): "Send a telnet command (IAC)" if cmd in [DO, DONT]: if not self.DOOPTS.has_key(opt): self.DOOPTS[opt] = None if (((cmd == DO) and (self.DOOPTS[opt] != True)) or ((cmd == DONT) and (self.DOOPTS[opt] != False))): self.DOOPTS[opt] = (cmd == DO) self.writecooked(IAC + cmd + opt) elif cmd in [WILL, WONT]: if not self.WILLOPTS.has_key(opt): self.WILLOPTS[opt] = '' if (((cmd == WILL) and (self.WILLOPTS[opt] != True)) or ((cmd == WONT) and (self.WILLOPTS[opt] != False))): self.WILLOPTS[opt] = (cmd == WILL) self.writecooked(IAC + cmd + opt) else: self.writecooked(IAC + cmd)
Example #3
Source File: test_keyboard.py From deepWordBug with Apache License 2.0 | 5 votes |
def test_get_keyboard_sequence(monkeypatch): "Test keyboard.get_keyboard_sequence. " import curses.has_key import blessed.keyboard (KEY_SMALL, KEY_LARGE, KEY_MIXIN) = range(3) (CAP_SMALL, CAP_LARGE) = 'cap-small cap-large'.split() (SEQ_SMALL, SEQ_LARGE, SEQ_MIXIN, SEQ_ALT_CUF1, SEQ_ALT_CUB1) = ( b'seq-small-a', b'seq-large-abcdefg', b'seq-mixin', b'seq-alt-cuf1', b'seq-alt-cub1_') # patch curses functions monkeypatch.setattr(curses, 'tigetstr', lambda cap: {CAP_SMALL: SEQ_SMALL, CAP_LARGE: SEQ_LARGE}[cap]) monkeypatch.setattr(curses.has_key, '_capability_names', dict(((KEY_SMALL, CAP_SMALL,), (KEY_LARGE, CAP_LARGE,)))) # patch global sequence mix-in monkeypatch.setattr(blessed.keyboard, 'DEFAULT_SEQUENCE_MIXIN', ( (SEQ_MIXIN.decode('latin1'), KEY_MIXIN),)) # patch for _alternative_left_right term = mock.Mock() term._cuf1 = SEQ_ALT_CUF1.decode('latin1') term._cub1 = SEQ_ALT_CUB1.decode('latin1') keymap = blessed.keyboard.get_keyboard_sequences(term) assert list(keymap.items()) == [ (SEQ_LARGE.decode('latin1'), KEY_LARGE), (SEQ_ALT_CUB1.decode('latin1'), curses.KEY_LEFT), (SEQ_ALT_CUF1.decode('latin1'), curses.KEY_RIGHT), (SEQ_SMALL.decode('latin1'), KEY_SMALL), (SEQ_MIXIN.decode('latin1'), KEY_MIXIN)]
Example #4
Source File: telnetsrvlib.py From hontel with MIT License | 5 votes |
def options_handler(self, sock, cmd, opt): "Negotiate options" if cmd == NOP: self.sendcommand(NOP) elif cmd == WILL or cmd == WONT: if self.WILLACK.has_key(opt): self.sendcommand(self.WILLACK[opt], opt) else: self.sendcommand(DONT, opt) if cmd == WILL and opt == TTYPE: self.writecooked(IAC + SB + TTYPE + SEND + IAC + SE) elif cmd == DO or cmd == DONT: if self.DOACK.has_key(opt): self.sendcommand(self.DOACK[opt], opt) else: self.sendcommand(WONT, opt) if opt == ECHO: self.DOECHO = (cmd == DO) elif cmd == SE: subreq = self.read_sb_data() if subreq[0] == TTYPE and subreq[1] == IS: try: self.setterm(subreq[2:]) except: log.debug("Terminal type not known") elif subreq[0] == NAWS: self.setnaws(subreq[1:]) elif cmd == SB: pass else: log.debug("Unhandled option: %s %s" % (cmdtxt, opttxt, ))
Example #5
Source File: telnetsrvlib.py From hontel with MIT License | 5 votes |
def handle(self): "The actual service to which the user has connected." if self.TELNET_ISSUE: self.writeline(self.TELNET_ISSUE) if not self.authentication_ok(): return if self.DOECHO: self.writeline(self.WELCOME) self.session_start() while self.RUNSHELL: raw_input = self.readline(prompt=self.PROMPT).strip() self.input = self.input_reader(self, raw_input) self.raw_input = self.input.raw if self.input.cmd: cmd = self.input.cmd.upper() params = self.input.params if self.COMMANDS.has_key(cmd): try: self.COMMANDS[cmd](params) except: log.exception('Error calling %s.' % cmd) (t, p, tb) = sys.exc_info() if self.handleException(t, p, tb): break else: self.writeerror("Unknown command '%s'" % cmd) log.debug("Exiting handler") # vim: set syntax=python ai showmatch:
Example #6
Source File: test_keyboard.py From MARA_Framework with GNU Lesser General Public License v3.0 | 5 votes |
def test_get_keyboard_sequence(monkeypatch): "Test keyboard.get_keyboard_sequence. " import curses.has_key import blessed.keyboard (KEY_SMALL, KEY_LARGE, KEY_MIXIN) = range(3) (CAP_SMALL, CAP_LARGE) = 'cap-small cap-large'.split() (SEQ_SMALL, SEQ_LARGE, SEQ_MIXIN, SEQ_ALT_CUF1, SEQ_ALT_CUB1) = ( b'seq-small-a', b'seq-large-abcdefg', b'seq-mixin', b'seq-alt-cuf1', b'seq-alt-cub1_') # patch curses functions monkeypatch.setattr(curses, 'tigetstr', lambda cap: {CAP_SMALL: SEQ_SMALL, CAP_LARGE: SEQ_LARGE}[cap]) monkeypatch.setattr(curses.has_key, '_capability_names', dict(((KEY_SMALL, CAP_SMALL,), (KEY_LARGE, CAP_LARGE,)))) # patch global sequence mix-in monkeypatch.setattr(blessed.keyboard, 'DEFAULT_SEQUENCE_MIXIN', ( (SEQ_MIXIN.decode('latin1'), KEY_MIXIN),)) # patch for _alternative_left_right term = mock.Mock() term._cuf1 = SEQ_ALT_CUF1.decode('latin1') term._cub1 = SEQ_ALT_CUB1.decode('latin1') keymap = blessed.keyboard.get_keyboard_sequences(term) assert keymap.items() == [ (SEQ_LARGE.decode('latin1'), KEY_LARGE), (SEQ_ALT_CUB1.decode('latin1'), curses.KEY_LEFT), (SEQ_ALT_CUF1.decode('latin1'), curses.KEY_RIGHT), (SEQ_SMALL.decode('latin1'), KEY_SMALL), (SEQ_MIXIN.decode('latin1'), KEY_MIXIN)]
Example #7
Source File: keyboard.py From MARA_Framework with GNU Lesser General Public License v3.0 | 5 votes |
def get_keyboard_sequences(term): """get_keyboard_sequences(T) -> (OrderedDict) Initialize and return a keyboard map and sequence lookup table, (sequence, constant) from blessed Terminal instance ``term``, where ``sequence`` is a multibyte input sequence, such as u'\x1b[D', and ``constant`` is a constant, such as term.KEY_LEFT. The return value is an OrderedDict instance, with their keys sorted longest-first. """ # A small gem from curses.has_key that makes this all possible, # _capability_names: a lookup table of terminal capability names for # keyboard sequences (fe. kcub1, key_left), keyed by the values of # constants found beginning with KEY_ in the main curses module # (such as KEY_LEFT). # # latin1 encoding is used so that bytes in 8-bit range of 127-255 # have equivalent chr() and unichr() values, so that the sequence # of a kermit or avatar terminal, for example, remains unchanged # in its byte sequence values even when represented by unicode. # capability_names = curses.has_key._capability_names sequence_map = dict(( (seq.decode('latin1'), val) for (seq, val) in ( (curses.tigetstr(cap), val) for (val, cap) in capability_names.iteritems() ) if seq ) if term.does_styling else ()) sequence_map.update(_alternative_left_right(term)) sequence_map.update(DEFAULT_SEQUENCE_MIXIN) # This is for fast lookup matching of sequences, preferring # full-length sequence such as ('\x1b[D', KEY_LEFT) # over simple sequences such as ('\x1b', KEY_EXIT). return OrderedDict(( (seq, sequence_map[seq]) for seq in sorted( sequence_map, key=len, reverse=True)))
Example #8
Source File: keyboard.py From deepWordBug with Apache License 2.0 | 4 votes |
def get_keyboard_sequences(term): r""" Return mapping of keyboard sequences paired by keycodes. :arg blessed.Terminal term: :class:`~.Terminal` instance. :returns: mapping of keyboard unicode sequences paired by keycodes as integer. This is used as the argument ``mapper`` to the supporting function :func:`resolve_sequence`. :rtype: OrderedDict Initialize and return a keyboard map and sequence lookup table, (sequence, keycode) from :class:`~.Terminal` instance ``term``, where ``sequence`` is a multibyte input sequence of unicode characters, such as ``u'\x1b[D'``, and ``keycode`` is an integer value, matching curses constant such as term.KEY_LEFT. The return value is an OrderedDict instance, with their keys sorted longest-first. """ # A small gem from curses.has_key that makes this all possible, # _capability_names: a lookup table of terminal capability names for # keyboard sequences (fe. kcub1, key_left), keyed by the values of # constants found beginning with KEY_ in the main curses module # (such as KEY_LEFT). # # latin1 encoding is used so that bytes in 8-bit range of 127-255 # have equivalent chr() and unichr() values, so that the sequence # of a kermit or avatar terminal, for example, remains unchanged # in its byte sequence values even when represented by unicode. # capability_names = curses.has_key._capability_names sequence_map = dict(( (seq.decode('latin1'), val) for (seq, val) in ( (curses.tigetstr(cap), val) for (val, cap) in capability_names.items() ) if seq ) if term.does_styling else ()) sequence_map.update(_alternative_left_right(term)) sequence_map.update(DEFAULT_SEQUENCE_MIXIN) # This is for fast lookup matching of sequences, preferring # full-length sequence such as ('\x1b[D', KEY_LEFT) # over simple sequences such as ('\x1b', KEY_EXIT). return OrderedDict(( (seq, sequence_map[seq]) for seq in sorted( sequence_map.keys(), key=len, reverse=True)))
Example #9
Source File: telnetsrvlib.py From hontel with MIT License | 4 votes |
def cmdHELP(self, params): """[<command>] Display help Display either brief help on all commands, or detailed help on a single command passed as a parameter. """ if params: cmd = params[0].upper() if self.COMMANDS.has_key(cmd): method = self.COMMANDS[cmd] doc = method.__doc__.split("\n") docp = doc[0].strip() docl = '\n'.join( [l.strip() for l in doc[2:]] ) if not docl.strip(): # If there isn't anything here, use line 1 docl = doc[1].strip() self.writeline( "%s %s\n\n%s" % ( cmd, docp, docl, ) ) return else: self.writeline("Command '%s' not known" % cmd) else: self.writeline("Help on built in commands\n") keys = self.COMMANDS.keys() keys.sort() for cmd in keys: method = self.COMMANDS[cmd] if getattr(method, 'hidden', False): continue if method.__doc__ == None: self.writeline("no help for command %s" % method) return doc = method.__doc__.split("\n") docp = doc[0].strip() docs = doc[1].strip() if len(docp) > 0: docps = "%s - %s" % (docp, docs, ) else: docps = "- %s" % (docs, ) self.writeline( "%s %s" % ( cmd, docps, ) )