class_docstr: Statemachine that receives :class:`KeyPress` instances and according to the
  key bindings in the given :class:`Registry`, calls the matching handlers.
  
  ::
  
      p = InputProcessor(registry)
  
      # Send keys into the processor.
      p.feed(KeyPress(Keys.ControlX, ''))
      p.feed(KeyPress(Keys.ControlC, '')
  
      # Process all the keys in the queue.
      p.process_keys()
  
      # Now the ControlX-ControlC callback will be called if this sequence is
      # registered in the registry.
  
  :param registry: `BaseRegistry` instance.
  :param cli_ref: weakref to `CommandLineInterface`.
class_docstr_tok: ["Statemachine","that","receives",":","class",":","`","KeyPress","`","instances","and","according","to","the","key","bindings","in","the","given",":","class",":","`","Registry","`",",","calls","the","matching","handlers",".",":",":","p","=","InputProcessor","(","registry",")","#","Send","keys","into","the","processor",".","p.feed","(","KeyPress","(","Keys.ControlX",",","'\u0018","'",")",")","p.feed","(","KeyPress","(","Keys.ControlC",",","'\u0003","'",")","#","Process","all","the","keys","in","the","queue",".","p.process_keys","(",")","#","Now","the","ControlX-ControlC","callback","will","be","called","if","this","sequence","is","#","registered","in","the","registry",".",":","param","registry",":","`","BaseRegistry","`","instance",".",":","param","cli_ref",":","weakref","to","`","CommandLineInterface","`","."]
docstr: Start recording macro. 
docstr_tok: ["Start","recording","macro","."]
code: def start_macro(self):
      "Start recording macro."
      self.record_macro = True
      self.macro = []
  
imports: from __future__ import unicode_literals
  from prompt_toolkit.buffer import EditReadOnlyBuffer
  from prompt_toolkit.filters.cli import ViNavigationMode
  from prompt_toolkit.keys import Keys, Key
  from prompt_toolkit.utils import Event
  from .registry import BaseRegistry
  from collections import deque
  from six.moves import range
  import weakref
  import six
label_desc: Use image node_id 3 for calling the InputProcessor obj's underlying member method code with example usage: obj.start_macro() without return types