|
輸入法、字庫(kù)與文件操作
引子:
通過(guò)本章的學(xué)習(xí),我們將重點(diǎn)學(xué)習(xí)怎樣,在手機(jī)中加入新的輸入法,怎樣添加字庫(kù)。
8.1輸入法調(diào)用流程
輸入法模塊調(diào)用流程圖如圖8.1所示:
圖8.1 輸入法模塊調(diào)用流程圖
8.2初始化輸入法:
在文件MMITask.c 中的函數(shù)
void InitIME(void)
{
…..
InitInputMethod();//初始化輸入法
}
進(jìn)行了輸入法的初始化.主要是初始化輸入法的模式,當(dāng)前模式設(shè)置.
IMERES.h定義了一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)定義了輸入法的模式所涵蓋的細(xì)節(jié)
typedef struct _IMEModeDetails
{
SUPPORT_INPUT_MODES IME_Mode_ID;
SUPPORT_INPUT_TYPES IME_Type_ID;
U16 Common_Screen_StringID;
U16 Prefered_IMEStringID;
MMI_BOOL English_Only_Flag;
} sIMEModeDetails;
在IMERES.c定義了一個(gè)全局的輸入法模式數(shù)組,如果要增加或者刪減相關(guān)的模式,在此數(shù)組下修改.
const sIMEModeDetails mtk_gIMEModeArray[] =
{
…..
}
8.3需要輸入法的短消息界面的進(jìn)入
1.編寫(xiě)短消息時(shí)會(huì)進(jìn)入一個(gè)句柄綁定函數(shù)HighlightWMessageHandler(),該函數(shù)位于文件SMSMoMtGuiInterface.c中,具體如下所示:
void HighlightWMessageHandler (void)
{
….
SetLeftSoftkeyFunction (mmi_msg_entry_write_msg, KEY_EVENT_UP);
…..
}
void mmi_msg_entry_write_msg (void){
……
ShowCategory28Screen(…)
……
}
void ShowCategory28Screen(…)
{
…..
//若是非觸摸屏
//關(guān)聯(lián)*鍵,用于切換特殊字符
SetKeyHandler(change_input_mode,KEY_STAR,KEY_EVENT_DOWN);
……
//注冊(cè)一個(gè)回調(diào)函數(shù)
register_multiline_inputbox_input_callback(handle_category28_input);
……
//關(guān)聯(lián)#鍵,用于切換輸入模式
SetKeyHandler(handle_category28_change_input_mode,KEY_POUND,KEY_EVENT_DOWN);
…..
//關(guān)聯(lián)0—9鍵
change_EMS_inputbox_input_mode();
//若是觸摸屏
mmi_pen_editor_setup_input_box(。。。)//進(jìn)入editorpen.c文件,相關(guān)的鍵處理都在此文件下進(jìn)行
…..
}
2 . 彩信
在widget_ctk.c中
static void widget_ctk_show_smil_editor(ctk_layout_handle layoutid)
{
…..
ShowCategory275Screen(….)
….
}
8.4 虛擬鍵盤(pán)的使用
用虛擬鍵盤(pán)的顯示函數(shù)void mmi_pen_editor_vk_show(void)
虛擬鍵盤(pán)的相關(guān)文件:
wgui_virtual_keyboad.h, gui_virtual_keyboad.h
wgui_virtual_keyboad.c, gui_virtual_keyboad.c
|
|