- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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.???? 一键候选
相对多键候选来说,一键候选的实现要简单得多
您可能关注的文档
- burkert位置反馈说明.pdf
- c++格式化字符串.docx
- cadence_ic5141usr6安装说明.pdf
- Canvas画线实例.docx
- CH05-字符串.ppt
- code列表3110C_RM-237_DP20_7.00__sw-07.01.doc
- CPU排行榜(fire strike) v1.0.2015.11.15.doc
- Cryptanalysis of a 32-bit RC4-like Stream Cipher,” Cryptology ePrint Archive.pdf
- CrowdStrike:中国另一支网络信息收集部队.doc
- Cry[tographic Mersenne Twister and Fubuki streamblock cipher,” Cryptographic ePrint Archiv.pdf
文档评论(0)