26 KeyboardModifiers modifiers;
35 KeyboardVirtualKey virtualKey;
39 modifiers(KeyboardModifiers::None), virtualKey(KeyboardVirtualKey::Nul) {}
41 constexpr KeyboardKey(KeyboardModifiers modifiers, KeyboardVirtualKey key) noexcept :
42 modifiers(modifiers), virtualKey(key) {}
45 modifiers(KeyboardModifiers::None), virtualKey(KeyboardVirtualKey::Nul)
47 ttlet modifiers_and_vkey = split(key_combination,
'+');
48 tt_assert(modifiers_and_vkey.cbegin() != modifiers_and_vkey.cend());
50 ttlet end_modifiers = modifiers_and_vkey.cend() - 1;
51 for (
auto i = modifiers_and_vkey.cbegin(); i != end_modifiers; ++i) {
52 modifiers |= to_KeyboardModifiers(*i);
55 virtualKey = to_KeyboardVirtualKey(modifiers_and_vkey.back());
58 size_t hash()
const noexcept {
59 return hash_mix(modifiers, virtualKey);
63 return lhs.modifiers == rhs.modifiers && lhs.virtualKey == rhs.virtualKey;
70 return fmt::format(
"{}{}", rhs.modifiers, rhs.virtualKey);
74 return lhs << to_string(rhs);