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