MTK输入法介绍

上传人:仙*** 文档编号:33069931 上传时间:2021-10-16 格式:DOC 页数:22 大小:330.01KB
收藏 版权申诉 举报 下载
MTK输入法介绍_第1页
第1页 / 共22页
MTK输入法介绍_第2页
第2页 / 共22页
MTK输入法介绍_第3页
第3页 / 共22页
资源描述:

《MTK输入法介绍》由会员分享,可在线阅读,更多相关《MTK输入法介绍(22页珍藏版)》请在装配图网上搜索。

1、 技术文档 目录1概述42目的43参考文档44T9输入法文件说明44.1 H文件44.2 C文件44.3T9层次结构54.4输入法的调用流程54.4.1输入法的初始化:64.4.2进入需要输入法的短消息界面74.4.3 引擎输出的buffer及一些辅助信息84.4.4 相关的显示区域及状态114.5 反查码表135 语言种类的选择136字库的选择与添加136.1 加入库文件136.2 建立相关的文件夹146.3 ADS编译需用到的一些设置文件146.4 设置按键处理函数146.5 候选窗口156.6 输入法图标156.7 输入法菜单156.8 改变EMS默认的输入法166.9 其他166.10

2、 CommonScreens.c176.11 EditorPen.c176.12 Wui_ems_categories.c186.13 Wui_inputs.c:226.14资源文件226.15其他注意的问题:237问题与讨论231 概述该文档是输入法的技术说明文档2 目的供内部人员开发使用3 参考文档MTK 6226代码实现4 T9输入法文件说明中文输入方式: 中文输入方式即用手机在编写短信息或是电话簿等项目中用到的输入方式。 T9: T9输入法全名为智能输入法,字库容量九千多字,支持十多种语言,包括欧洲及中文繁体、简体、香港常用字等。4.1 H文件t9main.h,t9definition

3、.h,t9.h,t9api.h,t9awapi.h,t9ccapi.h,t9cgen.h,t9env.h,t9gen.h,t9lang.h,t9ver.h其中t9main.h,t9definition.h为MMIFrameWork需要用到的头文件,而t9.h,t9api.h,t9awapi.h,t9ccapi.h,t9cgen.h,t9env.h,t9gen.h,t9lang.h,t9ver.h为引擎API层需要用到的头文件。4.2 C文件t9lang.c,t9main.c4.3 T9层次结构T9采用了三层结构引擎层根据输入键值搜索数据。引擎API封装层主要是对T9引擎API的封装,MMI层只

4、要往这一层输入键值,然后该层直接提供可以显示的数据。输入:用户输入的一些按键信息。输出:引擎输出的一些buffer及一些辅助信息。显示:根据引擎输出的一些buffer及辅助信息显示出来。4.4 输入法的调用流程输入法模块调用流程图如下:4.4.1输入法的初始化:在文件MMITask.c 中的函数void InitIME(void).InitInputMethod();/t9输入法的初始化进行了输入法的初始化.主要是初始化输入法的模式(全局变量),当前模式设置.IMERES.h定义了一个数据结构定义输入法的模式所涵盖的细节typedef struct _IMEModeDetailsSUPPORT

5、_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定义了一个全局的输入法模式数组,如果要增加或者删减相关的模式,在此数组下修改.const sIMEModeDetails mtk_gIMEModeArray =.4.4.2 进入需要输入法的短消息界面4.4.2.1 短消息编写短消息时会进入一个句柄绑定函数(SMSMoMtGu

6、iInterface.c)void HighlightWMessageHandler (void).SetLeftSoftkeyFunction (mmi_msg_entry_write_msg, KEY_EVENT_UP);.void mmi_msg_entry_write_msg (void)ShowCategory28Screen()void ShowCategory28Screen()./如果是非触摸屏/关联*键,用于切换特殊字符SetKeyHandler(change_input_mode,KEY_STAR,KEY_EVENT_DOWN);/注册一个回调函数register_mult

