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}