Exemple #1
0
 def send_keys(self, keys):
     try:
         if isinstance(keys, str) or isinstance(keys, unicode):
             keys = keys.split("|")
     except NameError:  # Python 3 does not have unicode class.
         pass
     for k in keys:
         if not k: continue
         if isinstance(k, int):
             kbd_gesture = KeyboardInputGesture([], k, 1, False)
         elif isinstance(k, tuple):
             kbd_gesture = KeyboardInputGesture([], k[0], 1, k[1])
         else:
             kbd_gesture = KeyboardInputGesture.fromName(k)
         inputCore.manager.emulateGesture(kbd_gesture)
Exemple #2
0
    def manageRemanence(self, currentGesture):
        if not isInstall(ID_KeyRemanence):
            return None
        delayBetweenGestures = time.time() - self.lastGestureTime\
         if self.lastGestureTime else time.time()
        self.lastGestureTime = time.time()
        lastGesture = self.lastGesture
        self.lastGesture = currentGesture
        if self.manageRemanenceActivation(currentGesture):
            return None
        if not self.remanenceActivation:
            return None
        if self.isRemanenceKey(currentGesture):
            # if gesture is the same than last saved modifier , stop remanence
            if self.isRemanenceStarted()\
             and len(self.lastModifiers)\
             and currentGesture.displayName == self.lastModifiers[-1].displayName:
                self.stopRemanence(beep=True)
                return None
            self.lastModifiers.append(currentGesture)
            queueHandler.queueFunction(queueHandler.eventQueue,
                                       self.startRemanence, currentGesture)
            if not currentGesture.isNVDAModifierKey:
                currentGesture.noAction = True
            return None
        if (currentGesture.mainKeyName.lower() == "capslock"):
            self.stopRemanence()
        if not self.isRemanenceStarted():
            # perhaps it's a gesture repeat
            if ((delayBetweenGestures > 0.5) or lastGesture is None or
                (lastGesture and
                 (currentGesture.displayName) != lastGesture.displayName)):
                # no, it's a normal gesture
                self.lastModifiersForRepeat = []
                return None
        else:
            if currentGesture.isModifier:
                self.lastModifiers.append(currentGesture)
                currentGesture.noAction = True
                return None
            # remanence is started, so saved last modifiers for repeat
            self.lastModifiersForRepeat = self.lastModifiers[:]
            self.stopRemanence()
        if len(self.lastModifiersForRepeat) == 0:
            return None

        # calculate new gesture with all saved modifier keys
        modifiers = set()
        for modifier in self.lastModifiersForRepeat:
            modifiers.add((modifier.vkCode, modifier.isExtended))
        vkCode = currentGesture.vkCode
        scanCode = currentGesture.scanCode
        extended = currentGesture.isExtended
        newGesture = KeyboardInputGesture(modifiers, vkCode, scanCode,
                                          extended)
        return newGesture
Exemple #3
0
 def getNumpadKeyReplacement(self, gesture):
     if not self.enableNumpadNnavigationKeys:
         return None
     if gesture.isModifier or "nvda" in gesture.displayName.lower():
         # excluded modifier key and numpad keys with NVDA modifiers
         return None
     numpadKeyNames = ["numpad%s" % str(x) for x in range(1, 10)]
     numpadKeyNames.remove("numpad5")
     if gesture.mainKeyName in numpadKeyNames:
         vkCode = gesture.vkCode
         scanCode = gesture.scanCode
         extended = not gesture.isExtended
         newGesture = KeyboardInputGesture(gesture.modifiers, vkCode,
                                           scanCode, extended)  # noqa:E501
         return newGesture
     return None