aboutsummaryrefslogtreecommitdiff
path: root/ttwhy/terminal/events.cppm
diff options
context:
space:
mode:
Diffstat (limited to 'ttwhy/terminal/events.cppm')
-rw-r--r--ttwhy/terminal/events.cppm38
1 files changed, 36 insertions, 2 deletions
diff --git a/ttwhy/terminal/events.cppm b/ttwhy/terminal/events.cppm
index ce4a7d5..5df397d 100644
--- a/ttwhy/terminal/events.cppm
+++ b/ttwhy/terminal/events.cppm
@@ -34,6 +34,31 @@ export namespace ttwhy::terminal
page_down,
};
+ //! Represents terminal function keys (F1 through F20).
+ enum struct function_key : std::uint8_t
+ {
+ f1,
+ f2,
+ f3,
+ f4,
+ f5,
+ f6,
+ f7,
+ f8,
+ f9,
+ f10,
+ f11,
+ f12,
+ f13,
+ f14,
+ f15,
+ f16,
+ f17,
+ f18,
+ f19,
+ f20,
+ };
+
//! Represents individual keyboard modifier keys.
enum struct modifier : std::uint8_t
{
@@ -138,14 +163,23 @@ export namespace ttwhy::terminal
char key{};
};
+ //! Represents a terminal function key event.
+ struct function_key_event
+ {
+ function_key key{};
+ modifier_set modifiers{};
+ };
+
//! Variant representing any input event produced by a terminal scanner.
- using input_event = std::variant<character_event, control_event, navigation_event, ctrl_chord_event>;
+ using input_event =
+ std::variant<character_event, control_event, navigation_event, ctrl_chord_event, function_key_event>;
//! Validates that a sink can receive all terminal input event types.
//!
//! @tparam Sink The sink callable type to validate.
template<typename Sink>
concept event_sink = ttwhy::event_sink<Sink, character_event> && ttwhy::event_sink<Sink, control_event> &&
- ttwhy::event_sink<Sink, navigation_event>;
+ ttwhy::event_sink<Sink, navigation_event> && ttwhy::event_sink<Sink, ctrl_chord_event> &&
+ ttwhy::event_sink<Sink, function_key_event>;
} // namespace ttwhy::terminal