7、iline_inputbox_input_callback(handle_category28_input);/关联#键,用于切换输入模式SetKeyHandler(handle_category28_change_input_mode,KEY_POUND,KEY_EVENT_DOWN);./与T9联系起来,关联09键change_EMS_inputbox_input_mode();/如果是触摸屏mmi_pen_editor_setup_input_box(。)/进入editorpen.c文件,相关的键处理都在此文件下进行.4.4.2.2 彩信在widget_ctk.c中static void

8、 widget_ctk_show_smil_editor(ctk_layout_handle layoutid).ShowCategory275Screen(.).4.4.3 引擎输出的buffer及一些辅助信息经过相关的键输入信息T9STATUS T9FARCALL T9HandleKey(T9FieldInfo *pFieldInfo, T9KEY eKeyID)可以得到相关的引擎输出的buffer 及一些辅助信息,此是利用几个结构的数据类型来进入输入信息显示的。1struct T9CCFieldInfo_s T9FieldInfo G; /* Generic data. */ T9U8

9、pbKeyBufT9CCKEYBUFMAXSIZE; /* Buffer of keystrokes */ T9UINT nKeyBufLen; /* Number of keystrokes currently in the buffer */ T9U16 pwSelectPageT9CCSELECTPAGEMAXSIZE; /* Buffer of the selection page */ T9UINT nSelectPageMax; /* Current max size of selection page */ T9UINT nSelectPageLen; /* Current nu

10、mber of valid entries in selection page */ T9UINT nSelectPageNum; /* 0-based current page number of selection page */ T9U8 bToneCode; /* Filter value to provide only 1 tone for keys */ T9U8 bSpellCode; /* Filter value to provide only 1 phonetic form for keys */ T9U16 wChineseState; /* Current state

11、bits for Chinese */ T9U8 pbSpellBufT9CCSPELLBUFMAXSIZE;/* Buffer for Pinyin or BoPoMoFo spellings */ T9U16 wComponent; /* Selected component (0 if none) */ T9U8 bNumCompStrokes; /* Number of strokes in current component */ T9U16 wFirstComponent;/* First available component code (0 if no components a

12、vailable)*/ T9U16 wLastComponent; /* Last available component code */ T9UINT nDymCtxtFence; /* the fence of Dynamic context */ T9UINT nDymCtxtSearchDepth; /* Dynamic context Search Depth */ T9U8 bPhraseCompFence; /* Phrase completion fence */ T9U8 bPhraseCompLen; /* Length of completion part of phra

13、se completion */ T9U16 wPhraseCompCursor; /* Original cursor before phrase completion occurs */ T9CCUdbInfo T9FARUDBPOINTER *pCudbInfo; /*Pointer to Chinese UDB */ T9CCUdbObj UdbCacheObj; /* cache copy of the current UDB object */ T9CCAudbInfo T9FARUDBPOINTER *pCAUdbInfo; /* Pointer to Chinese Auto

14、User database */ T9UINT nCAUdbFence; /* AUDB fence */ T9U8 bLdbModuleFlag; /* Flags to indicate which modules are available in current LDB */ T9U8 bSpellMatchFromLdb; /* record how many matched spells are from ldb */ T9U8 bSpellMatchFromCudb; /* record how many matched spells are from cudb*/ struct

