本文整理汇总了Python中curses.has_key方法的典型用法代码示例。如果您正苦于以下问题:Python curses.has_key方法的具体用法?Python curses.has_key怎么用?Python curses.has_key使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类curses
的用法示例。
在下文中一共展示了curses.has_key方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setterm
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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')
示例2: sendcommand
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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)
示例3: test_get_keyboard_sequence
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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)]
示例4: options_handler
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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, ))
示例5: handle
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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:
示例6: test_get_keyboard_sequence
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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)]
示例7: get_keyboard_sequences
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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)))
示例8: get_keyboard_sequences
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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)))
示例9: cmdHELP
# 需要导入模块: import curses [as 别名]
# 或者: from curses import has_key [as 别名]
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,
)
)