diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index a7366a258..8a82a9af6 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -1298,6 +1298,9 @@ class SvelteReviewer(Reviewer): self.bottom.web = self.web self.mw.bottomWeb.hide() + def _shortcutKeys(self) -> Sequence[tuple[str, Callable] | tuple[Qt.Key, Callable]]: + return [] + # if the last element is a comment, then the RUN_STATE_MUTATION code # breaks due to the comment wrongly commenting out python code. diff --git a/ts/routes/reviewer/Reviewer.svelte b/ts/routes/reviewer/Reviewer.svelte index 4f7bc0536..f136a761f 100644 --- a/ts/routes/reviewer/Reviewer.svelte +++ b/ts/routes/reviewer/Reviewer.svelte @@ -10,6 +10,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html $: if (iframe) { state.registerIFrame(iframe); + state.registerShortcuts(); } diff --git a/ts/routes/reviewer/reviewer.ts b/ts/routes/reviewer/reviewer.ts index 8bee7a23a..45cdab145 100644 --- a/ts/routes/reviewer/reviewer.ts +++ b/ts/routes/reviewer/reviewer.ts @@ -25,6 +25,35 @@ export class ReviewerState { iframe.addEventListener("load", this.onReady.bind(this)); } + onKeyDown(e: KeyboardEvent) { + switch (e.key) { + case "1": { + this.easeButtonPressed(0); + break; + } + case "2": { + this.easeButtonPressed(1); + break; + } + case "3": { + this.easeButtonPressed(2); + break; + } + case "4": { + this.easeButtonPressed(3); + break; + } + case " ": { + this.showAnswer(); + break; + } + } + } + + public registerShortcuts() { + document.addEventListener("keydown", this.onKeyDown.bind(this)); + } + updateHtml(htmlString: string) { this.iframe?.contentWindow?.postMessage({ type: "html", value: htmlString }, "*"); }