69 lines
1.8 KiB
QML
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);
|
|
}
|
|
|
|
}
|