diff --git a/tools/cmd/at/tty_io.go b/tools/cmd/at/tty_io.go index 6fb63408f..9ef837a5b 100644 --- a/tools/cmd/at/tty_io.go +++ b/tools/cmd/at/tty_io.go @@ -26,7 +26,7 @@ func is_stream_response(serialized_response []byte) bool { func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error) { serialized_response = make([]byte, 0) - lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors) + lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.OnlyDisambiguateKeys) if err != nil { return } diff --git a/tools/tui/loop/api.go b/tools/tui/loop/api.go index cae026281..c8395f980 100644 --- a/tools/tui/loop/api.go +++ b/tools/tui/loop/api.go @@ -124,6 +124,15 @@ func NoAlternateScreen(self *Loop) { self.terminal_options.alternate_screen = false } +func (self *Loop) OnlyDisambiguateKeys() *Loop { + self.terminal_options.kitty_keyboard_mode = 0b1 + return self +} + +func OnlyDisambiguateKeys(self *Loop) { + self.terminal_options.kitty_keyboard_mode = 0b1 +} + func (self *Loop) MouseTrackingMode(mt MouseTracking) *Loop { self.terminal_options.mouse_tracking = mt return self diff --git a/tools/tui/loop/run.go b/tools/tui/loop/run.go index 0d37b18bf..d0dfd91da 100644 --- a/tools/tui/loop/run.go +++ b/tools/tui/loop/run.go @@ -24,7 +24,7 @@ func new_loop() *Loop { l := Loop{controlling_term: nil, timers_temp: make([]*timer, 4)} l.terminal_options.alternate_screen = true l.terminal_options.restore_colors = true - l.terminal_options.kitty_keyboard_mode = true + l.terminal_options.kitty_keyboard_mode = 0b11111 l.escape_code_parser.HandleCSI = l.handle_csi l.escape_code_parser.HandleOSC = l.handle_osc l.escape_code_parser.HandleDCS = l.handle_dcs diff --git a/tools/tui/loop/terminal-state.go b/tools/tui/loop/terminal-state.go index 5684c7d59..d4bdc97ff 100644 --- a/tools/tui/loop/terminal-state.go +++ b/tools/tui/loop/terminal-state.go @@ -84,8 +84,9 @@ const ( ) type TerminalStateOptions struct { - alternate_screen, kitty_keyboard_mode, restore_colors bool - mouse_tracking MouseTracking + alternate_screen, restore_colors bool + mouse_tracking MouseTracking + kitty_keyboard_mode int } func set_modes(sb *strings.Builder, modes ...Mode) { @@ -120,8 +121,8 @@ func (self *TerminalStateOptions) SetStateEscapeCodes() string { set_modes(&sb, ALTERNATE_SCREEN) sb.WriteString(CLEAR_SCREEN) } - if self.kitty_keyboard_mode { - sb.WriteString("\033[>31u") + if self.kitty_keyboard_mode > 0 { + sb.WriteString(fmt.Sprintf("\033[>%du", self.kitty_keyboard_mode)) } else { sb.WriteString("\033[>u") }