15、T9CC_Private_s T9CPrivate; /* Persistent memory for T9 Chinese */ void *pOEMPrivate; /* pointer for OEM use for callbacks */T9CCLoadLdb_f T9CCLoadLdb;2struct T9FieldInfo_s T9SYMB *psTxtBuf; /* Shared text buffer. */ T9AuxType *paAuxBuf; /* Shared auxillary buffer. */ T9UINT nBufLenMax; /* Memory Siz

16、e of text and key buffers. */ T9UINT nBufLen; /* Number characters in text and key buffers.*/ T9UINT nCursor; /* Current cursor position. */ T9UINT nWordLen; /* Length of active keystrokes. */ T9UINT nComplLen; /* Length of word beyond active keystrokes. */ T9UINT nLdbNum; /* Current linguistics dat

17、a base number. */ T9U8 bSymbolClass; /* Symbol class of LDB */ T9U8 bNumDbKeys; /* Number of ambiguous keys LDB specifies */ T9U8 bNumTapKeys; /* Number of multitap keys LDB specifies */ T9UINT nCurSelObj; /* * The current selected object in the selection list * when nexting/pre-ing. The valid value

18、 * is 1.T9AWMAXSELECTIONOBJECT */ T9U32 dwStateBits; /* Current State bits */ /* See T9STATEBIT above for legal values. */#ifdef T9EVENTAPI T9_upAuxAPI uLangData; /* union of ptrs referencing LDB specific APIs */#endif struct T9_Private_s T9Private; /* Persistent memory for T9s use. */ void *pOEMPri

19、vate;/* pointer for OEM use for callbacks */ T9U32 dwReserved; T9HandleRequest_f T9HandleRequest; T9ReadLdbData_f T9ReadLdbData; T9ConvertChar_f T9ConvertChar;3拼音拦信息键信息侯选字信息4智能联想例如你输入积极的积,将“积”字赋于变量phrase通过T9AddExplicitChar(&FieldInfo.CCFieldInfo.G, phrase);就可以联想到与积相关的词组。4.4.4 相关的显示区域及状态4.4.4.1未定义_MM

20、I_TOUCH_SCREEN_在t9main.c中t9CompositionArea上图中的拼音拦的显示区域t9SelectionArea上图中的侯选栏的显示区域T9_SCREEN_STATE_A 初始状态T9_SCREEN_STATE_B_PRE 上图中的拼音栏选择状态T9_SCREEN_STATE_B 上图中的侯选栏的选择状态T9_SCREEN_STATE_C 侯选栏连续选择状态T9_SCREEN_STATE_D 删除状态非触摸屏通过void T9InputBoxDisplayForEMSInputBox(void).4.4.4.2 定义了_MMI_TOUCH_SCREEN_(1)虚拟键盘

21、用虚拟键盘的显示函数void mmi_pen_editor_vk_show(void)虚拟键盘的相关文件:wgui_virtual_keyboad.h, gui_virtual_keyboad.hwgui_virtual_keyboad.c, gui_virtual_keyboad.c(2)键处理函数/触摸响应函数void mmi_pen_editor_smart_latin_key_down_handler(S32 key);/智能英语void mmi_pen_editor_smart_latin_key_down_handler(S32 key);/智能拼音void mmi_pen_edi

22、tor_smart_bpmf_pinyin_key_down_handler(S32 key);/笔划void mmi_pen_editor_chinese_stroke_key_down_handler(S32 key);/按#键执行函数void mmi_pen_editor_switch_input_method(void)(3)显示区域及显示函数g_pen_editor_composition_input_box上图中的拼音拦的显示区域gPenEditorCandidateInputBox上图中的侯选栏的显示区域在按键的过程中通过诸如以下函数来显示的mmi_pen_editor_chin

23、ese_stroke_get_candidates_by_key_sequencemmi_pen_editor_smart_bpmf_pinyin_get_candidates_by_key_sequence等等。4.5 反查码表在电话簿快速查找时需要用到反查码表,用下列函数T9CCGetCharStrokes(.);T9CCGetCharSpell();5 语言种类的选择 在文件MMI_features*.h,中定义了以下的宏:#define _MMI_LANG_ENGLISH_#define _MMI_LANG_TR_CHINESE_#define _MMI_LANG_SM_CHINESE

24、_. 在设置话机设置-语言中,如果想添加或者减少语言的种类,只需打开或者屏蔽上述的宏即可.6字库的选择与添加下面我以国笔输入法的添加为例(项目:V520, 平台:6226 ),MTK平台的输入法没有按照模块化来设置,代码非常分散,所以移植起来有点麻烦。一般来说,所有出现过_MMI_KA_的地方我们都需要修改。6.1 加入库文件在目录plutommiCustomerCustResourcePLUTO_MMIInputMethod下增加两个文件夹:GUOBI_LIB与GUOBI_INC,将相应的第三方软件提供的*.lib,*.a文件拷入GUOBI_LIB其中,将引擎头文件文件拷入GUOBI_INC

