pragma Singleton import QtQuick import Quickshell import Quickshell.Hyprland QtObject { id: inputManager property var handlers: ({}) function openShell() { ShellStateManager.openShell(); } function closeShell() { ShellStateManager.closeShell(); } function registerHandler(context, handler) { handlers[context] = handler; } function unregisterHandler(context) { handlers[context] = undefined; if (handlers.hasOwnProperty(context)) delete handlers[context]; } function handleKeyInternal(key) { if (!ShellStateManager.shellOpen) return false; var context = "topbar"; if (ShellStateManager.appLauncherOpen) context = "appLauncher"; else if (ShellStateManager.quickSettingsOpen) context = "quickSettings"; else if (ShellStateManager.powerMenuOpen) context = "powerMenu"; var handler = handlers[context]; if (handler) { var handled = handler(key); if (handled) return true; } if (key === Qt.Key_Escape || key === Qt.Key_Shift || key === Qt.Key_X) { if (context === "appLauncher") { ShellStateManager.closeAppLauncher(); } else if (context === "quickSettings") { ShellStateManager.closeQuickSettings(); } else if (context === "powerMenu") { ShellStateManager.closePowerMenu(); } else if (context === "topbar") { ShellStateManager.closeShell(); Hyprland.dispatch("submap reset"); } return true; } return false; } function handleKey(event) { handleKeyInternal(event.key); } }