From b9fa53169f26456b1f6a0d3bbeaf180ff17589db Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Tue, 10 Feb 2026 01:17:40 -0800 Subject: [PATCH] Fix kitty modifier events when only flag 2 is used Fixes #5687 --- src/common/input/KittyKeyboard.test.ts | 16 +++++++++++++++- src/common/input/KittyKeyboard.ts | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/common/input/KittyKeyboard.test.ts b/src/common/input/KittyKeyboard.test.ts index af28a5b2..e495ac59 100644 --- a/src/common/input/KittyKeyboard.test.ts +++ b/src/common/input/KittyKeyboard.test.ts @@ -474,11 +474,25 @@ describe('KittyKeyboard', () => { }); it('modifier key release includes its own bit cleared', () => { - const result = kitty.evaluate(createEvent({ key: 'Shift', code: 'ShiftLeft', shiftKey: false }), flags, KittyKeyboardEventType.RELEASE); + const result = kitty.evaluate(createEvent({ key: 'Shift', code: 'ShiftLeft', shiftKey: false }), flags | KittyKeyboardFlags.REPORT_ALL_KEYS_AS_ESCAPE_CODES, KittyKeyboardEventType.RELEASE); assert.strictEqual(result.key, '\x1b[57441;1:3u'); }); }); + describe('modifier-only reporting', () => { + const flags = KittyKeyboardFlags.REPORT_EVENT_TYPES; + + it('does not report modifier press without REPORT_ALL_KEYS_AS_ESCAPE_CODES', () => { + const result = kitty.evaluate(createEvent({ key: 'Shift', code: 'ShiftLeft', shiftKey: true }), flags); + assert.strictEqual(result.key, undefined); + }); + + it('does not report modifier release without REPORT_ALL_KEYS_AS_ESCAPE_CODES', () => { + const result = kitty.evaluate(createEvent({ key: 'Shift', code: 'ShiftLeft', shiftKey: false }), flags, KittyKeyboardEventType.RELEASE); + assert.strictEqual(result.key, undefined); + }); + }); + describe('REPORT_ALL_KEYS_AS_ESCAPE_CODES flag', () => { const flags = KittyKeyboardFlags.REPORT_ALL_KEYS_AS_ESCAPE_CODES; diff --git a/src/common/input/KittyKeyboard.ts b/src/common/input/KittyKeyboard.ts index c9db3dad..b296695c 100644 --- a/src/common/input/KittyKeyboard.ts +++ b/src/common/input/KittyKeyboard.ts @@ -418,7 +418,7 @@ export class KittyKeyboard { return result; } - if (isMod && !(flags & KittyKeyboardFlags.REPORT_ALL_KEYS_AS_ESCAPE_CODES) && !reportEventTypes) { + if (isMod && !(flags & KittyKeyboardFlags.REPORT_ALL_KEYS_AS_ESCAPE_CODES)) { return result; }