From cad7944b929174afd99d0ad6134e7bdef2218645 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Thu, 30 Apr 2026 12:05:15 -0500 Subject: [PATCH] fix(tui): reset extended keyboard modes --- cli.py | 2 ++ ui-tui/src/__tests__/terminalModes.test.ts | 2 ++ ui-tui/src/lib/terminalModes.ts | 2 ++ 3 files changed, 6 insertions(+) diff --git a/cli.py b/cli.py index d5deded931..651824608a 100644 --- a/cli.py +++ b/cli.py @@ -1556,6 +1556,8 @@ _TERMINAL_INPUT_MODE_RESET_SEQ = ( "\x1b[?1004l" # disable focus events "\x1b[?2004l" # disable bracketed paste "\x1b[?1049l" # leave alt screen (if stuck there) + "\x1b[4m" # reset modifyOtherKeys "\x1b[0m" # reset text attributes "\x1b[?25h" # ensure cursor visible ) diff --git a/ui-tui/src/__tests__/terminalModes.test.ts b/ui-tui/src/__tests__/terminalModes.test.ts index 3eacdba55f..38ad8fe6a2 100644 --- a/ui-tui/src/__tests__/terminalModes.test.ts +++ b/ui-tui/src/__tests__/terminalModes.test.ts @@ -11,6 +11,8 @@ describe('terminal mode reset', () => { expect(TERMINAL_MODE_RESET).toContain('\x1b[?1004l') expect(TERMINAL_MODE_RESET).toContain('\x1b[?2004l') expect(TERMINAL_MODE_RESET).toContain('\x1b[?1049l') + expect(TERMINAL_MODE_RESET).toContain('\x1b[4m') }) it('writes reset sequence to TTY streams without fds', () => { diff --git a/ui-tui/src/lib/terminalModes.ts b/ui-tui/src/lib/terminalModes.ts index bf60b667e4..7add599892 100644 --- a/ui-tui/src/lib/terminalModes.ts +++ b/ui-tui/src/lib/terminalModes.ts @@ -8,6 +8,8 @@ export const TERMINAL_MODE_RESET = '\x1b[?1004l' + // focus events '\x1b[?2004l' + // bracketed paste '\x1b[?1049l' + // alternate screen + '\x1b[4m' + // modifyOtherKeys '\x1b[0m' + // attributes '\x1b[?25h' // cursor visible