def character_to_vk(self, character):
for vk in self.non_layout_keys:<EOL><INDENT>if self.non_layout_keys[vk] == character.lower():<EOL><INDENT>return (vk, [])<EOL><DEDENT><DEDENT>for vk in self.layout_specific_keys:<EOL><INDENT>if self.layout_specific_keys[vk][<NUM_LIT:0>] == character:<EOL><INDENT>return (vk, [])<EOL><DEDENT>elif self.layout_specific_keys[vk][<NUM_LIT:1>] == character:<EOL><INDENT>return (vk, ['<STR_LIT>'])<EOL><DEDENT><DEDENT>raise ValueError("<STR_LIT>".format(character))<EOL>
Returns a tuple of (scan_code, modifiers) where ``scan_code`` is a numeric scan code
        and ``modifiers`` is an array of string modifier names (like 'shift')