Files
DeltaruneQuickshell/Shell/ShellInputManager.qml
2026-02-05 18:43:54 +02:00

65 lines
1.6 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";
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 === "topbar") {
ShellStateManager.closeShell();
Hyprland.dispatch("submap reset");
}
return true;
}
return false;
}
function handleKey(event) {
handleKeyInternal(event.key);
}
}