23 keyboard_modifiers modifiers;
32 keyboard_virtual_key virtualKey;
36 modifiers(keyboard_modifiers::None), virtualKey(keyboard_virtual_key::Nul) {}
38 constexpr keyboard_key(keyboard_modifiers modifiers, keyboard_virtual_key key) noexcept :
39 modifiers(modifiers), virtualKey(key) {}
42 modifiers(keyboard_modifiers::None), virtualKey(keyboard_virtual_key::Nul)
44 ttlet modifiers_and_vkey = split(key_combination,
'+');
45 tt_assert(modifiers_and_vkey.cbegin() != modifiers_and_vkey.cend());
47 ttlet end_modifiers = modifiers_and_vkey.cend() - 1;
48 for (
auto i = modifiers_and_vkey.cbegin(); i != end_modifiers; ++i) {
49 modifiers |= to_keyboard_modifiers(*i);
52 virtualKey = to_keyboard_virtual_key(modifiers_and_vkey.back());
55 size_t hash()
const noexcept {
56 return hash_mix(modifiers, virtualKey);
60 return lhs.modifiers == rhs.modifiers && lhs.virtualKey == rhs.virtualKey;
67 return fmt::format(
"{}{}", rhs.modifiers, rhs.virtualKey);
71 return lhs << to_string(rhs);