diff --git a/frontend/src/ts/elements/keymap.ts b/frontend/src/ts/elements/keymap.ts index a594212a8..60f1bcf43 100644 --- a/frontend/src/ts/elements/keymap.ts +++ b/frontend/src/ts/elements/keymap.ts @@ -323,7 +323,7 @@ export async function refresh( } } -ConfigEvent.subscribe((eventKey) => { +ConfigEvent.subscribe((eventKey, newValue) => { if (eventKey === "layout" && Config.keymapLayout === "overrideSync") { refresh(Config.keymapLayout); } @@ -335,6 +335,9 @@ ConfigEvent.subscribe((eventKey) => { ) { refresh(); } + if (eventKey === "keymapMode") { + newValue === "off" ? hide() : show(); + } }); KeymapEvent.subscribe((mode, key, correct) => { diff --git a/frontend/src/ts/test/test-logic.ts b/frontend/src/ts/test/test-logic.ts index 5d4cdf507..04e6e256b 100644 --- a/frontend/src/ts/test/test-logic.ts +++ b/frontend/src/ts/test/test-logic.ts @@ -344,13 +344,10 @@ export function restart(options = {} as RestartOptions): void { TestUI.showWords(); if (Config.keymapMode === "next" && Config.mode !== "zen") { KeymapEvent.highlight( - TestWords.words - .getCurrent() - .substring( - TestInput.input.current.length, - TestInput.input.current.length + 1 - ) - .toString() + Misc.nthElementFromArray( + [...TestWords.words.getCurrent()], + 0 + ) as string ); } Funbox.toggleScript(TestWords.words.getCurrent()); @@ -361,12 +358,6 @@ export function restart(options = {} as RestartOptions): void { TestState.setRepeated(false); } - if (Config.keymapMode !== "off") { - Keymap.show(); - } else { - Keymap.hide(); - } - for (const f of FunboxList.get(Config.funbox)) { if (f.functions?.restart) f.functions.restart(); } @@ -1519,7 +1510,6 @@ ConfigEvent.subscribe((eventKey, eventValue, nosave) => { if (ActivePage.get() === "test") { if (eventKey === "difficulty" && !nosave) restart(); if (eventKey === "showAllLines" && !nosave) restart(); - if (eventKey === "keymapMode" && !nosave) restart(); if (eventKey === "tapeMode" && !nosave) restart(); if ( eventKey === "customLayoutFluid" && @@ -1527,6 +1517,21 @@ ConfigEvent.subscribe((eventKey, eventValue, nosave) => { ) { restart(); } + + if ( + eventKey === "keymapMode" && + eventValue === "next" && + Config.mode !== "zen" + ) { + setTimeout(() => { + KeymapEvent.highlight( + Misc.nthElementFromArray( + [...TestWords.words.getCurrent()], + 0 + ) as string + ); + }, 0); + } } if (eventKey === "lazyMode" && eventValue === false && !nosave) { rememberLazyMode = false;