code: def character_to_vk(self, character):
          
          for vk in self.non_layout_keys:
              if self.non_layout_keys[vk] == character.lower():
                  return (vk, [])
          for vk in self.layout_specific_keys:
              if self.layout_specific_keys[vk][0] == character:
                  return (vk, [])
              elif self.layout_specific_keys[vk][1] == character:
                  return (vk, ['shift'])
          raise ValueError("Unrecognized character: {}".format(character))
docs: 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')