def button_release(self, mapper): if self._keep_pressed: self._keep_pressed = False if len(self._lst) > 0: # _rel_tap_press is still scheduled self._lst += [ False ] else: ButtonAction._button_release(mapper, self.button)
def release_virtual_buttons(self): """ Called when daemon is killed or USB dongle is disconnected. Sends button release event for every virtual button that is still being pressed. """ to_release, self.pressed = self.pressed, {} for x in to_release: ButtonAction._button_release(self, x, True)
def _rel_tap_press(self, mapper): if not self.button in mapper.pressed or mapper.pressed[self.button] < self.COUNTER_VAL: # Something else tried to _release_ button in meanwhile, bail out mapper.pressed[self.button] = 1 ButtonAction._button_release(mapper, self.button) return self._bailout() elif mapper.pressed[self.button] > self.COUNTER_VAL: # Something else pressed button in meanwhile, bail out mapper.pressed[self.button] = 1 return self._bailout() a, self._lst = self._lst[0], self._lst[1:] if a: mapper.pressed[self.button] = 0 ButtonAction._button_press(mapper, self.button) else: mapper.pressed[self.button] = 1 ButtonAction._button_release(mapper, self.button) if len(self._lst): mapper.pressed[self.button] = self.COUNTER_VAL mapper.schedule(self.PAUSE, self._rel_tap_press)
def _scheduled_release(self, mapper): ButtonAction._button_release(mapper, self.button)
def button_press(self, mapper): ButtonAction._button_release(mapper, self.button)