Files
DeltaruneQuickshell/Shell/ShellInputManager.qml
2026-03-01 11:43:25 +02:00

69 lines
1.8 KiB
QML

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);
}
}