def configure_specials_key(self, keyboard):
special_row = VKeyRow()<EOL>max_length = self.max_length<EOL>i = len(self.rows) - <NUM_LIT:1><EOL>current_row = self.rows[i]<EOL>special_keys = [VBackKey()]<EOL>if self.allow_uppercase: special_keys.append(VUppercaseKey(keyboard))<EOL>if self.allow_special_chars: special_keys.append(VSpecialCharKey(keyboard))<EOL>while len(special_keys) > <NUM_LIT:0>:<EOL><INDENT>first = False<EOL>while len(special_keys) > <NUM_LIT:0> and len(current_row) < max_length:<EOL><INDENT>current_row.add_key(special_keys.pop(<NUM_LIT:0>), first=first)<EOL>first = not first<EOL><DEDENT>if i > <NUM_LIT:0>:<EOL><INDENT>i -= <NUM_LIT:1><EOL>current_row = self.rows[i]<EOL><DEDENT>else:<EOL><INDENT>break<EOL><DEDENT><DEDENT>if self.allow_space:<EOL><INDENT>space_length = len(current_row) - len(special_keys)<EOL>special_row.add_key(VSpaceKey(space_length))<EOL><DEDENT>first = True<EOL>while len(special_keys) > <NUM_LIT:0>:<EOL><INDENT>special_row.add_key(special_keys.pop(<NUM_LIT:0>), first=first)<EOL>first = not first<EOL><DEDENT>if len(special_row) > <NUM_LIT:0>:<EOL><INDENT>self.rows.append(special_row)<EOL><DEDENT>
Configures specials key if needed.

        :param keyboard: Keyboard instance this layout belong.