15 class CLASS_DECL_ACME keyboard_state :
16 virtual public ::particle,
17 virtual public ::user::key_state
24 ::key::enum_state m_estateaKey[::user::e_key_count];
28 keyboard_state(
const keyboard_state & keyboardstate) =
delete;
29 ~keyboard_state()
override;
32 keyboard_state & operator = (
const keyboard_state &keyboardstate) =
delete;
35 virtual void initialize_keyboard_state();
37 void destroy()
override;
41 virtual ::user::key_state key_state()
const;
42 virtual void defer_update_key_state_with_mouse_message(::user::mouse * pmouse);
45 void set_key_state(const ::user::e_key & ekey, ::key::enum_state estate) {
46 m_estateaKey[(::i32) ekey] = estate;
48 void set_key_pressed(const ::user::e_key & ekey,
bool bPressed) {
50 set_key_state(ekey, ::key::e_state_pressed);
52 set_key_state(ekey,::key::e_state_none);
54 ::key::enum_state _key_state(const ::user::e_key & ekey)
const {
55 return m_estateaKey[(::i32) ekey];
57 bool is_key_pressed(const ::user::e_key & ekey)
const
83 if (ekey == ::user::e_key_shift)
88 if (m_estateaKey[::user::e_key_shift] != ::key::e_state_none)
91 if (m_estateaKey[::user::e_key_left_shift] != ::key::e_state_none)
94 if (m_estateaKey[::user::e_key_right_shift] != ::key::e_state_none)
98 else if (ekey == ::user::e_key_command
100 || ekey == ::user::e_key_system_command
105 if (m_estateaKey[::user::e_key_command] != ::key::e_state_none)
108 if (m_estateaKey[::user::e_key_left_command] != ::key::e_state_none)
111 if (m_estateaKey[::user::e_key_right_command] != ::key::e_state_none)
115 else if (ekey == ::user::e_key_control
117 || ekey == ::user::e_key_system_command
122 if (m_estateaKey[::user::e_key_control] != ::key::e_state_none)
125 if (m_estateaKey[::user::e_key_left_control] != ::key::e_state_none)
128 if (m_estateaKey[::user::e_key_right_control] != ::key::e_state_none)
132 else if (ekey == ::user::e_key_alt)
135 if (m_estateaKey[::user::e_key_alt] != ::key::e_state_none)
138 if (m_estateaKey[::user::e_key_left_alt] != ::key::e_state_none)
141 if (m_estateaKey[::user::e_key_right_alt] != ::key::e_state_none)
148 return m_estateaKey[(::i32) ekey] != ::key::e_state_none;