Exemple #1
0
    def send(self):
        keys = []
        for vk, ext in self.generalizedModifiers:
            if vk == VK_WIN:
                if winUser.getKeyState(
                        winUser.VK_LWIN) & 32768 or winUser.getKeyState(
                            winUser.VK_RWIN) & 32768:
                    # Already down.
                    continue
                vk = winUser.VK_LWIN
            elif winUser.getKeyState(vk) & 32768:
                # Already down.
                continue
            keys.append((vk, 0, ext))
        keys.append((self.vkCode, self.scanCode, self.isExtended))

        with ignoreInjection():
            if winUser.getKeyState(self.vkCode) & 32768:
                # This key is already down, so send a key up for it first.
                winUser.keybd_event(self.vkCode, self.scanCode,
                                    self.isExtended + 2, 0)

            # Send key down events for these keys.
            for vk, scan, ext in keys:
                winUser.keybd_event(vk, scan, ext, 0)
            # Send key up events for the keys in reverse order.
            for vk, scan, ext in reversed(keys):
                winUser.keybd_event(vk, scan, ext + 2, 0)

            if not queueHandler.isPendingItems(queueHandler.eventQueue):
                # We want to guarantee that by the time that
                # this function returns,the keyboard input generated
                # has been injected and NVDA has received and processed it.
                time.sleep(0.01)
                wx.Yield()
	def send(self):
		keys = []
		for vk, ext in self.generalizedModifiers:
			if vk == VK_WIN:
				if winUser.getKeyState(winUser.VK_LWIN) & 32768 or winUser.getKeyState(winUser.VK_RWIN) & 32768:
					# Already down.
					continue
				vk = winUser.VK_LWIN
			elif winUser.getKeyState(vk) & 32768:
				# Already down.
				continue
			keys.append((vk, ext))
		keys.append((self.vkCode, self.isExtended))

		if winUser.getKeyState(self.vkCode) & 32768:
			# This key is already down, so send a key up for it first.
			winUser.keybd_event(self.vkCode, 0, self.isExtended + 2, 0)

		# Send key down events for these keys.
		for vk, ext in keys:
			winUser.keybd_event(vk, 0, ext, 0)
		# Send key up events for the keys in reverse order.
		for vk, ext in reversed(keys):
			winUser.keybd_event(vk, 0, ext + 2, 0)

		if not queueHandler.isPendingItems(queueHandler.eventQueue):
			time.sleep(0.01)
			wx.Yield()
Exemple #3
0
	def send(self):
		global ignoreInjected
		keys = []
		for vk, ext in self.generalizedModifiers:
			if vk == VK_WIN:
				if winUser.getKeyState(winUser.VK_LWIN) & 32768 or winUser.getKeyState(winUser.VK_RWIN) & 32768:
					# Already down.
					continue
				vk = winUser.VK_LWIN
			elif winUser.getKeyState(vk) & 32768:
				# Already down.
				continue
			keys.append((vk, 0, ext))
		keys.append((self.vkCode, self.scanCode, self.isExtended))

		try:
			ignoreInjected=True
			if winUser.getKeyState(self.vkCode) & 32768:
				# This key is already down, so send a key up for it first.
				winUser.keybd_event(self.vkCode, self.scanCode, self.isExtended + 2, 0)

			# Send key down events for these keys.
			for vk, scan, ext in keys:
				winUser.keybd_event(vk, scan, ext, 0)
			# Send key up events for the keys in reverse order.
			for vk, scan, ext in reversed(keys):
				winUser.keybd_event(vk, scan, ext + 2, 0)

			if not queueHandler.isPendingItems(queueHandler.eventQueue):
				time.sleep(0.01)
				wx.Yield()
		finally:
			ignoreInjected=False