Add keyboard shortcuts for generation

(Removed Alt+Enter) Ctrl+Enter to start/restart generation
(New) Alt/Option+Enter to skip generation
(New) Ctrl+Alt/Option+Enter to interrupt generation
This commit is contained in:
kaalibro 2023-12-09 21:04:45 +06:00
parent f92d61497a
commit 9c201550dd
No known key found for this signature in database
2 changed files with 21 additions and 6 deletions

View File

@ -79,11 +79,11 @@ class Toprow:
def create_prompts(self): def create_prompts(self):
with gr.Column(elem_id=f"{self.id_part}_prompt_container", elem_classes=["prompt-container-compact"] if self.is_compact else [], scale=6): with gr.Column(elem_id=f"{self.id_part}_prompt_container", elem_classes=["prompt-container-compact"] if self.is_compact else [], scale=6):
with gr.Row(elem_id=f"{self.id_part}_prompt_row", elem_classes=["prompt-row"]): with gr.Row(elem_id=f"{self.id_part}_prompt_row", elem_classes=["prompt-row"]):
self.prompt = gr.Textbox(label="Prompt", elem_id=f"{self.id_part}_prompt", show_label=False, lines=3, placeholder="Prompt (press Ctrl+Enter or Alt+Enter to generate)", elem_classes=["prompt"]) self.prompt = gr.Textbox(label="Prompt", elem_id=f"{self.id_part}_prompt", show_label=False, lines=3, placeholder="Prompt\n(Press Ctrl+Enter to generate, Alt+Enter to skip, Ctrl+Alt+Enter to interrupt)", elem_classes=["prompt"])
self.prompt_img = gr.File(label="", elem_id=f"{self.id_part}_prompt_image", file_count="single", type="binary", visible=False) self.prompt_img = gr.File(label="", elem_id=f"{self.id_part}_prompt_image", file_count="single", type="binary", visible=False)
with gr.Row(elem_id=f"{self.id_part}_neg_prompt_row", elem_classes=["prompt-row"]): with gr.Row(elem_id=f"{self.id_part}_neg_prompt_row", elem_classes=["prompt-row"]):
self.negative_prompt = gr.Textbox(label="Negative prompt", elem_id=f"{self.id_part}_neg_prompt", show_label=False, lines=3, placeholder="Negative prompt (press Ctrl+Enter or Alt+Enter to generate)", elem_classes=["prompt"]) self.negative_prompt = gr.Textbox(label="Negative prompt", elem_id=f"{self.id_part}_neg_prompt", show_label=False, lines=3, placeholder="Negative prompt\n(Press Ctrl+Enter to generate, Alt+Enter to skip, Ctrl+Alt+Enter to interrupt)", elem_classes=["prompt"])
self.prompt_img.change( self.prompt_img.change(
fn=modules.images.image_data, fn=modules.images.image_data,

View File

@ -121,16 +121,21 @@ document.addEventListener("DOMContentLoaded", function() {
}); });
/** /**
* Add a ctrl+enter as a shortcut to start a generation * Add keyboard shortcuts:
* Ctrl+Enter to start/restart a generation
* Alt/Option+Enter to skip a generation
* Alt/Option+Ctrl+Enter to interrupt a generation
*/ */
document.addEventListener('keydown', function(e) { document.addEventListener('keydown', function(e) {
const isEnter = e.key === 'Enter' || e.keyCode === 13; const isEnter = e.key === 'Enter' || e.keyCode === 13;
const isModifierKey = e.metaKey || e.ctrlKey || e.altKey; const isCtrlKey = e.metaKey || e.ctrlKey;
const isAltKey = e.altKey;
const interruptButton = get_uiCurrentTabContent().querySelector('button[id$=_interrupt]');
const generateButton = get_uiCurrentTabContent().querySelector('button[id$=_generate]'); const generateButton = get_uiCurrentTabContent().querySelector('button[id$=_generate]');
const interruptButton = get_uiCurrentTabContent().querySelector('button[id$=_interrupt]');
const skipButton = get_uiCurrentTabContent().querySelector('button[id$=_skip]');
if (isEnter && isModifierKey) { if (isCtrlKey && isEnter && !isAltKey) {
if (interruptButton.style.display === 'block') { if (interruptButton.style.display === 'block') {
interruptButton.click(); interruptButton.click();
const callback = (mutationList) => { const callback = (mutationList) => {
@ -150,6 +155,16 @@ document.addEventListener('keydown', function(e) {
} }
e.preventDefault(); e.preventDefault();
} }
if (isAltKey && isEnter && !isCtrlKey) {
skipButton.click();
e.preventDefault();
}
if (isAltKey && isCtrlKey && isEnter) {
interruptButton.click();
e.preventDefault();
}
}); });
/** /**