package tui import tea "charm.land/bubbletea/v2" // Bubble Tea v2 represents printable text and modifiers directly on Key. // keyCode keeps the state handlers focused on semantic key classes while the // application migrates from the v1 Type/Runes representation. const ( keyCtrlC rune = -10_001 - iota keyCtrlH keyCtrlV keyCtrlUp keyCtrlDown ) func keyCode(msg tea.KeyPressMsg) rune { switch msg.String() { case "ctrl+c": return keyCtrlC case "ctrl+h": return keyCtrlH case "ctrl+v": return keyCtrlV case "ctrl+up": return keyCtrlUp case "ctrl+down": return keyCtrlDown } key := msg.Key() if key.Text != "" { return tea.KeyExtended } return key.Code } func keyTextRunes(msg tea.KeyPressMsg) []rune { return []rune(msg.Key().Text) }