25、。6.2 建立相关的文件夹在V520当前工程目录下建立一个文件夹GUOBI(仿照T9),其下建立文件夹SRC与include,.c与.h文件分别拷入其中,另外建立自己的接口文件gbmain.c与gbmain.h.6.3 ADS编译需用到的一些设置文件(1)在文件*_GSM.mak (make)中有如下的语句INPUT_METHOD= MMI_T9,将其替换为MMI_GUOBI.并且搜索MMI_T9,将相应位置添加MMI_GUOBI,将需要用到*.lib,*.a依样加入,同样在REL_MMI_GPRS.mak也需要仿照MMI_T9,加入其相应的文件。(2)在make文件夹里加入你的输入法的目录G

26、UOBI,并建立以下几个文件, guobi.def: 需要使用的一些特殊的宏定义guobi.inc:需要使用的一些头文件的引用guobi.lis:包含的文件guobi.pth:包含文件的路径(3)在custominfo.pl下 push(thatdirs, inputmethod$mmi_versioninc);语句后加入 push(thatdirs, inputmethod$mmi_versionguobi_inc);(4)在plutommimmiGlobalSimulatorPathDef文件最后加入/I .custominputmethodPLUTO_MMIguobi_inc6.4 设置

27、按键处理函数主要在change_EMS_inputbox_mode,change_singleline_inputbox_mode,change_multiline_inputbox_mode三个函数。这是系统在改变输入法时调用的函数,这时候输入法需要把自己的按键处理函数设置到系统。有关的按键包括所有的数字键、方向键、确定键和*#两个键。一般来说,MTK里面已经实现了数字输入法,MULTITAP输入法,这几个输入法我们基本不需要修改。但是要修改这几个输入法里面的*和#键的调用。一般来说我们在INPUT_MODE_123、INPUT_MODE_MULTITAP_UPPERCASE_ABC,INP

28、UT_MODE_MULTITAP_LOWERCASE_ABC的输入模式的处理程序后面加入#ifdef _MMI_GUOBI_GBClearKeyHandler(gbKeyStarPound);SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_STAR, KEY_EVENT_DOWN);#endif并且我们要加入我们自己的4个输入模式的处理函数:mmi_pen_editor_switch_input_method 是触摸屏版本MTK里面切换输入法的统一函数,在非触摸屏的版本里面,可能要把它改为change_EMS_inputbox_mod

29、e, change_singleline_inputbox_mode, change_multiline_inputbox_mode中的一个。6.5 候选窗口国笔的候选窗口比较复杂,所以我们建议自己画,而不是使用系统的控件。对于触摸屏的版本的MTK平台,我们建议使用一个空的虚拟键盘来做我们的候选窗口,候选窗口还可以通过点击进行操作。但是这个虚拟键盘一定要自己来画。对于非触摸屏的版本,建议建立一个空的singline inputbox 来做我们的候选窗口。(但是记得不要往这个inputbox插入字符。)对于singline inputbox 的候选窗口,需要注意的是有时候需要隐藏这个候选窗。画候

30、选窗口需要部首的图片。这些图片共5*29=145个,要全部加入到资源里面。6.6 输入法图标EMS里面左上角有一个输入法图标,这个图标主要在wgui_EMS_show_input_mode函数处理。我们需要跟着_MMI_T9_进行处理。6.7 输入法菜单IMERes.c里面有一个数组:const sIMEModeDetails mtk_gIMEModeArray这个数组当前可用的输入法和输入法的顺序。这里面我们需要加入4个输入法。#if defined(_MMI_GUOBI_)/*Smart Pinyin*/INPUT_MODE_SM_PINYIN,INPUT_TYPE_SM_PINYIN,S

