def __init__(self, surface, text_consumer, layout, special_char_layout=VKeyboardLayout(VKeyboardLayout.SPECIAL), renderer=VKeyboardRenderer.DEFAULT):
self.surface = surface<EOL>self.text_consumer = text_consumer<EOL>self.renderer = renderer<EOL>self.buffer = u'<STR_LIT>'<EOL>self.state = <NUM_LIT:0><EOL>self.last_pressed = None<EOL>self.uppercase = False<EOL>self.special_char = False<EOL>self.original_layout = layout<EOL>self.original_layout.configure_specials_key(self)<EOL>self.special_char_layout = special_char_layout<EOL>self.special_char_layout.configure_specials_key(self)<EOL>synchronizeLayout(self.original_layout, self.special_char_layout, self.surface.get_size())<EOL>self.set_layout(layout)<EOL>
Default constructor.

        :param surface: Surface this keyboard will be displayed at.
        :param text_consumer: Consumer that process text for each update.
        :param layout: Layout this keyboard will use.
        :param special_char_layout: Alternative layout to use, using VKeyboardLayout.SPECIAL if not specified.
        :param renderer: Keyboard renderer instance, using VKeyboardStyle.DEFAULT if not specified.