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;
65 static const Event ArrowLeftAlt;
66 static const Event ArrowRightAlt;
67 static const Event ArrowUpAlt;
68 static const Event ArrowDownAlt;
71 static const Event Backspace;
72 static const Event BackspaceAlt;
73 static const Event AltBackspace;
74 static const Event Delete;
75 static const Event DeleteAlt;
76 static const Event DeleteCtrl;
77 static const Event Return;
78 static const Event Escape;
79 static const Event Tab;
80 static const Event TabReverse;
83 static const Event Insert;
84 static const Event Home;
85 static const Event End;
86 static const Event PageUp;
87 static const Event PageDown;
93 static const Event F1;
94 static const Event F2;
95 static const Event F3;
96 static const Event F4;
97 static const Event F5;
98 static const Event F6;
99 static const Event F7;
100 static const Event F8;
101 static const Event F9;
102 static const Event F10;
103 static const Event F11;
104 static const Event F12;
107 static const Event a;
108 static const Event A;
109 static const Event CtrlA;
110 static const Event AltA;
111 static const Event CtrlAltA;
112 static const Event b;
113 static const Event B;
114 static const Event CtrlB;
115 static const Event AltB;
116 static const Event CtrlAltB;
117 static const Event c;
118 static const Event C;
119 static const Event CtrlC;
120 static const Event AltC;
121 static const Event CtrlAltC;
122 static const Event d;
123 static const Event D;
124 static const Event CtrlD;
125 static const Event AltD;
126 static const Event CtrlAltD;
127 static const Event e;
128 static const Event E;
129 static const Event CtrlE;
130 static const Event AltE;
131 static const Event CtrlAltE;
132 static const Event f;
133 static const Event F;
134 static const Event CtrlF;
135 static const Event AltF;
136 static const Event CtrlAltF;
137 static const Event g;
138 static const Event G;
139 static const Event CtrlG;
140 static const Event AltG;
141 static const Event CtrlAltG;
142 static const Event h;
143 static const Event H;
144 static const Event CtrlH;
145 static const Event AltH;
146 static const Event CtrlAltH;
147 static const Event i;
148 static const Event I;
149 static const Event CtrlI;
150 static const Event AltI;
151 static const Event CtrlAltI;
152 static const Event j;
153 static const Event J;
154 static const Event CtrlJ;
155 static const Event AltJ;
156 static const Event CtrlAltJ;
157 static const Event k;
158 static const Event K;
159 static const Event CtrlK;
160 static const Event AltK;
161 static const Event CtrlAltK;
162 static const Event l;
163 static const Event L;
164 static const Event CtrlL;
165 static const Event AltL;
166 static const Event CtrlAltL;
167 static const Event m;
168 static const Event M;
169 static const Event CtrlM;
170 static const Event AltM;
171 static const Event CtrlAltM;
172 static const Event n;
173 static const Event N;
174 static const Event CtrlN;
175 static const Event AltN;
176 static const Event CtrlAltN;
177 static const Event o;
178 static const Event O;
179 static const Event CtrlO;
180 static const Event AltO;
181 static const Event CtrlAltO;
182 static const Event p;
183 static const Event P;
184 static const Event CtrlP;
185 static const Event AltP;
186 static const Event CtrlAltP;
187 static const Event q;
188 static const Event Q;
189 static const Event CtrlQ;
190 static const Event AltQ;
191 static const Event CtrlAltQ;
192 static const Event r;
193 static const Event R;
194 static const Event CtrlR;
195 static const Event AltR;
196 static const Event CtrlAltR;
197 static const Event s;
198 static const Event S;
199 static const Event CtrlS;
200 static const Event AltS;
201 static const Event CtrlAltS;
202 static const Event t;
203 static const Event T;
204 static const Event CtrlT;
205 static const Event AltT;
206 static const Event CtrlAltT;
207 static const Event u;
208 static const Event U;
209 static const Event CtrlU;
210 static const Event AltU;
211 static const Event CtrlAltU;
212 static const Event v;
213 static const Event V;
214 static const Event CtrlV;
215 static const Event AltV;
216 static const Event CtrlAltV;
217 static const Event w;
218 static const Event W;
219 static const Event CtrlW;
220 static const Event AltW;
221 static const Event CtrlAltW;
222 static const Event x;
223 static const Event X;
224 static const Event CtrlX;
225 static const Event AltX;
226 static const Event CtrlAltX;
227 static const Event
y;
228 static const Event Y;
229 static const Event CtrlY;
230 static const Event AltY;
231 static const Event CtrlAltY;
232 static const Event z;
233 static const Event Z;
234 static const Event CtrlZ;
235 static const Event AltZ;
236 static const Event CtrlAltZ;
239 static const Event Custom;
242 bool operator==(
const Event& other)
const {
return input_ == other.input_; }
243 bool operator!=(
const Event& other)
const {
return !operator==(other); }
244 bool operator<(
const Event& other)
const {
return input_ < other.input_; }
246 const std::string& input()
const {
return input_; }
248 bool is_character()
const {
return type_ == Type::Character; }
249 std::string character()
const {
return input_; }
251 bool is_mouse()
const {
return type_ == Type::Mouse; }
252 struct Mouse& mouse() {
return data_.mouse; }
255 bool is_cursor_position()
const {
return type_ == Type::CursorPosition; }
256 int cursor_x()
const {
return data_.cursor.x; }
257 int cursor_y()
const {
return data_.cursor.y; }
259 bool is_cursor_shape()
const {
return type_ == Type::CursorShape; }
260 int cursor_shape()
const {
return data_.cursor_shape; }
262 bool IsTerminalNameVersion()
const;
263 const std::string& TerminalName()
const;
264 int TerminalVersion()
const;
266 bool IsTerminalEmulator()
const;
267 const std::string& TerminalEmulatorName()
const;
268 const std::string& TerminalEmulatorVersion()
const;
270 bool IsTerminalCapabilities()
const;
271 const std::vector<int>& TerminalCapabilities()
const;
272 std::vector<std::string> TerminalCapabilityNames()
const;
275 std::string DebugString()
const;
278 App* screen_ =
nullptr;
281 friend ComponentBase;
283 enum class Type : uint8_t {
291 TerminalCapabilities,
293 Type type_ = Type::Unknown;
301 struct Cursor cursor;
303 int terminal_version;
307 std::shared_ptr<std::string> terminal_name_;
308 std::shared_ptr<std::string> terminal_emulator_version_;
309 std::shared_ptr<std::vector<int>> terminal_capabilities_;
The FTXUI ftxui:: namespace.