summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/tui/tui.go12
-rw-r--r--internal/tui/tui_test.go17
2 files changed, 29 insertions, 0 deletions
diff --git a/internal/tui/tui.go b/internal/tui/tui.go
index f1de224..f1c172b 100644
--- a/internal/tui/tui.go
+++ b/internal/tui/tui.go
@@ -15,6 +15,7 @@ import (
"ior/internal/tui/messages"
"ior/internal/tui/pidpicker"
"ior/internal/tui/probes"
+ "log"
"os"
"strings"
"sync"
@@ -175,6 +176,9 @@ type Model struct {
exportEnabled bool
isDark bool
focused bool
+
+ keyboardEnhancements tea.KeyboardEnhancementsMsg
+ keyboardEnhancementsKnown bool
}
// NewModel creates the top-level TUI model.
@@ -257,6 +261,13 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case tea.BackgroundColorMsg:
m.applyTheme(msg.IsDark())
return m, nil
+ case tea.KeyboardEnhancementsMsg:
+ m.keyboardEnhancements = msg
+ m.keyboardEnhancementsKnown = true
+ if msg.SupportsKeyDisambiguation() {
+ log.Printf("tui: keyboard enhancements enabled (flags=%d, eventTypes=%t)", msg.Flags, msg.SupportsEventTypes())
+ }
+ return m, nil
case tea.FocusMsg:
m.focused = true
m.dashboard.SetFocused(true)
@@ -696,5 +707,6 @@ func altScreenView(content string) tea.View {
view := tea.NewView(content)
view.AltScreen = true
view.ReportFocus = true
+ view.KeyboardEnhancements.ReportEventTypes = true
return view
}
diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go
index e705f41..156b876 100644
--- a/internal/tui/tui_test.go
+++ b/internal/tui/tui_test.go
@@ -640,3 +640,20 @@ func TestBlurPausesDashboardRefreshAndFocusResumesIt(t *testing.T) {
t.Fatalf("expected focus command to be a batch")
}
}
+
+func TestKeyboardEnhancementsMsgHandledGracefully(t *testing.T) {
+ m := NewModel(-1, func(context.Context) error { return nil })
+
+ next, cmd := m.Update(tea.KeyboardEnhancementsMsg{Flags: 1})
+ if cmd != nil {
+ t.Fatalf("expected no command when handling keyboard enhancements msg")
+ }
+
+ updated := next.(Model)
+ if !updated.keyboardEnhancementsKnown {
+ t.Fatalf("expected keyboard enhancements to be marked as known")
+ }
+ if !updated.keyboardEnhancements.SupportsKeyDisambiguation() {
+ t.Fatalf("expected non-zero flags to report key disambiguation support")
+ }
+}