From afedf1707aa21c9b3cc55d31e665ad3afbe71fc8 Mon Sep 17 00:00:00 2001 From: Aliou Diallo Date: Sun, 21 Dec 2025 12:06:57 +0100 Subject: [PATCH] feat(tui): add isCtrlG key detection --- packages/tui/src/index.ts | 1 + packages/tui/src/keys.ts | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/packages/tui/src/index.ts b/packages/tui/src/index.ts index fdf04af8..e09b5255 100644 --- a/packages/tui/src/index.ts +++ b/packages/tui/src/index.ts @@ -33,6 +33,7 @@ export { isCtrlC, isCtrlD, isCtrlE, + isCtrlG, isCtrlK, isCtrlLeft, isCtrlO, diff --git a/packages/tui/src/keys.ts b/packages/tui/src/keys.ts index d82a01ca..faa5e4d7 100644 --- a/packages/tui/src/keys.ts +++ b/packages/tui/src/keys.ts @@ -28,6 +28,7 @@ const CODEPOINTS = { c: 99, d: 100, e: 101, + g: 103, k: 107, o: 111, p: 112, @@ -160,6 +161,7 @@ export const Keys = { CTRL_C: kittySequence(CODEPOINTS.c, MODIFIERS.ctrl), CTRL_D: kittySequence(CODEPOINTS.d, MODIFIERS.ctrl), CTRL_E: kittySequence(CODEPOINTS.e, MODIFIERS.ctrl), + CTRL_G: kittySequence(CODEPOINTS.g, MODIFIERS.ctrl), CTRL_K: kittySequence(CODEPOINTS.k, MODIFIERS.ctrl), CTRL_O: kittySequence(CODEPOINTS.o, MODIFIERS.ctrl), CTRL_P: kittySequence(CODEPOINTS.p, MODIFIERS.ctrl), @@ -214,6 +216,7 @@ const RAW = { CTRL_C: "\x03", CTRL_D: "\x04", CTRL_E: "\x05", + CTRL_G: "\x07", CTRL_K: "\x0b", CTRL_O: "\x0f", CTRL_P: "\x10", @@ -256,6 +259,14 @@ export function isCtrlE(data: string): boolean { return data === RAW.CTRL_E || data === Keys.CTRL_E || matchesKittySequence(data, CODEPOINTS.e, MODIFIERS.ctrl); } +/** + * Check if input matches Ctrl+G (raw byte or Kitty protocol). + * Ignores lock key bits. + */ +export function isCtrlG(data: string): boolean { + return data === RAW.CTRL_G || data === Keys.CTRL_G || matchesKittySequence(data, CODEPOINTS.g, MODIFIERS.ctrl); +} + /** * Check if input matches Ctrl+K (raw byte or Kitty protocol). * Ignores lock key bits.