diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts index 3bd9378b0..949da78d5 100644 --- a/src/client/InputHandler.ts +++ b/src/client/InputHandler.ts @@ -185,7 +185,7 @@ export class InputHandler { } // Map invalid values to undefined (filtered later) - if (typeof val !== "string" || val === "Null") { + if (typeof val !== "string") { return [k, undefined]; } return [k, val]; diff --git a/src/client/components/baseComponents/setting/SettingKeybind.ts b/src/client/components/baseComponents/setting/SettingKeybind.ts index 50b7a8284..ed3582ad0 100644 --- a/src/client/components/baseComponents/setting/SettingKeybind.ts +++ b/src/client/components/baseComponents/setting/SettingKeybind.ts @@ -78,7 +78,7 @@ export class SettingKeybind extends LitElement { } private displayKey(key: string): string { - if (!key) return translateText("user_setting.press_a_key"); + if (!key || key === "Null") return translateText("common.none"); return formatKeyForDisplay(key); } diff --git a/tests/InputHandler.test.ts b/tests/InputHandler.test.ts index e854cb11a..132e88419 100644 --- a/tests/InputHandler.test.ts +++ b/tests/InputHandler.test.ts @@ -426,7 +426,7 @@ describe("InputHandler AutoUpgrade", () => { expect((inputHandler as any).keybinds.moveUp).toBe("KeyX"); }); - test("ignores non-string and 'Null' values and preserves defaults", () => { + test("ignores non-string values and preserves defaults, but keeps 'Null' for unbound keys", () => { const mixed = { moveUp: { key: "moveUp", value: null }, moveLeft: "Null", @@ -435,9 +435,9 @@ describe("InputHandler AutoUpgrade", () => { inputHandler.initialize(); - // defaults from InputHandler should remain expect((inputHandler as any).keybinds.moveUp).toBe("KeyW"); - expect((inputHandler as any).keybinds.moveLeft).toBe("KeyA"); + // "Null" is preserved to indicate unbound keybind + expect((inputHandler as any).keybinds.moveLeft).toBe("Null"); }); test("handles invalid JSON gracefully and warns", () => {