35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
import logging
|
|
import keyboard
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class HotkeyManager:
|
|
def __init__(self, config_manager, switcher):
|
|
self._config_manager = config_manager
|
|
self._switcher = switcher
|
|
self._registered: list[str] = []
|
|
|
|
def register_all(self) -> None:
|
|
self.unregister_all()
|
|
config = self._config_manager.get()
|
|
for profile in config.get("profiles", []):
|
|
hotkey = profile.get("hotkey", "").strip()
|
|
if not hotkey:
|
|
continue
|
|
profile_id = profile["id"]
|
|
try:
|
|
keyboard.add_hotkey(hotkey, self._switcher.apply_profile, args=[profile_id])
|
|
self._registered.append(hotkey)
|
|
logger.info("Hotkey '%s' -> profile '%s'", hotkey, profile_id)
|
|
except Exception as exc:
|
|
logger.warning("Failed to register hotkey '%s': %s", hotkey, exc)
|
|
|
|
def unregister_all(self) -> None:
|
|
for hotkey in self._registered:
|
|
try:
|
|
keyboard.remove_hotkey(hotkey)
|
|
except Exception:
|
|
pass
|
|
self._registered.clear()
|