31、TR_INPUT_METHOD_MENU_PINYIN,STR_INPUT_METHOD_PINYIN,0,INPUT_MODE_SM_STROKE,INPUT_TYPE_SM_STROKE,STR_INPUT_METHOD_MENU_SIMPLIFIED_CHINESE_STROKE,STR_INPUT_METHOD_SM_STROKE,0,/*Smart abc*/INPUT_MODE_SMART_LOWERCASE_ABC,INPUT_TYPE_SMART_LOWERCASE_ABC,STR_INPUT_METHOD_MENU_SMART_abc,STR_INPUT_METHOD_SMA

32、RT_L_ABC,1,/*Smart ABC*/INPUT_MODE_SMART_UPPERCASE_ABC,INPUT_TYPE_SMART_UPPERCASE_ABC,STR_INPUT_METHOD_MENU_SMART_ABC,STR_INPUT_METHOD_SMART_U_ABC,1,#endif /_MMI_GUOBI_Wgui_categories_inputs.c里面有一个数组MMI_implement_input_mode_set,这个数组也需要加入:#if defined(_MMI_GUOBI_)/MMI_implement_input_mode_set INPUT_MO

33、DE_SM_PINYIN,INPUT_MODE_SM_STROKE,INPUT_MODE_SMART_UPPERCASE_ABC,INPUT_MODE_SMART_LOWERCASE_ABC,#endif6.8 改变EMS默认的输入法ShowCategory28Screen函数的开头有一个语句: U16 input_type = (U16) INPUT_TYPE_ALPHANUMERIC_LOWERCASE;把它改成:#ifndef _MMI_GUOBI_ U16 input_type = (U16) INPUT_TYPE_ALPHANUMERIC_LOWERCASE;#else U16 in

34、put_type = (U16) INPUT_TYPE_SM_PINYIN;#endif6.9 其他MTK代码里面有很多:#if defined(_MMI_T9_) | defined(_MMI_ITAP_) | defined(_MMI_KA_)一般来说我们在后面加上 | defined(_MMI_GUOBI_)就好了。基本我们需要加入的地方都会有_MMI_KA_,移植的时候把_MMI_KA_全部找出来,然后每一个看看,慢慢加入。6.10 CommonScreens.c在SetSavedInputType#if defined (_MMI_T9_) | defined (_MMI_ZI_)

35、| defined(_MMI_KA_)后面加入defined(_MMI_GUOBI_)U32 InputMethodSetKeyHandler( FuncPtr *preFuncPtrs, FuncPtr *postPtrs, const sIMEModeDetails *IMEModeArray, BOOL EnglishOnly, BOOL AP_required)函数里面: switch (input_mode_id)里面加入:#ifdef _MMI_GUOBI_ case INPUT_MODE_SMART_UPPERCASE_ABC: preFuncPtrsj = wgui_chang

36、e_inputbox_mode_smart_ABC; break; case INPUT_MODE_SMART_LOWERCASE_ABC: preFuncPtrsj = wgui_change_inputbox_mode_smart_abc; break; case INPUT_MODE_SM_PINYIN: preFuncPtrsj = wgui_change_inputbox_mode_sm_pinyin; break; case INPUT_MODE_SM_STROKE: preFuncPtrsj = wgui_change_inputbox_mode_sm_stroke; break

37、;#endif6.11 EditorPen.cvoid mmi_pen_editor_setup_input_box( mmi_pen_handwriting_area_struct *stroke_area, mmi_pen_handwriting_area_struct *ext_stroke, U16 input_type, U8 information_bar_flag, mmi_pen_editor_input_box_type_enum input_box_type). SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_PO

38、UND, KEY_EVENT_DOWN);改成(*键切换输入法功能)#ifdef _MMI_GUOBI_ ClearKeyHandler(KEY_POUND, KEY_EVENT_DOWN); SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_STAR, KEY_EVENT_DOWN);#else SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_POUND, KEY_EVENT_DOWN);#endifvoid mmi_pen_editor_switch_input_metho

