Added Home, End, PageUp, PageDown events.

Added handling for Home and End for input component
This commit is contained in:
d 2021-03-28 02:01:04 +02:00 committed by Arthur Sonzogni
parent a6c692edcf
commit 160b1c8bbc
3 changed files with 22 additions and 0 deletions

View File

@ -44,6 +44,12 @@ struct Event {
static const Event TabReverse;
static const Event F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
static const Event Home;
static const Event End;
static const Event PageUp;
static const Event PageDown;
// --- Custom ---
static Event Custom;
@ -53,6 +59,7 @@ struct Event {
const std::string& input() const { return input_; }
bool operator==(const Event& other) const { return input_ == other.input_; }
bool operator!=(const Event& other) const { return !operator==(other); }
//--- State section ----------------------------------------------------------
private:

View File

@ -62,6 +62,11 @@ const Event Event::F9 = Event::Special("\x1B[20~");
const Event Event::F10 = Event::Special("\x1B[21~");
const Event Event::F11 = Event::Special("\x1B[21~"); // Doesn't exist
const Event Event::F12 = Event::Special("\x1B[24~");
const Event Event::Home = Event::Special({27, 91, 72});
const Event Event::End = Event::Special({27, 91, 70});
const Event Event::PageUp = Event::Special({27, 91, 53, 126});
const Event Event::PageDown = Event::Special({27, 91, 54, 126});
Event Event::Custom = Event::Special({0});
} // namespace ftxui

View File

@ -85,6 +85,16 @@ bool Input::OnEvent(Event event) {
return true;
}
if (event == Event::Home) {
cursor_position = 0;
return true;
}
if (event == Event::End) {
cursor_position = (int)content.size();
return true;
}
// Content
if (event.is_character()) {
content.insert(cursor_position, 1, event.character());