| | import {app} from "../../scripts/app.js"; |
| |
|
| | app.registerExtension({ |
| | name: "Comfy.Keybinds", |
| | init() { |
| | const keybindListener = function (event) { |
| | const modifierPressed = event.ctrlKey || event.metaKey; |
| |
|
| | |
| | if (modifierPressed && event.key === "Enter") { |
| | app.queuePrompt(event.shiftKey ? -1 : 0).then(); |
| | return; |
| | } |
| |
|
| | const target = event.composedPath()[0]; |
| | if (["INPUT", "TEXTAREA"].includes(target.tagName)) { |
| | return; |
| | } |
| |
|
| | const modifierKeyIdMap = { |
| | s: "#comfy-save-button", |
| | o: "#comfy-file-input", |
| | Backspace: "#comfy-clear-button", |
| | Delete: "#comfy-clear-button", |
| | d: "#comfy-load-default-button", |
| | }; |
| |
|
| | const modifierKeybindId = modifierKeyIdMap[event.key]; |
| | if (modifierPressed && modifierKeybindId) { |
| | event.preventDefault(); |
| |
|
| | const elem = document.querySelector(modifierKeybindId); |
| | elem.click(); |
| | return; |
| | } |
| |
|
| | |
| | if (event.ctrlKey || event.altKey || event.metaKey) { |
| | return; |
| | } |
| |
|
| | |
| | if (event.key === "Escape") { |
| | const modals = document.querySelectorAll(".comfy-modal"); |
| | const modal = Array.from(modals).find(modal => window.getComputedStyle(modal).getPropertyValue("display") !== "none"); |
| | if (modal) { |
| | modal.style.display = "none"; |
| | } |
| |
|
| | [...document.querySelectorAll("dialog")].forEach(d => { |
| | d.close(); |
| | }); |
| | } |
| |
|
| | const keyIdMap = { |
| | q: "#comfy-view-queue-button", |
| | h: "#comfy-view-history-button", |
| | r: "#comfy-refresh-button", |
| | }; |
| |
|
| | const buttonId = keyIdMap[event.key]; |
| | if (buttonId) { |
| | const button = document.querySelector(buttonId); |
| | button.click(); |
| | } |
| | } |
| |
|
| | window.addEventListener("keydown", keybindListener, true); |
| | } |
| | }); |
| |
|