Beispiel #1
0
 def _setup_mask(self):
     mask = array(b'B', b'\xff' * 32)
     if self._keys_to_ignore >= self.IGNORE_MODIFIER_KEYS:
         modifier_mappings = xlib.get_modifier_mapping(self.display)
         for modifier_keys in modifier_mappings:
             for keycode in modifier_keys:
                 mask[keycode // 8] &= ~(1 << (keycode % 8))
     return mask
Beispiel #2
0
 def __init__(self, parent=None):
     AbstractKeyboardMonitor.__init__(self, parent)
     self.display = Display.from_qt()
     # this timer is started on every keyboard event, its timeout signals,
     # that the keyboard is to be considered inactive again
     self._idle_timer = QTimer(self)
     self._idle_timer.setInterval(self.DEFAULT_IDLETIME)
     self._idle_timer.timeout.connect(self.typingStopped)
     self._idle_timer.setSingleShot(True)
     # this object records events
     self._recorder = EventRecorder(self)
     self._recorder.keyPressed.connect(self._key_pressed)
     self._recorder.keyReleased.connect(self._key_released)
     self._recorder.started.connect(self.started)
     self._recorder.finished.connect(self.stopped)
     # a set of all known modifier keycodes
     modifier_mapping = xlib.get_modifier_mapping(self.display)
     self._modifiers = frozenset(keycode for modifiers in modifier_mapping
                                 for keycode in modifiers if keycode != 0)
     # a set holding all pressed, but not yet released modifier keys
     self._pressed_modifiers = set()
     # the value of keys to ignore
     self._keys_to_ignore = self.IGNORE_NO_KEYS