39、d(void);输入法切换之后有一段 if (INPUT_MODE_TR_MULTITAP_BOPOMO = MMI_current_input_mode | INPUT_MODE_SM_MULTITAP_PINYIN = MMI_current_input_mode) mmi_pen_editor_bpmf_pinyin_create_multitap(MMI_current_input_mode); mmi_pen_editor_bpmf_pinyin_register_multitap_function(); else if (INPUT_MODE_SMART_UPPERCASE_ABC

40、 = MMI_current_input_mode | INPUT_MODE_SMART_LOWERCASE_ABC = MMI_current_input_mode) mmi_pen_editor_smart_latin_register_key_function(); else if (INPUT_MODE_TR_STROKE = MMI_current_input_mode | INPUT_MODE_SM_STROKE = MMI_current_input_mode) mmi_pen_editor_chinese_stroke_register_key_function(); else

41、 if (INPUT_MODE_TR_BOPOMO = MMI_current_input_mode | INPUT_MODE_SM_PINYIN = MMI_current_input_mode) mmi_pen_editor_smart_bpmf_pinyin_register_key_function(); 在国笔输入法里面,把这段去掉。6.12 Wui_ems_categories.cvoid change_EMS_inputbox_mode(U8 mode);这个函数主要是将输入法模式改过来。然后在每一次切换输入法之后把*键的功能改为切换输入法。void change_EMS_inp

42、utbox_mode(U8 mode) /*-*/ /* Local Variables */ /*-*/ /*-*/ /* Code Body */ /*-*/ /* PMT dara added for Multitap thai */#if defined(_MMI_MULTITAP_THAI_) SetKeyHandler(handle_category28_change_input_mode, KEY_POUND, KEY_EVENT_DOWN);#endif switch (mode) case INPUT_MODE_MULTITAP_UPPERCASE_ABC: change_m

43、ultitap_mode(INPUT_MODE_MULTITAP_UPPERCASE_ABC); register_EMS_multitap_function();#ifdef _MMI_GUOBI_/*键切换输入法SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_STAR, KEY_EVENT_DOWN);#endif break; case INPUT_MODE_MULTITAP_LOWERCASE_ABC: change_multitap_mode(INPUT_MODE_MULTITAP_LOWERCASE_ABC); regis

44、ter_EMS_multitap_function();#ifdef _MMI_GUOBI_/*键切换输入法SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_STAR, KEY_EVENT_DOWN);#endif break;. case INPUT_MODE_123: change_multitap_mode(INPUT_MODE_123); clear_multitap_key_handlers(); register_MMI_key_input_handler(); register_key_down_handler(EMS_i

45、nputbox_handle_key_down); register_keyboard_input_handler(EMS_inputbox_numeric_keyboard_input_handler); wgui_set_EMS_inputbox_RSK(); register_EMS_inputbox_keys(); if (MMI_current_input_type & INPUT_TYPE_MASK) = INPUT_TYPE_NUMERIC_CHANGEABLE) SetKeyHandler(wgui_EMS_inputbox_handle_symbol_picker_star_

46、key, KEY_STAR, KEY_EVENT_DOWN); #ifdef _MMI_GUOBI_SetKeyHandler(mmi_pen_editor_switch_input_method, KEY_STAR, KEY_EVENT_DOWN);#endif break;.#ifdef _MMI_GUOBI_ case INPUT_MODE_SM_PINYIN: case INPUT_MODE_SM_STROKE:case INPUT_MODE_SMART_UPPERCASE_ABC:case INPUT_MODE_SMART_LOWERCASE_ABC: 输入法模式切换 这里面会把上下

47、左右设置EMS处理*键处理#endifvoid handle_category28_change_input_mode(void)函数这个函数主要是改变输入法的图标只要把获取中文输入法图标里面#if defined(_MMI_T9_) | defined(_MMI_ITAP_) | defined(_MMI_KA_)加上| defined(_MMI_GUOBI_)就可以了。同时在Wui_ems_categories.c,还有:#if defined(_MMI_T9_) | defined(_MMI_ZI_) | defined(_MMI_KA_) | defined(_MMI_ITAP_)vo

