class Hotkey(QObject):
signal = pyqtSignal()
def __init__(self, hotkey, callback, args=(), suppress=False, timeout=1, trigger_on_release=False):
super().__init__()
self.callback = callback
add_hotkey(hotkey, self.signal.emit, args=args, suppress=suppress, timeout=timeout,
trigger_on_release=trigger_on_release)
class KeyboardManager(QObject):
hotkeys = {}
def add_hotkey(self, hotkey, callback, args=(), suppress=False, timeout=1, trigger_on_release=False):
self.hotkeys[hotkey] = Hotkey(hotkey, callback, args=args, suppress=suppress, timeout=timeout,
trigger_on_release=trigger_on_release)
def start(self):
for hk in self.hotkeys.values():
hk.signal.connect(hk.callback)