4#ifndef FTXUI_COMPONENT_EVENT_HPP
5#define FTXUI_COMPONENT_EVENT_HPP
35struct FTXUI_EXPORT(COMPONENT) Event {
37 static Event Character(std::string_view);
38 static Event Character(
char);
39 static Event Character(
wchar_t);
40 static Event Special(std::string_view);
41 static Event Special(std::initializer_list<char>);
42 static Event Mouse(std::string_view, Mouse mouse);
43 static Event CursorPosition(std::string_view,
int x,
int y);
44 static Event CursorShape(std::string_view,
int shape);
45 static Event TerminalNameVersion(std::string_view,
48 static Event TerminalEmulator(std::string_view,
51 static Event TerminalCapabilities(std::string_view,
52 std::vector<int> capabilities);
55 static const Event ArrowLeft;
56 static const Event ArrowRight;
57 static const Event ArrowUp;
58 static const Event ArrowDown;
60 static const Event ArrowLeftCtrl;
61 static const Event ArrowRightCtrl;
62 static const Event ArrowUpCtrl;
63 static const Event ArrowDownCtrl;
66 static const Event Backspace;
67 static const Event Delete;
68 static const Event Return;
69 static const Event Escape;
70 static const Event Tab;
71 static const Event TabReverse;
74 static const Event Insert;
75 static const Event Home;
76 static const Event End;
77 static const Event PageUp;
78 static const Event PageDown;
81 static const Event F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
84 static const Event a, A, CtrlA, AltA, CtrlAltA;
85 static const Event b, B, CtrlB, AltB, CtrlAltB;
86 static const Event c, C, CtrlC, AltC, CtrlAltC;
87 static const Event d, D, CtrlD, AltD, CtrlAltD;
88 static const Event e, E, CtrlE, AltE, CtrlAltE;
89 static const Event f, F, CtrlF, AltF, CtrlAltF;
90 static const Event g, G, CtrlG, AltG, CtrlAltG;
91 static const Event h, H, CtrlH, AltH, CtrlAltH;
92 static const Event i, I, CtrlI, AltI, CtrlAltI;
93 static const Event j, J, CtrlJ, AltJ, CtrlAltJ;
94 static const Event k, K, CtrlK, AltK, CtrlAltK;
95 static const Event l, L, CtrlL, AltL, CtrlAltL;
96 static const Event m, M, CtrlM, AltM, CtrlAltM;
97 static const Event n, N, CtrlN, AltN, CtrlAltN;
98 static const Event o, O, CtrlO, AltO, CtrlAltO;
99 static const Event p, P, CtrlP, AltP, CtrlAltP;
100 static const Event q, Q, CtrlQ, AltQ, CtrlAltQ;
101 static const Event r, R, CtrlR, AltR, CtrlAltR;
102 static const Event s, S, CtrlS, AltS, CtrlAltS;
103 static const Event t, T, CtrlT, AltT, CtrlAltT;
104 static const Event u, U, CtrlU, AltU, CtrlAltU;
105 static const Event v, V, CtrlV, AltV, CtrlAltV;
106 static const Event w, W, CtrlW, AltW, CtrlAltW;
107 static const Event x, X, CtrlX, AltX, CtrlAltX;
108 static const Event
y, Y, CtrlY, AltY, CtrlAltY;
109 static const Event z, Z, CtrlZ, AltZ, CtrlAltZ;
112 static const Event Custom;
115 bool operator==(
const Event& other)
const {
return input_ == other.input_; }
116 bool operator!=(
const Event& other)
const {
return !operator==(other); }
117 bool operator<(
const Event& other)
const {
return input_ < other.input_; }
119 const std::string& input()
const {
return input_; }
121 bool is_character()
const {
return type_ == Type::Character; }
122 std::string character()
const {
return input_; }
124 bool is_mouse()
const {
return type_ == Type::Mouse; }
125 struct Mouse& mouse() {
return data_.mouse; }
128 bool is_cursor_position()
const {
return type_ == Type::CursorPosition; }
129 int cursor_x()
const {
return data_.cursor.x; }
130 int cursor_y()
const {
return data_.cursor.y; }
132 bool is_cursor_shape()
const {
return type_ == Type::CursorShape; }
133 int cursor_shape()
const {
return data_.cursor_shape; }
135 bool IsTerminalNameVersion()
const;
136 const std::string& TerminalName()
const;
137 int TerminalVersion()
const;
139 bool IsTerminalEmulator()
const;
140 const std::string& TerminalEmulatorName()
const;
141 const std::string& TerminalEmulatorVersion()
const;
143 bool IsTerminalCapabilities()
const;
144 const std::vector<int>& TerminalCapabilities()
const;
145 std::vector<std::string> TerminalCapabilityNames()
const;
148 std::string DebugString()
const;
151 App* screen_ =
nullptr;
154 friend ComponentBase;
156 enum class Type : uint8_t {
164 TerminalCapabilities,
166 Type type_ = Type::Unknown;
174 struct Cursor cursor;
176 int terminal_version;
180 std::shared_ptr<std::string> terminal_name_;
181 std::shared_ptr<std::string> terminal_emulator_version_;
182 std::shared_ptr<std::vector<int>> terminal_capabilities_;
The FTXUI ftxui:: namespace.