def down(self, key, override=None): ''' Holds down the given key ''' if key != key.lower() and len(key) == 1: use_shift = True self.down('left shift') else: use_shift = False key_code = self._get_scancode(key) if override: key_code = override if key in self._extended_scancodes: is_extended = KEYEVENTF_EXTENDEDKEY else: is_extended = 0 input_arr = Input * 1 extra = c_ulong(0) ii_ = InputUnion() ii_.keyb_inp = KeyBdInput(0, key_code, is_extended + KEYEVENTF_SCANCODE, 0, pointer(extra)) inputs = input_arr((1, ii_)) windll.user32.SendInput(1, pointer(inputs), sizeof(inputs[0])) if use_shift: self.up('left shift')
def up(self, key, override=None): ''' Releases the given key ''' key_code = self._get_scancode(key) if override: key_code = override if key in self._extended_scancodes: is_extended = KEYEVENTF_EXTENDEDKEY else: is_extended = 0 input_arr = Input * 1 extra = c_ulong(0) ii_ = InputUnion() ii_.keyb_inp = KeyBdInput( 0, key_code, is_extended + KEYEVENTF_KEYUP + KEYEVENTF_SCANCODE, 0, pointer(extra)) inputs = input_arr((1, ii_)) windll.user32.SendInput(1, pointer(inputs), sizeof(inputs[0]))