FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
event.hpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui se trouve
3// dans le fichier LICENSE.
4#ifndef FTXUI_COMPONENT_EVENT_HPP
5#define FTXUI_COMPONENT_EVENT_HPP
6
7#include <ftxui/component/mouse.hpp> // for Mouse
8#include <string> // for string, operator==
9
10namespace ftxui {
11
12class ScreenInteractive;
13class ComponentBase;
14
15/// @brief Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal, ou plus encore...
16///
17/// Par exemple :
18/// - Un caractère imprimable peut être créé en utilisant Event::Character('a').
19/// - Certains événements spéciaux sont prédéfinis, comme Event::ArrowLeft.
20/// - On peut trouver un code arbitraire pour les événements spéciaux en utilisant :
21/// ./example/util/print_key_press
22/// Par exemple, CTLR+A correspond à Event::Special({1}) ;
23///
24/// Documentation utile sur la spécification xterm :
25/// https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
26///
27/// @ingroup component
28struct Event {
29 // --- Section Constructeur ---------------------------------------------------
30 static Event Character(std::string);
31 static Event Character(char);
32 static Event Character(wchar_t);
33 static Event Special(std::string);
34 static Event Mouse(std::string, Mouse mouse);
35 static Event CursorPosition(std::string, int x, int y); // Interne
36 static Event CursorShape(std::string, int shape); // Interne
37
38 // --- Flèche ---
39 static const Event ArrowLeft;
40 static const Event ArrowRight;
41 static const Event ArrowUp;
42 static const Event ArrowDown;
43
44 static const Event ArrowLeftCtrl;
45 static const Event ArrowRightCtrl;
46 static const Event ArrowUpCtrl;
47 static const Event ArrowDownCtrl;
48
49 // --- Autre ---
50 static const Event Backspace;
51 static const Event Delete;
52 static const Event Return;
53 static const Event Escape;
54 static const Event Tab;
55 static const Event TabReverse;
56
57 // --- Touches de navigation ---
58 static const Event Insert;
59 static const Event Home;
60 static const Event End;
61 static const Event PageUp;
62 static const Event PageDown;
63
64 // --- Touches de fonction ---
65 static const Event F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
66
67 // --- Touches de contrôle ---
68 static const Event a, A, CtrlA, AltA, CtrlAltA;
69 static const Event b, B, CtrlB, AltB, CtrlAltB;
70 static const Event c, C, CtrlC, AltC, CtrlAltC;
71 static const Event d, D, CtrlD, AltD, CtrlAltD;
72 static const Event e, E, CtrlE, AltE, CtrlAltE;
73 static const Event f, F, CtrlF, AltF, CtrlAltF;
74 static const Event g, G, CtrlG, AltG, CtrlAltG;
75 static const Event h, H, CtrlH, AltH, CtrlAltH;
76 static const Event i, I, CtrlI, AltI, CtrlAltI;
77 static const Event j, J, CtrlJ, AltJ, CtrlAltJ;
78 static const Event k, K, CtrlK, AltK, CtrlAltK;
79 static const Event l, L, CtrlL, AltL, CtrlAltL;
80 static const Event m, M, CtrlM, AltM, CtrlAltM;
81 static const Event n, N, CtrlN, AltN, CtrlAltN;
82 static const Event o, O, CtrlO, AltO, CtrlAltO;
83 static const Event p, P, CtrlP, AltP, CtrlAltP;
84 static const Event q, Q, CtrlQ, AltQ, CtrlAltQ;
85 static const Event r, R, CtrlR, AltR, CtrlAltR;
86 static const Event s, S, CtrlS, AltS, CtrlAltS;
87 static const Event t, T, CtrlT, AltT, CtrlAltT;
88 static const Event u, U, CtrlU, AltU, CtrlAltU;
89 static const Event v, V, CtrlV, AltV, CtrlAltV;
90 static const Event w, W, CtrlW, AltW, CtrlAltW;
91 static const Event x, X, CtrlX, AltX, CtrlAltX;
92 static const Event y, Y, CtrlY, AltY, CtrlAltY;
93 static const Event z, Z, CtrlZ, AltZ, CtrlAltZ;
94
95 // --- Personnalisé ---
96 static const Event Custom;
97
98 //--- Section Méthodes ---------------------------------------------------------
99 bool operator==(const Event& other) const { return input_ == other.input_; }
100 bool operator!=(const Event& other) const { return !operator==(other); }
101 bool operator<(const Event& other) const { return input_ < other.input_; }
102
103 const std::string& input() const { return input_; }
104
105 bool is_character() const { return type_ == Type::Character; }
106 std::string character() const { return input_; }
107
108 bool is_mouse() const { return type_ == Type::Mouse; }
109 struct Mouse& mouse() { return data_.mouse; }
110
111 // --- Section Méthodes Internes -----------------------------------------------
112 bool is_cursor_position() const { return type_ == Type::CursorPosition; }
113 int cursor_x() const { return data_.cursor.x; }
114 int cursor_y() const { return data_.cursor.y; }
115
116 bool is_cursor_shape() const { return type_ == Type::CursorShape; }
117 int cursor_shape() const { return data_.cursor_shape; }
118
119 // Débogage
120 std::string DebugString() const;
121
122 //--- Section État ----------------------------------------------------------
124
125 private:
126 friend ComponentBase;
127 friend ScreenInteractive;
128 enum class Type {
129 Unknown,
130 Character,
131 Mouse,
132 CursorPosition,
133 CursorShape,
134 };
135 Type type_ = Type::Unknown;
136
137 struct Cursor {
138 int x = 0;
139 int y = 0;
140 };
141
142 union {
143 struct Mouse mouse;
144 struct Cursor cursor;
146 } data_ = {};
147
148 std::string input_;
149};
150
151} // namespace ftxui
152
153#endif /* end of include guard: FTXUI_COMPONENT_EVENT_HPP */
static const Event TabReverse
Definition event.hpp:55
int cursor_shape() const
Definition event.hpp:117
static const Event j
Definition event.hpp:77
static const Event CtrlC
Definition event.hpp:70
static const Event CtrlP
Definition event.hpp:83
static const Event CtrlV
Definition event.hpp:89
static const Event ArrowLeftCtrl
Definition event.hpp:44
static const Event CtrlL
Definition event.hpp:79
static const Event AltT
Definition event.hpp:87
std::string character() const
Definition event.hpp:106
static const Event w
Definition event.hpp:90
static const Event CtrlAltX
Definition event.hpp:91
static const Event D
Definition event.hpp:71
static const Event CtrlAltN
Definition event.hpp:81
static const Event a
Definition event.hpp:68
static Event CursorShape(std::string, int shape)
Un événement correspondant à un DCS de terminal (Device Control String).
Definition event.cpp:63
static const Event AltH
Definition event.hpp:75
static const Event AltF
Definition event.hpp:73
static const Event K
Definition event.hpp:78
int cursor_y() const
Definition event.hpp:114
static const Event T
Definition event.hpp:87
static const Event CtrlAltC
Definition event.hpp:70
static const Event X
Definition event.hpp:91
int cursor_x() const
Definition event.hpp:113
static const Event CtrlE
Definition event.hpp:72
static const Event Q
Definition event.hpp:84
static const Event u
Definition event.hpp:88
static const Event PageUp
Definition event.hpp:61
static const Event h
Definition event.hpp:75
static const Event CtrlAltF
Definition event.hpp:73
static const Event CtrlZ
Definition event.hpp:93
static const Event J
Definition event.hpp:77
int cursor_shape
Definition event.hpp:145
static const Event CtrlU
Definition event.hpp:88
static const Event AltQ
Definition event.hpp:84
static const Event b
Definition event.hpp:69
static const Event Escape
Definition event.hpp:53
static const Event AltY
Definition event.hpp:92
static const Event CtrlAltI
Definition event.hpp:76
bool is_mouse() const
Definition event.hpp:108
static const Event AltL
Definition event.hpp:79
static const Event AltW
Definition event.hpp:90
static const Event F12
Definition event.hpp:65
struct Mouse & mouse()
Definition event.hpp:109
static const Event E
Definition event.hpp:72
static const Event m
Definition event.hpp:80
static const Event N
Definition event.hpp:81
bool is_cursor_position() const
Definition event.hpp:112
static const Event CtrlAltP
Definition event.hpp:83
static const Event CtrlAltE
Definition event.hpp:72
static const Event F5
Definition event.hpp:65
static const Event CtrlF
Definition event.hpp:73
static const Event F3
Definition event.hpp:65
static const Event CtrlAltJ
Definition event.hpp:77
static const Event z
Definition event.hpp:93
static const Event AltK
Definition event.hpp:78
static const Event B
Definition event.hpp:69
static const Event H
Definition event.hpp:75
static const Event CtrlX
Definition event.hpp:91
static const Event F9
Definition event.hpp:65
static const Event AltC
Definition event.hpp:70
static const Event CtrlB
Definition event.hpp:69
static const Event CtrlAltH
Definition event.hpp:75
static const Event O
Definition event.hpp:82
ScreenInteractive * screen_
Definition event.hpp:123
static const Event R
Definition event.hpp:85
static const Event AltM
Definition event.hpp:80
static const Event CtrlR
Definition event.hpp:85
static const Event CtrlAltW
Definition event.hpp:90
static const Event CtrlAltO
Definition event.hpp:82
static const Event CtrlY
Definition event.hpp:92
static const Event Custom
Definition event.hpp:96
static const Event A
Definition event.hpp:68
static const Event AltG
Definition event.hpp:74
static const Event p
Definition event.hpp:83
static const Event l
Definition event.hpp:79
static const Event CtrlH
Definition event.hpp:75
bool operator<(const Event &other) const
Definition event.hpp:101
struct Mouse mouse
Definition event.hpp:143
std::string DebugString() const
Renvoie une représentation textuelle de l'événement.
Definition event.cpp:91
static Event Character(std::string)
Un événement correspondant à un caractère tapé donné.
Definition event.cpp:28
static const Event AltO
Definition event.hpp:82
static const Event CtrlJ
Definition event.hpp:77
static const Event CtrlAltM
Definition event.hpp:80
static const Event CtrlS
Definition event.hpp:86
static const Event Z
Definition event.hpp:93
static const Event AltR
Definition event.hpp:85
static const Event CtrlW
Definition event.hpp:90
static const Event CtrlN
Definition event.hpp:81
static const Event F2
Definition event.hpp:65
static const Event CtrlM
Definition event.hpp:80
static const Event G
Definition event.hpp:74
static const Event Backspace
Definition event.hpp:50
static const Event d
Definition event.hpp:71
static const Event CtrlAltR
Definition event.hpp:85
static const Event CtrlK
Definition event.hpp:78
static const Event x
Definition event.hpp:91
static const Event F7
Definition event.hpp:65
static const Event ArrowUp
Definition event.hpp:41
const std::string & input() const
Definition event.hpp:103
static const Event Tab
Definition event.hpp:54
static const Event r
Definition event.hpp:85
static const Event AltU
Definition event.hpp:88
static const Event CtrlQ
Definition event.hpp:84
static const Event CtrlAltZ
Definition event.hpp:93
static const Event AltN
Definition event.hpp:81
static const Event AltA
Definition event.hpp:68
static const Event ArrowDown
Definition event.hpp:42
struct Cursor cursor
Definition event.hpp:144
static const Event End
Definition event.hpp:60
static const Event F11
Definition event.hpp:65
static const Event CtrlG
Definition event.hpp:74
static const Event n
Definition event.hpp:81
static const Event q
Definition event.hpp:84
static const Event AltZ
Definition event.hpp:93
static const Event Home
Definition event.hpp:59
static const Event C
Definition event.hpp:70
static const Event AltD
Definition event.hpp:71
static const Event CtrlAltY
Definition event.hpp:92
static const Event AltJ
Definition event.hpp:77
static const Event F8
Definition event.hpp:65
static const Event CtrlAltL
Definition event.hpp:79
static const Event U
Definition event.hpp:88
static const Event o
Definition event.hpp:82
static const Event AltB
Definition event.hpp:69
static const Event F4
Definition event.hpp:65
static const Event t
Definition event.hpp:87
static const Event y
Definition event.hpp:92
static const Event ArrowUpCtrl
Definition event.hpp:46
static const Event k
Definition event.hpp:78
static const Event CtrlAltS
Definition event.hpp:86
static const Event s
Definition event.hpp:86
static const Event I
Definition event.hpp:76
static const Event CtrlT
Definition event.hpp:87
static const Event F
Definition event.hpp:73
static const Event AltI
Definition event.hpp:76
static const Event F10
Definition event.hpp:65
static const Event AltP
Definition event.hpp:83
static const Event PageDown
Definition event.hpp:62
static const Event Y
Definition event.hpp:92
static const Event CtrlAltK
Definition event.hpp:78
static Event CursorPosition(std::string, int x, int y)
Definition event.cpp:82
static const Event F6
Definition event.hpp:65
static const Event CtrlAltG
Definition event.hpp:74
static const Event CtrlA
Definition event.hpp:68
static const Event i
Definition event.hpp:76
static const Event AltS
Definition event.hpp:86
static const Event g
Definition event.hpp:74
static const Event F1
Definition event.hpp:65
static const Event S
Definition event.hpp:86
static const Event Return
Definition event.hpp:52
static const Event CtrlAltU
Definition event.hpp:88
bool operator==(const Event &other) const
Definition event.hpp:99
static const Event V
Definition event.hpp:89
static const Event CtrlAltT
Definition event.hpp:87
static const Event CtrlAltA
Definition event.hpp:68
static const Event AltE
Definition event.hpp:72
static const Event P
Definition event.hpp:83
static const Event CtrlD
Definition event.hpp:71
static const Event ArrowLeft
Definition event.hpp:39
static const Event CtrlAltB
Definition event.hpp:69
bool operator!=(const Event &other) const
Definition event.hpp:100
static const Event AltV
Definition event.hpp:89
static const Event v
Definition event.hpp:89
static const Event e
Definition event.hpp:72
bool is_character() const
Definition event.hpp:105
static const Event CtrlO
Definition event.hpp:82
static const Event Delete
Definition event.hpp:51
static const Event CtrlAltV
Definition event.hpp:89
static const Event ArrowDownCtrl
Definition event.hpp:47
static const Event AltX
Definition event.hpp:91
static const Event CtrlAltD
Definition event.hpp:71
static const Event L
Definition event.hpp:79
static const Event W
Definition event.hpp:90
static const Event f
Definition event.hpp:73
static const Event Insert
Definition event.hpp:58
static const Event CtrlI
Definition event.hpp:76
static const Event ArrowRightCtrl
Definition event.hpp:45
bool is_cursor_shape() const
Definition event.hpp:116
static const Event c
Definition event.hpp:70
static const Event CtrlAltQ
Definition event.hpp:84
static const Event M
Definition event.hpp:80
static Event Special(std::string)
Un événement personnalisé dont la signification est définie par l'utilisateur de la bibliothèque.
Definition event.cpp:74
static const Event ArrowRight
Definition event.hpp:40
Il implémente son propre rendu en tant que ftxui::Element. Il implémente la navigation au clavier en ...
ScreenInteractive est un Screen qui peut gérer les événements, exécuter une boucle principale et gére...
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Definition event.hpp:28
Un événement de souris. Il contient les coordonnées de la souris, le bouton pressé et le modificateur...
Definition mouse.hpp:11
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10