acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
keyboard_state.h
1// Created by camilo on 2023-11-14 14:37 <3ThomasBorregaardSorensen!!
2// To keyboard_state.h by camilo on 2023-11-14 18:10 <3ThomasBorregaardSørensen!! Mummi!! Bilbo!!
3#pragma once
4
5
6#include "acme/constant/user_key.h"
7#include "acme/user/key/state.h"
8#include "acme/user/user/key_state.h"
9
10
11namespace user
12{
13
14
15 class CLASS_DECL_ACME keyboard_state :
16 virtual public ::particle,
17 virtual public ::user::key_state
18 {
19 public:
20
21
22 //::pointer<::map<::user::enum_key, bool>> m_pmapKeyPressed;
23
24 ::key::enum_state m_estateaKey[::user::e_key_count];
25
26
27 keyboard_state();
28 keyboard_state(const keyboard_state & keyboardstate) = delete;
29 ~keyboard_state() override;
30
31
32 keyboard_state & operator = (const keyboard_state &keyboardstate) = delete;
33
34
35 virtual void initialize_keyboard_state();
36
37 void destroy() override;
38
39
40 //virtual bool is_key_pressed(const ::user::e_key & ekey) const;
41 virtual ::user::key_state key_state() const;
42 virtual void defer_update_key_state_with_mouse_message(::user::mouse * pmouse);
43
44 //virtual void set_key_pressed(const ::user::e_key & ekey, bool bPressed);
45 void set_key_state(const ::user::e_key & ekey, ::key::enum_state estate) {
46 m_estateaKey[(::i32) ekey] = estate;
47 }
48 void set_key_pressed(const ::user::e_key & ekey, bool bPressed) {
49 if (bPressed)
50 set_key_state(ekey, ::key::e_state_pressed);
51 else
52 set_key_state(ekey,::key::e_state_none);
53 }
54 ::key::enum_state _key_state(const ::user::e_key & ekey) const {
55 return m_estateaKey[(::i32) ekey];
56 }
57 bool is_key_pressed(const ::user::e_key & ekey) const
58 {
59
60 // _synchronous_lock(this->synchronization(), DEFAULT_SYNCHRONOUS_LOCK_SUFFIX);
61 //
62 // {
63 //
64 // bool bPressed = false;
65 //
66 // if (node()->is_key_pressed(&bPressed, ekey))
67 // {
68 //
69 // return bPressed;
70 // }
71 // }
72 //
73 // _synchronous_lock synchronouslock(this->synchronization(), DEFAULT_SYNCHRONOUS_LOCK_SUFFIX);
74
75 //if (!m_pmapKeyPressed)
76 //{
77
78 // construct_newø(m_pmapKeyPressed);
79 //}
80
81 //bool bPressed = false;
82
83 if (ekey == ::user::e_key_shift)
84 {
85
86
87 //m_pmapKeyPressed->find(::user::e_key_shift, bPressed);
88 if (m_estateaKey[::user::e_key_shift] != ::key::e_state_none)
89 return true;
90 //m_pmapKeyPressed->find(::user::e_key_left_shift, bPressed);
91 if (m_estateaKey[::user::e_key_left_shift] != ::key::e_state_none)
92 return true;
93 //m_pmapKeyPressed->find(::user::e_key_right_shift, bPressed);
94 if (m_estateaKey[::user::e_key_right_shift] != ::key::e_state_none)
95 return true;
96 return false;
97 }
98 else if (ekey == ::user::e_key_command
99#ifdef __APPLE__
100 || ekey == ::user::e_key_system_command
101#endif
102 )
103 {
104 //m_pmapKeyPressed->find(::user::e_key_command, bPressed);
105 if (m_estateaKey[::user::e_key_command] != ::key::e_state_none)
106 return true;
107 //m_pmapKeyPressed->find(::user::e_key_left_command, bPressed);
108 if (m_estateaKey[::user::e_key_left_command] != ::key::e_state_none)
109 return true;
110 //m_pmapKeyPressed->find(::user::e_key_right_command, bPressed);
111 if (m_estateaKey[::user::e_key_right_command] != ::key::e_state_none)
112 return true;
113 return false;
114 }
115 else if (ekey == ::user::e_key_control
116#ifndef __APPLE__
117 || ekey == ::user::e_key_system_command
118#endif
119 )
120 {
121 //m_pmapKeyPressed->find(::user::e_key_control, bPressed);
122 if (m_estateaKey[::user::e_key_control] != ::key::e_state_none)
123 return true;
124 //m_pmapKeyPressed->find(::user::e_key_left_control, bPressed);
125 if (m_estateaKey[::user::e_key_left_control] != ::key::e_state_none)
126 return true;
127 //m_pmapKeyPressed->find(::user::e_key_right_control, bPressed);
128 if (m_estateaKey[::user::e_key_right_control] != ::key::e_state_none)
129 return true;
130 return false;
131 }
132 else if (ekey == ::user::e_key_alt)
133 {
134 //m_pmapKeyPressed->find(::user::e_key_alt, bPressed);
135 if (m_estateaKey[::user::e_key_alt] != ::key::e_state_none)
136 return true;
137 //m_pmapKeyPressed->find(::user::e_key_left_alt, bPressed);
138 if (m_estateaKey[::user::e_key_left_alt] != ::key::e_state_none)
139 return true;
140 //m_pmapKeyPressed->find(::user::e_key_right_alt, bPressed);
141 if (m_estateaKey[::user::e_key_right_alt] != ::key::e_state_none)
142 return true;
143 return false;
144 }
145 else
146 {
147
148 return m_estateaKey[(::i32) ekey] != ::key::e_state_none;
149 //m_pmapKeyPressed->find(ekey, bPressed);
150 }
151
152 //ret:
153
154 // return bPressed;
155 }
156
157
158 };
159
160
161} // namespace user
162
163
164
Created by camilo on 2026-05-28 12:34 <3ThomasBorregaardSørensen!! Mummi!! Bilbo!!
Definition _.h:67