def notify(signal): if not isRegistered(): return with winreg.CreateKey( winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows NT\CurrentVersion\AccessibilityTemp" ) as rkey: winreg.SetValueEx(rkey, APP_KEY_NAME, None, winreg.REG_DWORD, signal) keys = [] # The user might be holding unwanted modifiers. for vk in winUser.VK_SHIFT, winUser.VK_CONTROL, winUser.VK_MENU: if winUser.getAsyncKeyState(vk) & 32768: keys.append((vk, False)) keys.append((0x5B, True)) # leftWindows keys.append((0x55, True)) # u inputs = [] # Release unwanted keys and press desired keys. for vk, desired in keys: input = winUser.Input(type=winUser.INPUT_KEYBOARD) input.ii.ki.wVk = vk if not desired: input.ii.ki.dwFlags = winUser.KEYEVENTF_KEYUP inputs.append(input) # Release desired keys and press unwanted keys. for vk, desired in reversed(keys): input = winUser.Input(type=winUser.INPUT_KEYBOARD) input.ii.ki.wVk = vk if desired: input.ii.ki.dwFlags = winUser.KEYEVENTF_KEYUP inputs.append(input) winUser.SendInput(inputs)
def sendChars(self, chars): inputs = [] for ch in chars: input = winUser.Input() input.type = winUser.INPUT_KEYBOARD input.ii.ki = winUser.KeyBdInput() input.ii.ki.wScan = ord(ch) input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE inputs.append(input) winUser.SendInput(inputs)
def sendChars(self, chars: str): """Sends the provided unicode characters to the system. @param chars: The characters to send to the system. """ inputs = [] for ch in chars: for direction in (0, winUser.KEYEVENTF_KEYUP): input = winUser.Input() input.type = winUser.INPUT_KEYBOARD input.ii.ki = winUser.KeyBdInput() input.ii.ki.wScan = ord(ch) input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE | direction inputs.append(input) winUser.SendInput(inputs)
def sendChars(self, chars: str): """Sends the provided unicode characters to the system. @param chars: The characters to send to the system. """ inputs = [] for ch in chars: for direction in (0,winUser.KEYEVENTF_KEYUP): input = winUser.Input() input.type = winUser.INPUT_KEYBOARD input.ii.ki = winUser.KeyBdInput() input.ii.ki.wScan = ord(ch) input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE|direction inputs.append(input) winUser.SendInput(inputs) focusObj = api.getFocusObject() if keyboardHandler.shouldUseToUnicodeEx(focusObj): # #10569: When we use ToUnicodeEx to detect typed characters, # emulated keypresses aren't detected. # Send TypedCharacter events manually. for ch in chars: focusObj.event_typedCharacter(ch=ch)