4#ifndef FTXUI_COMPONENT_EVENT_HPP
5#define FTXUI_COMPONENT_EVENT_HPP
34struct FTXUI_EXPORT(COMPONENT) Event {
36 static Event Character(std::string_view);
37 static Event Character(
char);
38 static Event Character(
wchar_t);
39 static Event Special(std::string_view);
40 static Event Special(std::initializer_list<char>);
41 static Event Mouse(std::string_view, Mouse mouse);
42 static Event CursorPosition(std::string_view,
int x,
int y);
43 static Event CursorShape(std::string_view,
int shape);
44 static Event TerminalNameVersion(std::string_view,
47 static Event TerminalEmulator(std::string_view,
50 static Event TerminalCapabilities(std::string_view,
51 std::vector<int> capabilities);
54 static const Event ArrowLeft;
55 static const Event ArrowRight;
56 static const Event ArrowUp;
57 static const Event ArrowDown;
59 static const Event ArrowLeftCtrl;
60 static const Event ArrowRightCtrl;
61 static const Event ArrowUpCtrl;
62 static const Event ArrowDownCtrl;
65 static const Event Backspace;
66 static const Event Delete;
67 static const Event Return;
68 static const Event Escape;
69 static const Event Tab;
70 static const Event TabReverse;
73 static const Event Insert;
74 static const Event Home;
75 static const Event End;
76 static const Event PageUp;
77 static const Event PageDown;
80 static const Event F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
83 static const Event a, A, CtrlA, AltA, CtrlAltA;
84 static const Event b, B, CtrlB, AltB, CtrlAltB;
85 static const Event c, C, CtrlC, AltC, CtrlAltC;
86 static const Event d, D, CtrlD, AltD, CtrlAltD;
87 static const Event e, E, CtrlE, AltE, CtrlAltE;
88 static const Event f, F, CtrlF, AltF, CtrlAltF;
89 static const Event g, G, CtrlG, AltG, CtrlAltG;
90 static const Event h, H, CtrlH, AltH, CtrlAltH;
91 static const Event i, I, CtrlI, AltI, CtrlAltI;
92 static const Event j, J, CtrlJ, AltJ, CtrlAltJ;
93 static const Event k, K, CtrlK, AltK, CtrlAltK;
94 static const Event l, L, CtrlL, AltL, CtrlAltL;
95 static const Event m, M, CtrlM, AltM, CtrlAltM;
96 static const Event n, N, CtrlN, AltN, CtrlAltN;
97 static const Event o, O, CtrlO, AltO, CtrlAltO;
98 static const Event p, P, CtrlP, AltP, CtrlAltP;
99 static const Event q, Q, CtrlQ, AltQ, CtrlAltQ;
100 static const Event r, R, CtrlR, AltR, CtrlAltR;
101 static const Event s, S, CtrlS, AltS, CtrlAltS;
102 static const Event t, T, CtrlT, AltT, CtrlAltT;
103 static const Event u, U, CtrlU, AltU, CtrlAltU;
104 static const Event v, V, CtrlV, AltV, CtrlAltV;
105 static const Event w, W, CtrlW, AltW, CtrlAltW;
106 static const Event x, X, CtrlX, AltX, CtrlAltX;
107 static const Event
y, Y, CtrlY, AltY, CtrlAltY;
108 static const Event z, Z, CtrlZ, AltZ, CtrlAltZ;
111 static const Event Custom;
114 bool operator==(
const Event& other)
const {
return input_ == other.input_; }
115 bool operator!=(
const Event& other)
const {
return !operator==(other); }
116 bool operator<(
const Event& other)
const {
return input_ < other.input_; }
118 const std::string& input()
const {
return input_; }
120 bool is_character()
const {
return type_ == Type::Character; }
121 std::string character()
const {
return input_; }
123 bool is_mouse()
const {
return type_ == Type::Mouse; }
124 struct Mouse& mouse() {
return data_.mouse; }
127 bool is_cursor_position()
const {
return type_ == Type::CursorPosition; }
128 int cursor_x()
const {
return data_.cursor.x; }
129 int cursor_y()
const {
return data_.cursor.y; }
131 bool is_cursor_shape()
const {
return type_ == Type::CursorShape; }
132 int cursor_shape()
const {
return data_.cursor_shape; }
134 bool IsTerminalNameVersion()
const;
135 const std::string& TerminalName()
const;
136 int TerminalVersion()
const;
138 bool IsTerminalEmulator()
const;
139 const std::string& TerminalEmulatorName()
const;
140 const std::string& TerminalEmulatorVersion()
const;
142 bool IsTerminalCapabilities()
const;
143 const std::vector<int>& TerminalCapabilities()
const;
144 std::vector<std::string> TerminalCapabilityNames()
const;
147 std::string DebugString()
const;
150 App* screen_ =
nullptr;
153 friend ComponentBase;
163 TerminalCapabilities,
165 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.