48、id wgui_EMS_inputbox_change_input_mode_smart_ABC(void).void wgui_EMS_inputbox_change_input_mode_smart_abc(void)void wgui_EMS_inputbox_change_input_mode_tr_bpmf(void)我们在前面同样加上| defined(_MMI_GUOBI_)void ShowCategory28Screen( U16 title, U16 title_icon, U16 left_softkey, U16 left_softkey_icon, U16 right

49、_softkey, U16 right_softkey_icon, EMSData *data, U8 *history_buffer)函数里面加入对GBInputMethodEnterCategory28函数的调用,如:#ifdef _MMI_T9_ InuptMethodEnterCategory28();#elif defined(_MMI_ZI_) & defined(_MMI_MESSAGES_EMS_) ZiInuptMethodEnterCategory28();#elif defined(_MMI_KA_) KonkaInuptMethodEnterCategory28();#

50、elif defined(_MMI_ITAP_) /已经处理过了/* under construction !*/* under construction !*/#elif defined(_MMI_GUOBI_) /OKGBInputMethodEnterCategory28();#endif 在wgui_categories_inputs.c文件里面有很多#ifdef _MMI_T9_ InuptMethodExitCategory5();#elif defined _MMI_ZI_ ZiInuptMethodExitCategory5();#elif defined _MMI_KA_ K

51、onkaInuptMethodExitCategory5();#elif defined _MMI_ITAP_ /handled /* under construction !*/* under construction !*/#elif defined(_MMI_GUOBI_) /ExitCategory5(); GBInputMethodExitCategory5();#endif 类似的程序段,对于这些都依葫芦画瓢就可以了。还有很多的#if defined(_MMI_T9_) | defined(_MMI_ZI_) | defined(_MMI_ITAP_) .对于这些都到后面加上|de

52、fined(_MMI_GUOBI_)好了。具体可以参照附件中的wgui_categories_inputs.c文件.6.13 Wui_inputs.c:wgui_set_EMS_inputbox_RSK,EMS_inputbox_direct_input函数,这些都需要根据当前输入框类型进行修改。也需要修改下面两个函数:void change_singleline_inputbox_mode(U8 mode);void change_multiline_inputbox_mode(U8 mode);根据gPenEditorInputBoxType变量来获得当前输入框的类型。6.14资源文件把图

53、片文件加入到工程里面需要有以下步骤:1. 把图片加到plutommiCustomerImagesPLUTO240X320image.zip中2. 在wgui_categories_defs.h文件里面,有关图片的enum里面加入你的图片的ID。那个enum定义的开始如:typedef enum 3. 在plutommiCustomerCustResourcePLUTO_MMIRes_MMI下的任何一个res_XXX,c中使用宏ADD_APPLICATION_IMAGE2增加对图片的包含4. 运行plutommiCustomerResGenerator.bat重新生成资源5. 重新编译模拟器工程

54、首先需要把输入法的图标加入资源,在plutommiCustomerCustResourcePLUTO_MMIRes_MMIRes_gui.c里面加入:ADD_APPLICATION_IMAGE2(WGUI_IME_SMART_PINYIN_IMG,CUST_IMG_PATHMainLCDEditSmart Pinyin.bmp,Icon for T9 smart pinyin);ADD_APPLICATION_IMAGE2(WGUI_IME_SM_STROKE_IMG,CUST_IMG_PATHMainLCDEditSimplified Chinese stroke.bmp,Icon for T9 SC Stroke);ADD_APPLICATION_IMAGE2(WGUI_IME_SMART_ENGLISH_IMG,CUST_IMG_PATHMainLCDEditSmartamb.bmp,Icon for T9 smart English);plutommiCustomerCustResourcePLUTO_MMI IMERes.c还有plutommiCustomerCustResourcePLUTO_MMI IMERes

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!