input.go

 1package tea
 2
 3import (
 4	uv "github.com/charmbracelet/ultraviolet"
 5)
 6
 7// translateInputEvent translates an input event into a Bubble Tea Msg.
 8func (p *Program) translateInputEvent(e uv.Event) Msg {
 9	switch e := e.(type) {
10	case uv.ClipboardEvent:
11		switch e.Selection {
12		case uv.SystemClipboard:
13			return ClipboardMsg(e.Content)
14		case uv.PrimaryClipboard:
15			return PrimaryClipboardMsg(e.Content)
16		}
17	case uv.ForegroundColorEvent:
18		return ForegroundColorMsg(e)
19	case uv.BackgroundColorEvent:
20		return BackgroundColorMsg(e)
21	case uv.CursorColorEvent:
22		return CursorColorMsg(e)
23	case uv.CursorPositionEvent:
24		return CursorPositionMsg(e)
25	case uv.FocusEvent:
26		return FocusMsg(e)
27	case uv.BlurEvent:
28		return BlurMsg(e)
29	case uv.KeyPressEvent:
30		return KeyPressMsg(e)
31	case uv.KeyReleaseEvent:
32		if !isWindows() || p.requestedEnhancements.keyReleases {
33			return KeyReleaseMsg(e)
34		}
35	case uv.MouseClickEvent:
36		return MouseClickMsg(e)
37	case uv.MouseMotionEvent:
38		return MouseMotionMsg(e)
39	case uv.MouseReleaseEvent:
40		return MouseReleaseMsg(e)
41	case uv.MouseWheelEvent:
42		return MouseWheelMsg(e)
43	case uv.PasteEvent:
44		return PasteMsg(e)
45	case uv.PasteStartEvent:
46		return PasteStartMsg(e)
47	case uv.PasteEndEvent:
48		return PasteEndMsg(e)
49	case uv.WindowSizeEvent:
50		return WindowSizeMsg(e)
51	case uv.CapabilityEvent:
52		return CapabilityMsg(e)
53	case uv.TerminalVersionEvent:
54		return TerminalVersionMsg(e)
55	case uv.KittyEnhancementsEvent:
56		return KeyboardEnhancementsMsg{
57			kittyFlags:      int(e),
58			modifyOtherKeys: p.activeEnhancements.modifyOtherKeys,
59		}
60	case uv.ModifyOtherKeysEvent:
61		return KeyboardEnhancementsMsg{
62			modifyOtherKeys: int(e),
63			kittyFlags:      p.activeEnhancements.kittyFlags,
64		}
65	}
66	return e
67}