mFrame
載入中...
搜尋中...
無符合項目
ufm::util::Console 類別 參考文件

終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。 更多...

#include <Console.h>

類別ufm::util::Console的繼承圖:
ufm::lang::Object ufm::lang::Updatable ufm::lang::Interface

複合項目

struct  Event
 鍵盤事件處理介面 更多...
 

公開型態

enum struct  KeyControl : uint8 {
  KEY_SOH = ufm::lang::Character::KEY_SOH , KEY_STX = ufm::lang::Character::KEY_STX , KEY_ETX = ufm::lang::Character::KEY_ETX , KEY_EOT = ufm::lang::Character::KEY_EOT ,
  KEY_ENQ = ufm::lang::Character::KEY_ENQ , KEY_ACK = ufm::lang::Character::KEY_ACK , KEY_BEL = ufm::lang::Character::KEY_BEL , KEY_BS = ufm::lang::Character::KEY_BS ,
  KEY_TAB = ufm::lang::Character::KEY_TAB , KEY_LF = ufm::lang::Character::KEY_LF , KEY_VT = ufm::lang::Character::KEY_VT , KEY_FF = ufm::lang::Character::KEY_FF ,
  KEY_CR = ufm::lang::Character::KEY_CR , KEY_SO = ufm::lang::Character::KEY_SO , KEY_SI = ufm::lang::Character::KEY_SI , KEY_DLE = ufm::lang::Character::KEY_DLE ,
  KEY_DC1 = ufm::lang::Character::KEY_DC1 , KEY_DC2 = ufm::lang::Character::KEY_DC2 , KEY_DC3 = ufm::lang::Character::KEY_DC3 , KEY_DC4 = ufm::lang::Character::KEY_DC4 ,
  KEY_NAK = ufm::lang::Character::KEY_NAK , KEY_SYN = ufm::lang::Character::KEY_SYN , KEY_ETB = ufm::lang::Character::KEY_ETB , KEY_CAN = ufm::lang::Character::KEY_CAN ,
  KEY_EM = ufm::lang::Character::KEY_EM , KEY_SUB = ufm::lang::Character::KEY_SUB , KEY_ESC = ufm::lang::Character::KEY_ESC , KEY_FS = ufm::lang::Character::KEY_FS ,
  KEY_GS = ufm::lang::Character::KEY_GS , KEY_RS = ufm::lang::Character::KEY_RS , KEY_US = ufm::lang::Character::KEY_US , KEY_BACKSPAC = ufm::lang::Character::KEY_BACKSPACE
}
 控制鍵列舉 更多...
 
enum struct  KeyFunction : uint32 {
  KEY_F1 = 0x007E3131 , KEY_F2 = 0x007E3231 , KEY_F3 = 0x007E3331 , KEY_F4 = 0x007E3431 ,
  KEY_F5 = 0x007E3531 , KEY_F6 = 0x007E3731 , KEY_F7 = 0x007E3831 , KEY_F8 = 0x007E3931 ,
  KEY_F9 = 0x007E3032 , KEY_F10 = 0x007E3132 , KEY_F11 = 0x007E3332 , KEY_F12 = 0x007E3432 ,
  KEY_HOME = 0x00007E31 , KEY_INSERT = 0x00007E32 , KEY_DELETE = 0x00007E33 , KEY_END = 0x00007E34 ,
  KEY_PAGE_UP = 0x00007E35 , KEY_PAGE_DOWN = 0x00007E36 , KEY_UP = 0x00000041 , KEY_DOWN = 0x00000042 ,
  KEY_RIGHT = 0x00000043 , KEY_LEFT = 0x00000044
}
 功能鍵列舉 更多...
 

公開方法(Public Methods)

 Console (ufm::lang::Readable &readable, Console::Event *event=nullptr) noexcept
 建構 Console 物件
 
virtual ~Console (void) override
 解構 Console 物件,釋放資源。
 
 operator ufm::lang::Readable & (void)
 隱式轉型為 ufm::lang::Readable&
 
virtual void update (void) override
 更新方法
 
ufm::lang::Readablereadable (void)
 Get the Readable object.
 
void setEvent (Console::Event *event)
 Set the Event object.
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

公開屬性

uint32 vEscapedTime
 Escape 序列超時時間(毫秒),用於判斷 escape 序列結束。
 

詳細描述

終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。

Console 類別負責解析來自終端機的鍵盤輸入,支援控制鍵、功能鍵和 普通字元的識別。能夠處理 ANSI/VT100 escape 序列,並提供事件回呼 機制。適用於嵌入式系統或命令列互動式應用程式。

