mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-21 03:04:28 +00:00
Add Kitty keyboard protocol support for Shift+Enter and other modifier keys
Enable the Kitty keyboard protocol on terminal start to receive enhanced key sequences that include modifier information. This fixes Shift+Enter not working in Ghostty, Kitty, WezTerm, and other modern terminals. Changes: - Enable Kitty protocol on start (\x1b[>1u), disable on stop (\x1b[<u) - Add centralized key definitions in packages/tui/src/keys.ts - Support both legacy and Kitty sequences for all modifier+key combos: - Shift+Enter, Alt+Enter for newlines - Shift+Tab for thinking level cycling - Ctrl+C, Ctrl+A, Ctrl+E, Ctrl+K, Ctrl+U, Ctrl+W, Ctrl+O, Ctrl+P, Ctrl+T - Alt+Backspace for word deletion - Export Keys constants and helper functions from @mariozechner/pi-tui
This commit is contained in:
parent
2f86c8bc3c
commit
4a4531f887
10 changed files with 182 additions and 47 deletions
|
|
@ -51,6 +51,12 @@ export class ProcessTerminal implements Terminal {
|
|||
// Enable bracketed paste mode - terminal will wrap pastes in \x1b[200~ ... \x1b[201~
|
||||
process.stdout.write("\x1b[?2004h");
|
||||
|
||||
// Enable Kitty keyboard protocol (disambiguate escape codes)
|
||||
// This makes terminals like Ghostty, Kitty, WezTerm send enhanced key sequences
|
||||
// e.g., Shift+Enter becomes \x1b[13;2u instead of just \r
|
||||
// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/
|
||||
process.stdout.write("\x1b[>1u");
|
||||
|
||||
// Set up event handlers
|
||||
process.stdin.on("data", this.inputHandler);
|
||||
process.stdout.on("resize", this.resizeHandler);
|
||||
|
|
@ -60,6 +66,9 @@ export class ProcessTerminal implements Terminal {
|
|||
// Disable bracketed paste mode
|
||||
process.stdout.write("\x1b[?2004l");
|
||||
|
||||
// Disable Kitty keyboard protocol (pop the flags we pushed)
|
||||
process.stdout.write("\x1b[<u");
|
||||
|
||||
// Remove event handlers
|
||||
if (this.inputHandler) {
|
||||
process.stdin.removeListener("data", this.inputHandler);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue