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
42 /* *************************************************************************************
43 * Class/Interface/Struct/Enum
44 */
45 public:
46 enum struct KeyControl : uint8;
47 enum struct KeyFunction : uint32;
48 struct Event;
49
50 /* *************************************************************************************
51 * Variable
52 */
53 public:
54 uint32 vEscapedTime;
55
56 private:
57 ElapsedTimer vElapsedTimer;
58 ufm::lang::Readable& vReadable;
59 Console::Event* vEvent;
60 uint32 vSequence;
61 uint8 vIndex;
62 bool vEscaped;
63 bool vAlt;
64 bool vFunction;
65
66 /* *************************************************************************************
67 * Abstract Method
68 */
69
70 /* *************************************************************************************
71 * Construct Method
72 */
73 public:
80 Console(ufm::lang::Readable& readable, Console::Event* event = nullptr) noexcept;
81
85 virtual ~Console(void) override;
86
87 /* *************************************************************************************
88 * Operator Method
89 */
90 public:
97 inline operator ufm::lang::Readable&(void) {
98 return this->vReadable;
99 }
100
101 /* *************************************************************************************
102 * Override - ufm::lang::Updatable
103 */
104 public:
111 virtual void update(void) override;
112
113 /* *************************************************************************************
114 * Public Method
115 */
116 public:
123 return this->vReadable;
124 }
125
131 inline void setEvent(Console::Event* event) {
132 this->vEvent = event;
133 }
134
135 /* *************************************************************************************
136 * Protected Method
137 */
138
139 /* *************************************************************************************
140 * Private Method
141 */
142 private:
143 void wipe(void);
144
145 /* *************************************************************************************
146 * Static Variable
147 */
148
149 /* *************************************************************************************
150 * Static Method
151 */
152};
153
160 KEY_SOH = ufm::lang::Character::KEY_SOH, // 01
161 KEY_STX = ufm::lang::Character::KEY_STX, // 02
162 KEY_ETX = ufm::lang::Character::KEY_ETX, // 03
163 KEY_EOT = ufm::lang::Character::KEY_EOT, // 04
164 KEY_ENQ = ufm::lang::Character::KEY_ENQ, // 05
165 KEY_ACK = ufm::lang::Character::KEY_ACK, // 06
166 KEY_BEL = ufm::lang::Character::KEY_BEL, // 07
167 KEY_BS = ufm::lang::Character::KEY_BS, // 08
168 KEY_TAB = ufm::lang::Character::KEY_TAB, // 09
169 KEY_LF = ufm::lang::Character::KEY_LF, // 0A
170 KEY_VT = ufm::lang::Character::KEY_VT, // 0B
171 KEY_FF = ufm::lang::Character::KEY_FF, // 0C
172 KEY_CR = ufm::lang::Character::KEY_CR, // 0D
173 KEY_SO = ufm::lang::Character::KEY_SO, // 0E
174 KEY_SI = ufm::lang::Character::KEY_SI, // 0F
175 KEY_DLE = ufm::lang::Character::KEY_DLE, // 10
176 KEY_DC1 = ufm::lang::Character::KEY_DC1, // 11
177 KEY_DC2 = ufm::lang::Character::KEY_DC2, // 12
178 KEY_DC3 = ufm::lang::Character::KEY_DC3, // 13
179 KEY_DC4 = ufm::lang::Character::KEY_DC4, // 14
180 KEY_NAK = ufm::lang::Character::KEY_NAK, // 15
181 KEY_SYN = ufm::lang::Character::KEY_SYN, // 16
182 KEY_ETB = ufm::lang::Character::KEY_ETB, // 17
183 KEY_CAN = ufm::lang::Character::KEY_CAN, // 18
184 KEY_EM = ufm::lang::Character::KEY_EM, // 19
185 KEY_SUB = ufm::lang::Character::KEY_SUB, // 1A
186 KEY_ESC = ufm::lang::Character::KEY_ESC, // 1B
187 KEY_FS = ufm::lang::Character::KEY_FS, // 1C
188 KEY_GS = ufm::lang::Character::KEY_GS, // 1D
189 KEY_RS = ufm::lang::Character::KEY_RS, // 1E
190 KEY_US = ufm::lang::Character::KEY_US, // 1F
191 KEY_BACKSPAC = ufm::lang::Character::KEY_BACKSPACE // 7F
192};
193
200 KEY_F1 = 0x007E3131, // 1B 5B 31 31 7E
201 KEY_F2 = 0x007E3231, // 1B 5B 31 32 7E
202 KEY_F3 = 0x007E3331, // 1B 5B 31 33 7E
203 KEY_F4 = 0x007E3431, // 1B 5B 31 34 7E
204 KEY_F5 = 0x007E3531, // 1B 5B 31 35 7E
205 KEY_F6 = 0x007E3731, // 1B 5B 31 37 7E
206 KEY_F7 = 0x007E3831, // 1B 5B 31 38 7E
207 KEY_F8 = 0x007E3931, // 1B 5B 31 39 7E
208 KEY_F9 = 0x007E3032, // 1B 5B 32 30 7E
209 KEY_F10 = 0x007E3132, // 1B 5B 32 31 7E
210 KEY_F11 = 0x007E3332, // 1B 5B 32 33 7E
211 KEY_F12 = 0x007E3432, // 1B 5B 32 34 7E
212 KEY_HOME = 0x00007E31, // 1B 5B 31 7E
213 KEY_INSERT = 0x00007E32, // 1B 5B 32 7E
214 KEY_DELETE = 0x00007E33, // 1B 5B 33 7E
215 KEY_END = 0x00007E34, // 1B 5B 34 7E
216 KEY_PAGE_UP = 0x00007E35, // 1B 5B 35 7E
217 KEY_PAGE_DOWN = 0x00007E36, // 1B 5B 36 7E
218 KEY_UP = 0x00000041, // 1B 5B 41
219 KEY_DOWN = 0x00000042, // 1B 5B 42
220 KEY_RIGHT = 0x00000043, // 1B 5B 43
221 KEY_LEFT = 0x00000044 // 1B 5B 44
222
223};
224
231 /* *************************************************************************************
232 * Method
233 */
234
241 virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) abstract;
242
249 virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) abstract;
250
257 virtual void onKey(char key, bool alt) abstract;
258};
259
260/* ***************************************************************************************
261 * End of file
262 */
263
264#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:41
virtual void update(void) override
更新方法
KeyControl
控制鍵列舉
Definition Console.h:159
KeyFunction
功能鍵列舉
Definition Console.h:199
void setEvent(Console::Event *event)
Set the Event object.
Definition Console.h:131
Console(ufm::lang::Readable &readable, Console::Event *event=nullptr) noexcept
建構 Console 物件
ufm::lang::Readable & readable(void)
Get the Readable object.
Definition Console.h:122
Definition ElapsedTimer.h:29
Definition Iterable.h:28
[Interface] 定義資料讀取介面
Definition Readable.h:46
[Interface] 定義可更新的物件介面
Definition Updatable.h:38
鍵盤事件處理介面
Definition Console.h:230
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
處理鍵盤按鍵事件