使用範例:
// 實作鍵盤事件處理器
class MyEventHandler : public ufm::util::Console::Event {
public:
void onControlKey(ufm::util::Console::KeyControl key, bool alt) override {
switch (key) {
case ufm::util::Console::KeyControl::KEY_CR:
std::cout << "Enter 鍵被按下" << std::endl;
break;
case ufm::util::Console::KeyControl::KEY_TAB:
std::cout << "Tab 鍵被按下" << std::endl;
break;
case ufm::util::Console::KeyControl::KEY_BACKSPAC:
std::cout << "Backspace 鍵被按下" << std::endl;
break;
}
if (alt) {
std::cout << "(同時按下 Alt 鍵)" << std::endl;
}
}
void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override {
switch (key) {
case ufm::util::Console::KeyFunction::KEY_F1:
std::cout << "F1 鍵被按下" << std::endl;
break;
case ufm::util::Console::KeyFunction::KEY_UP:
std::cout << "向上箭頭鍵被按下" << std::endl;
break;
case ufm::util::Console::KeyFunction::KEY_HOME:
std::cout << "Home 鍵被按下" << std::endl;
break;
}
}
void onKey(char key, bool alt) override {
std::cout << "字元鍵被按下: " << key << std::endl;
if (alt) {
std::cout << "(同時按下 Alt 鍵)" << std::endl;
}
}
};
// 建立輸入來源和事件處理器
ufm::lang::Readable& inputSource = getInputSource(); // 假設有輸入來源
MyEventHandler eventHandler;
// 建立 Console 物件
ufm::util::Console console(inputSource, &eventHandler);
// 設定 escape 序列超時時間 (毫秒)
console.vEscapedTime = 100; // 100ms 超時
// 主迴圈中持續更新
while (running) {
console.update(); // 處理輸入並觸發事件
// 其他應用邏輯...
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
// 動態更換事件處理器
MyEventHandler newHandler;
console.setEvent(&newHandler);
// 直接存取底層 Readable
ufm::lang::Readable& readable = console.readable();
if (readable.available() > 0) {
// 直接讀取資料
}
終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。
Definition Console.h:128
KeyControl
控制鍵列舉
Definition Console.h:255
KeyFunction
功能鍵列舉
Definition Console.h:295
ufm::lang::Readable & readable(void)
Get the Readable object.
Definition Console.h:218
[Interface] 定義資料讀取介面
Definition Readable.h:46
鍵盤事件處理介面
Definition Console.h:326
支援的按鍵類型:
  • 控制鍵: Tab, Enter, Backspace, Escape 等
  • 功能鍵: F1-F12, 方向鍵, Home, End, Page Up/Down 等
  • 普通字元鍵: a-z, A-Z, 0-9, 特殊符號等
  • Alt 組合鍵: 與上述任意鍵的組合
參閱
ufm::util::Console::Event
ufm::util::Console::KeyControl
ufm::util::Console::KeyFunction
ufm::lang::Readable
ufm::lang::Updatable

列舉型態成員說明文件

◆ KeyControl

enum struct ufm::util::Console::KeyControl : uint8
strong

控制鍵列舉

定義所有常用控制鍵(如 Tab、Enter、Backspace 等),對應 ASCII 控制碼。

◆ KeyFunction

enum struct ufm::util::Console::KeyFunction : uint32
strong

功能鍵列舉

定義常見功能鍵(如 F1~F12、方向鍵、Insert、Delete 等),對應 VT100/ANSI 編碼。

建構子與解構子說明文件

◆ Console()

ufm::util::Console::Console ( ufm::lang::Readable & readable,
Console::Event * event = nullptr )
noexcept

建構 Console 物件

參數
readable可讀取資料來源
event鍵盤事件處理器

函式成員說明文件

◆ operator ufm::lang::Readable &()

ufm::util::Console::operator ufm::lang::Readable & ( void )
inline

隱式轉型為 ufm::lang::Readable&

允許 Console 物件可直接作為 Readable 介面使用,便於資料讀取整合。

傳回值
內部 ufm::lang::Readable 物件參考

◆ readable()

ufm::lang::Readable & ufm::util::Console::readable ( void )
inline

Get the Readable object.

傳回值
ufm::lang::Readable&

◆ setEvent()

void ufm::util::Console::setEvent ( Console::Event * event)
inline

Set the Event object.

參數
event

◆ update()

virtual void ufm::util::Console::update ( void )
overridevirtual

更新方法

當系統需要更新物件狀態時被呼叫, 實現類應在此方法中進行必要的狀態更新邏輯。

實作 ufm::lang::Updatable.


此類別(class) 文件是由下列檔案中產生: