diff --git a/examples/keys.cpp b/examples/keys.cpp index e2304aa..dd60816 100644 --- a/examples/keys.cpp +++ b/examples/keys.cpp @@ -22,20 +22,17 @@ int main() { std::cout << rawterm::set_header(header) << std::flush; while (true) { - auto k = rawterm::process_keypress(); - if (k.has_value()) { - if (k.value() == rawterm::Key('q')) { - break; - } else { - auto key_value = k.value(); - std::string mods = "["; - while (!(key_value.mod.empty())) - mods += " " + rawterm::to_string(key_value.getMod()); - mods += " ]"; - - std::cout << "Key{ code: " << key_value.code << ", mods: " << mods - << ", raw: " << key_value.raw << "}\r\n"; - } + auto k = rawterm::wait_for_input(); + if (k == rawterm::Key('q')) { + break; + } else { + std::string mods = "["; + while (!(k.mod.empty())) + mods += " " + rawterm::to_string(k.getMod()); + mods += " ]"; + + std::cout << "Key{ code: " << k.code << ", mods: " << mods << ", raw: " << k.raw + << "}\r\n"; } } diff --git a/rawterm/core.cpp b/rawterm/core.cpp index 4f382c1..3745522 100644 --- a/rawterm/core.cpp +++ b/rawterm/core.cpp @@ -24,6 +24,10 @@ namespace rawterm { } // namespace detail + void Key::addMod(rawterm::Mod m) { + mod.push_back(m); + } + rawterm::Mod Key::getMod() { if (mod.empty()) { return rawterm::Mod::None; diff --git a/rawterm/core.h b/rawterm/core.h index be49a03..5e6c1f4 100644 --- a/rawterm/core.h +++ b/rawterm/core.h @@ -78,6 +78,7 @@ namespace rawterm { Key(char c, Mod m) : code(c), mod(std::deque {m}) {} Key(char c, Mod m, std::string r) : code(c), mod(std::deque {m}), raw(r) {} + void addMod(rawterm::Mod); [[nodiscard]] rawterm::Mod getMod(); [[nodiscard]] bool isCharInput(); [[nodiscard]] bool isValid();