MTK平台输入法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK平台输入法

MTK平台输入法浅析 ? 摘要 输入法作为手机软件中的一个最基本模块,在人机交互界面的中具有举足轻重的位置。为了帮助大家更快更好的理解输入法在MTK平台上的实现,本文结合mtk的代码从框架性的角度对输入法的实现进行概要导读,希望能够对大家有所收益。 ? 一.?????? KeyPad输入 Keypad的输入分为两种:一键候选和多键候选。 a)???????? 一键候选:指每次按键输入的内容都是确定的,一次按键就是一次输入。比如数字输入,智能拼音输入等。 b)??????? 多键候选:指每次按件输入的内容在一定的时间内是不确定的,用户可以通过再次按键来改变当前输入的内容,比如大小写英文,拼音输入法就是这种类型的输入方式。 ? ?? 下面我们将按照上面的划分方式来分别介绍这两种输入方式。?? A.???? 多键候选 为了实现多键候选的功能,MTK提供了一个名为multitap的所谓控件,其对应的??据结构为multitap_input。具体内容可以查看代码。 ? 以下为一段sample code,用来演示如何利用multitap控件来实现某一种multitap类型输入(比如大小写的ABC): ? for(i = 0; i MAX_MULTITAPS; i++) { s = (UI_string_type) numberless_lowercase_multitap_strings[i]; pixtel_UI_create_multitap_input(g_pen_editor_bpmf_pinyin_active_multitap[i],MMI_multitap_x,MMI_multitap_y,width,MMI_multitap_height,s); } ?---为每一个输入键(键0-9)建立一个multitap控件赋一些初值(比如键2的循环数组为“ABC2”); register_MMI_key_input_handler(); --把所有字符输入(键0-9)的keyhandler都影射到同一个函数MMI_key_input_handler上 此函数的实质就是调用接下来要设置的keyup和key down的handler函数 register_key_up_handler(mmi_pen_editor_bpmf_pinyin_key_up_handler); --注册所有键的keyup handler, 该handler会调用multitap控件的input_complete_callback函数,来结束一次multitap的输入 register_key_down_handler(mmi_pen_editor_bpmf_pinyin_key_down_handler); --注册所有键的keydown handler, 该handler会在某个键的候选项里进行循环,同时也会调用multitap控件的input_callback函数 for(i = 0; i MAX_MULTITAPS; i++) { pixtel_UI_set_multitap_input_callbacks(g_pen_editor_bpmf_pinyin_active_multitap[i],mmi_pen_editor_bpmf_pinyin_multitap_input,mmi_pen_editor_bpmf_pinyin_multitap_input_complete); } ??? --设置multitap的上述两个回调函数 在完成了以上代码以后,一般来说我们就可以进行多键候选的输入了 1)??????? 输入一个键(比如2键),此时Keydown handler会根据键值找到其对应得multitap,此时输入内容为“ABC2”中的第一个字母“A”,并保存当前输入在此数组中的位置,同时更新inputbox的视图,置一个active_multitap为当前按键,并在该键keyuphandler里启动一个定时器 2)??????? 如果用户在定时器超时之前,再次按下一个键,则keydow handler会判断是否跟上一次的active——multitap一样,如果一样则在上次的位置上循环加1,比如上次是A,这次就是B了;如果这次按键和上次不一样,则表示开始一个新的按键了,则首先调用input_complete_callback来处理上一个按键应该完成的事宜(比如更新inputbox的视图)。同时回到状态1进行新的输入处理 3)??????? 如果用户在定时器超时之前,都没有按键,则直接调用input_complete-calllback来处理。完成一次multitap的输入 B.???? 一键候选 相对多键候选来说,一键候选的实现要简单得多

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档