def _process_keyevent(self, keyinfo): log('_process_keyevent <%s>' % keyinfo) def nop(e): pass if self.next_meta: self.next_meta = False keyinfo.meta = True keytuple = keyinfo.tuple() if self._insert_verbatim: self.insert_text(keyinfo) self._insert_verbatim = False self.argument = 0 return False if keytuple in self.exit_dispatch: pars = ( self.l_buffer, lineobj.EndOfLine(self.l_buffer)) log('exit_dispatch:<%s, %s>' % pars) if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError if keyinfo.keyname or keyinfo.control or keyinfo.meta: default = nop else: default = self.self_insert dispatch_func = self.key_dispatch.get(keytuple, default) log('readline from keyboard:<%s,%s>' % (keytuple, dispatch_func)) r = None if dispatch_func: r = dispatch_func(keyinfo) self._keylog(dispatch_func, self.l_buffer) self.l_buffer.push_undo() self.previous_func = dispatch_func return r
def _readline_from_keyboard(self): c = self.console while 1: self._update_line() event = c.getkeypress() if self.next_meta: self.next_meta = False control, meta, shift, code = event.keyinfo event.keyinfo = (control, True, shift, code) #Process exit keys. Only exit on empty line if event.keyinfo in self.exit_dispatch: if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError dispatch_func = self.key_dispatch.get(event.keyinfo, self.self_insert) log("readline from keyboard:%s" % (event.keyinfo, )) r = None if dispatch_func: r = dispatch_func(event) self.l_buffer.push_undo() self.previous_func = dispatch_func if r: self._update_line() break
def _readline_from_keyboard(self): c = self.console def nop(e): pass while 1: self._update_line() try: event = c.getkeypress() except KeyboardInterrupt: from pyreadline.keysyms.common import KeyPress from pyreadline.console.event import Event event = Event(0, 0) event.char = "c" event.keyinfo = KeyPress("c", shift=False, control=True, meta=False, keyname=None) log_sock("KBDIRQ") if self.allow_ctrl_c: now = time.time() if (now - self.ctrl_c_timeout ) < self.ctrl_c_tap_time_interval: raise else: self.ctrl_c_timeout = now pass else: raise if self.next_meta: self.next_meta = False control, meta, shift, code = event.keyinfo event.keyinfo = (control, True, shift, code) #Process exit keys. Only exit on empty line keyinfo = event.keyinfo.tuple() if keyinfo in self.exit_dispatch: if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError if len(keyinfo[-1]) > 1: default = nop else: default = self.self_insert dispatch_func = self.key_dispatch.get(keyinfo, default) log("readline from keyboard:%s,%s" % (keyinfo, dispatch_func)) log_sock("%s|%s" % (format(keyinfo), dispatch_func.__name__), "bound_function") r = None if dispatch_func: r = dispatch_func(event) self._keylog(dispatch_func, self.l_buffer) self.l_buffer.push_undo() self.previous_func = dispatch_func if r: self._update_line() break
def _process_keyevent(self, keyinfo): """Return True when line is final.""" # Process exit keys. Only exit on empty line if self.debug: log("_process_keyevent <%s>" % keyinfo) if self.next_meta: self.next_meta = False keyinfo.meta = True keytuple = keyinfo.tuple() if self._insert_verbatim: self.insert_text(keyinfo) self._insert_verbatim = False self.argument = 0 return False if keytuple in self.exit_dispatch: pars = (self.l_buffer, lineobj.EndOfLine(self.l_buffer)) log("exit_dispatch:<%s, %s>" % pars) if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError if keyinfo.keyname or keyinfo.control or keyinfo.meta: default = self.nop else: default = self.self_insert dispatch_func = self.key_dispatch.get(keytuple, default) if self.debug: log("readline from keyboard:<%s,%s>" % (keytuple, dispatch_func)) r = None if dispatch_func: r = dispatch_func(keyinfo) self._keylog(dispatch_func, self.l_buffer) self.l_buffer.push_undo() self.previous_func = dispatch_func return r
def process_keyevent(self, keyinfo): def nop(e): pass keytuple = keyinfo.tuple() if keytuple in self.exit_dispatch: if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError dispatch_func = self.key_dispatch.get(keytuple, self.vi_key) log('readline from keyboard:%s->%s' % (keytuple, dispatch_func)) r = None if dispatch_func: r = dispatch_func(keyinfo) self.l_buffer.push_undo() self.previous_func = dispatch_func if r: self._update_line() return True return False
def _readline_from_keyboard_poll(self): c = self.console def nop(e): pass try: event = c.getkeypress() except KeyboardInterrupt: event = self.handle_ctrl_c() self._update_line() return False if self.next_meta: self.next_meta = False control, meta, shift, code = event.keyinfo event.keyinfo = (control, True, shift, code) #Process exit keys. Only exit on empty line keyinfo = event.keyinfo.tuple() if keyinfo in self.exit_dispatch: if lineobj.EndOfLine(self.l_buffer) == 0: raise EOFError if len(keyinfo[-1]) > 1: default = nop else: default = self.self_insert dispatch_func = self.key_dispatch.get(keyinfo, default) log("readline from keyboard:%s,%s" % (keyinfo, dispatch_func)) log_sock("%s|%s" % (format(keyinfo), dispatch_func.__name__), "bound_function") r = None if dispatch_func: r = dispatch_func(event) self._keylog(dispatch_func, self.l_buffer) self.l_buffer.push_undo() self.previous_func = dispatch_func self._update_line() if r: return True return False