From 92f303bb9d3c58bca6ee4e37a301db2f2415d3f6 Mon Sep 17 00:00:00 2001 From: VardanRattan Date: Fri, 6 Feb 2026 21:54:26 +0530 Subject: [PATCH 1/3] fix(input): derive caps lock state from keyboard events --- frontend/src/ts/test/caps-warning.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/frontend/src/ts/test/caps-warning.ts b/frontend/src/ts/test/caps-warning.ts index 87a7ed847ac7..bd1f2afd69c4 100644 --- a/frontend/src/ts/test/caps-warning.ts +++ b/frontend/src/ts/test/caps-warning.ts @@ -23,13 +23,10 @@ function hide(): void { } function update(event: KeyboardEvent): void { - if (event.key === "CapsLock" && capsState !== null) { - capsState = !capsState; - } else { - const modState = event.getModifierState?.("CapsLock"); - if (modState !== undefined) { - capsState = modState; - } + const modState = event.getModifierState?.("CapsLock"); + + if (modState !== undefined) { + capsState = modState; } try { From 0b72863e43c74bd72473306b199b0a505cffb37b Mon Sep 17 00:00:00 2001 From: VardanRattan Date: Sat, 7 Feb 2026 12:57:48 +0530 Subject: [PATCH 2/3] fix(caps-warning): defer CapsLock modifier read on Linux --- frontend/src/ts/test/caps-warning.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/src/ts/test/caps-warning.ts b/frontend/src/ts/test/caps-warning.ts index bd1f2afd69c4..ec14e045c55a 100644 --- a/frontend/src/ts/test/caps-warning.ts +++ b/frontend/src/ts/test/caps-warning.ts @@ -22,7 +22,7 @@ function hide(): void { } } -function update(event: KeyboardEvent): void { +function updateFromEvent(event: KeyboardEvent): void { const modState = event.getModifierState?.("CapsLock"); if (modState !== undefined) { @@ -38,6 +38,16 @@ function update(event: KeyboardEvent): void { } catch {} } +function update(event: KeyboardEvent): void { + // Linux: CapsLock modifier state may not be updated synchronously + // when the CapsLock key event fires, so defer the read. + if (Misc.isLinux() && event.key === "CapsLock") { + setTimeout(() => updateFromEvent(event), 0); + } else { + updateFromEvent(event); + } +} + document.addEventListener("keyup", update); document.addEventListener("keydown", (event) => { From 897dbd5d8bf207e0fcd1aa6d404b01e73fffd6b4 Mon Sep 17 00:00:00 2001 From: VardanRattan Date: Sat, 7 Feb 2026 19:15:06 +0530 Subject: [PATCH 3/3] fix(caps-warning): handle CapsLock keydown on Linux --- frontend/src/ts/test/caps-warning.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/ts/test/caps-warning.ts b/frontend/src/ts/test/caps-warning.ts index ec14e045c55a..3ba5d90065e9 100644 --- a/frontend/src/ts/test/caps-warning.ts +++ b/frontend/src/ts/test/caps-warning.ts @@ -51,5 +51,9 @@ function update(event: KeyboardEvent): void { document.addEventListener("keyup", update); document.addEventListener("keydown", (event) => { - if (Misc.isMac()) update(event); + if (Misc.isMac()) { + update(event); + } else if (Misc.isLinux() && event.key === "CapsLock") { + update(event); + } });