mFrame
載入中...
搜尋中...
無符合項目
Console.h
1
7#ifndef MFRAME_E546E396_90BE_4524_B978_27AD4C166A12
8#define MFRAME_E546E396_90BE_4524_B978_27AD4C166A12
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../lang/Character.h"
16#include "./../lang/Object.h"
17#include "./../lang/Updatable.h"
18#include "./../util/ElapsedTimer.h"
19
20//----------------------------------------------------------------------------------------
21
22/* ***************************************************************************************
23 * Namespace
24 */
25namespace ufm::util {
26 class Console;
27
28} // namespace ufm::util
29
30/* ***************************************************************************************
31 * Class/Interface/Struct/Enum
32 */
33
129 /* *************************************************************************************
130 * Class/Interface/Struct/Enum
131 */
132 public:
133 enum struct KeyControl : uint8;
134 enum struct KeyFunction : uint32;
135 struct Event;
136
137 /* *************************************************************************************
138 * Variable
139 */
140 public:
143
144 private:
146 ElapsedTimer vElapsedTimer;
148 ufm::lang::Readable& vReadable;
150 Console::Event* vEvent;
152 uint32 vSequence;
154 uint8 vIndex;
156 bool vEscaped;
158 bool vAlt;
160 bool vFunction;
161
162 /* *************************************************************************************
163 * Abstract Method
164 */
165
166 /* *************************************************************************************
167 * Construct Method
168 */
169 public:
177
181 virtual ~Console(void) override;
182
183 /* *************************************************************************************
184 * Operator Method
185 */
186 public:
193 inline operator ufm::lang::Readable&(void) {
194 return this->vReadable;
195 }
196
197 /* *************************************************************************************
198 * Override - ufm::lang::Updatable
199 */
200 public:
207 virtual void update(void) override;
208
209 /* *************************************************************************************
210 * Public Method
211 */
212 public:
219 return this->vReadable;
220 }
221
227 inline void setEvent(Console::Event* event) {
228 this->vEvent = event;
229 }
230
231 /* *************************************************************************************
232 * Protected Method
233 */
234
235 /* *************************************************************************************
236 * Private Method
237 */
238 private:
239 void wipe(void);
240
241 /* *************************************************************************************
242 * Static Variable
243 */
244
245 /* *************************************************************************************
246 * Static Method
247 */
248};
249
256 KEY_SOH = ufm::lang::Character::KEY_SOH, // 01
257 KEY_STX = ufm::lang::Character::KEY_STX, // 02
258 KEY_ETX = ufm::lang::Character::KEY_ETX, // 03
259 KEY_EOT = ufm::lang::Character::KEY_EOT, // 04
260 KEY_ENQ = ufm::lang::Character::KEY_ENQ, // 05
261 KEY_ACK = ufm::lang::Character::KEY_ACK, // 06
262 KEY_BEL = ufm::lang::Character::KEY_BEL, // 07
263 KEY_BS = ufm::lang::Character::KEY_BS, // 08
264 KEY_TAB = ufm::lang::Character::KEY_TAB, // 09
265 KEY_LF = ufm::lang::Character::KEY_LF, // 0A
266 KEY_VT = ufm::lang::Character::KEY_VT, // 0B
267 KEY_FF = ufm::lang::Character::KEY_FF, // 0C
268 KEY_CR = ufm::lang::Character::KEY_CR, // 0D
269 KEY_SO = ufm::lang::Character::KEY_SO, // 0E
270 KEY_SI = ufm::lang::Character::KEY_SI, // 0F
271 KEY_DLE = ufm::lang::Character::KEY_DLE, // 10
272 KEY_DC1 = ufm::lang::Character::KEY_DC1, // 11
273 KEY_DC2 = ufm::lang::Character::KEY_DC2, // 12
274 KEY_DC3 = ufm::lang::Character::KEY_DC3, // 13
275 KEY_DC4 = ufm::lang::Character::KEY_DC4, // 14
276 KEY_NAK = ufm::lang::Character::KEY_NAK, // 15
277 KEY_SYN = ufm::lang::Character::KEY_SYN, // 16
278 KEY_ETB = ufm::lang::Character::KEY_ETB, // 17
279 KEY_CAN = ufm::lang::Character::KEY_CAN, // 18
280 KEY_EM = ufm::lang::Character::KEY_EM, // 19
281 KEY_SUB = ufm::lang::Character::KEY_SUB, // 1A
282 KEY_ESC = ufm::lang::Character::KEY_ESC, // 1B
283 KEY_FS = ufm::lang::Character::KEY_FS, // 1C
284 KEY_GS = ufm::lang::Character::KEY_GS, // 1D
285 KEY_RS = ufm::lang::Character::KEY_RS, // 1E
286 KEY_US = ufm::lang::Character::KEY_US, // 1F
287 KEY_BACKSPAC = ufm::lang::Character::KEY_BACKSPACE // 7F
288};
289
296 KEY_F1 = 0x007E3131, // 1B 5B 31 31 7E
297 KEY_F2 = 0x007E3231, // 1B 5B 31 32 7E
298 KEY_F3 = 0x007E3331, // 1B 5B 31 33 7E
299 KEY_F4 = 0x007E3431, // 1B 5B 31 34 7E
300 KEY_F5 = 0x007E3531, // 1B 5B 31 35 7E
301 KEY_F6 = 0x007E3731, // 1B 5B 31 37 7E
302 KEY_F7 = 0x007E3831, // 1B 5B 31 38 7E
303 KEY_F8 = 0x007E3931, // 1B 5B 31 39 7E
304 KEY_F9 = 0x007E3032, // 1B 5B 32 30 7E
305 KEY_F10 = 0x007E3132, // 1B 5B 32 31 7E
306 KEY_F11 = 0x007E3332, // 1B 5B 32 33 7E
307 KEY_F12 = 0x007E3432, // 1B 5B 32 34 7E
308 KEY_HOME = 0x00007E31, // 1B 5B 31 7E
309 KEY_INSERT = 0x00007E32, // 1B 5B 32 7E
310 KEY_DELETE = 0x00007E33, // 1B 5B 33 7E
311 KEY_END = 0x00007E34, // 1B 5B 34 7E
312 KEY_PAGE_UP = 0x00007E35, // 1B 5B 35 7E
313 KEY_PAGE_DOWN = 0x00007E36, // 1B 5B 36 7E
314 KEY_UP = 0x00000041, // 1B 5B 41
315 KEY_DOWN = 0x00000042, // 1B 5B 42
316 KEY_RIGHT = 0x00000043, // 1B 5B 43
317 KEY_LEFT = 0x00000044 // 1B 5B 44
318
319};
320
327 /* *************************************************************************************
328 * Method
329 */
330
337 virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) abstract;
338
345 virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) abstract;
346
353 virtual void onKey(char key, bool alt) abstract;
354};
355
356/* ***************************************************************************************
357 * End of file
358 */
359
360#endif /* MFRAME_E546E396_90BE_4524_B978_27AD4C166A12 */
static constexpr char KEY_EOT
Definition Character.h:97
static constexpr char KEY_EM
Definition Character.h:118
static constexpr char KEY_LF
Definition Character.h:103
static constexpr char KEY_DC2
Definition Character.h:111
static constexpr char KEY_STX
Definition Character.h:95
static constexpr char KEY_SUB
Definition Character.h:119
static constexpr char KEY_SO
Definition Character.h:107
static constexpr char KEY_ETX
Definition Character.h:96
static constexpr char KEY_DC1
Definition Character.h:110
static constexpr char KEY_DC4
Definition Character.h:113
static constexpr char KEY_DLE
Definition Character.h:109
static constexpr char KEY_SYN
Definition Character.h:115
static constexpr char KEY_ESC
Definition Character.h:120
static constexpr char KEY_ETB
Definition Character.h:116
static constexpr char KEY_TAB
Definition Character.h:102
static constexpr char KEY_RS
Definition Character.h:123
static constexpr char KEY_SOH
Definition Character.h:94
static constexpr char KEY_ENQ
Definition Character.h:98
static constexpr char KEY_CR
Definition Character.h:106
static constexpr char KEY_VT
Definition Character.h:104
static constexpr char KEY_CAN
Definition Character.h:117
static constexpr char KEY_ACK
Definition Character.h:99
static constexpr char KEY_FS
Definition Character.h:121
static constexpr char KEY_GS
Definition Character.h:122
static constexpr char KEY_BEL
Definition Character.h:100
static constexpr char KEY_US
Definition Character.h:124
static constexpr char KEY_SI
Definition Character.h:108
static constexpr char KEY_BACKSPACE
Definition Character.h:125
static constexpr char KEY_FF
Definition Character.h:105
static constexpr char KEY_NAK
Definition Character.h:114
static constexpr char KEY_BS
Definition Character.h:101
static constexpr char KEY_DC3
Definition Character.h:112
物件基底類別
Definition Object.h:63
終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。
Definition Console.h:128
virtual void update(void) override
更新方法
KeyControl
控制鍵列舉
Definition Console.h:255
uint32 vEscapedTime
Escape 序列超時時間(毫秒),用於判斷 escape 序列結束。
Definition Console.h:142
KeyFunction
功能鍵列舉
Definition Console.h:295
void setEvent(Console::Event *event)
Set the Event object.
Definition Console.h:227
Console(ufm::lang::Readable &readable, Console::Event *event=nullptr) noexcept
建構 Console 物件
ufm::lang::Readable & readable(void)
Get the Readable object.
Definition Console.h:218
經過時間計時器,提供高精度的時間測量功能。
Definition ElapsedTimer.h:145
Definition Iterable.h:28
[Interface] 定義資料讀取介面
Definition Readable.h:46
[Interface] 定義可更新的物件介面
Definition Updatable.h:38
鍵盤事件處理介面
Definition Console.h:326
virtual void onKey(char key, bool alt) override
處理普通鍵事件
virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override
處理功能鍵事件
virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) override
處理鍵盤按鍵事件