嵌入式Linux下开发中文输入法

介绍

        近期由于项目需求:设备端需要中文输入而手头又没有现成可用的中文输入法,因此就想办法看看能否捣鼓一个出来。当然,开始是没有任何信心的,也深知输入法别看他很小的一个东西,但内部涉及内容还是非常多的,很多知识平常也怎么涉及,知识储备有限。

        总之,这是个挑战任务,公司其他同事资源基本上也帮不上忙。

        面对未知时间,还是得首先静下心来梳理下、分析下,这样才好各个突破。

梳理下中文输入法一些关键功能: 

实际上大的来说分四层:

     1. “输入层”:处理字符输入,获取输入字符,特别是一些控制键,类似 shift、ctrl,还有标点符号,方向键等。这些处理会比abc字符处理要复杂很多。看官们,可以细品

     2. “匹配层”:根据输入的字符,调用搜索算法返回匹配到词组或单字。算法耦合度最低,虽然是核心,但输入输出非常清晰,也很好理解。关键是不要出错,比如一些不按常理的输入,不能出错,更不能直接闪退。

     3. “显示层”:分两部分

  •             如何输入控件获取焦点时,自动触发输入法,并且显示在合适的位置。
  •             当用户选择后,如何显示到控件上面。

     4. “控制层” :这个是捣糨糊的,但也必不可少。比如说当前是英文输入模式,那么不调用算法之类的;比如说前面已经输入单引号,那么下次再输入单引号,应该是后引号(对应按键值是同一个),类似这样组合很多。同样的方向键,在已经有输入、无输入情况下,都是不一样的处理。

基本上厘清这些点,大致框架也有了,剩下的,有兴趣的,可以去挑战下。

再写点,我认为可以公开的思路:

1. 拼音匹配可以找一些开源的,比如安卓下面的一些输入法,可以看看

2. 输入控件匹配问题,可以加个过滤器,qt下有 eventfilter,可以利用下,过滤下qapp。

3. 词组匹配,中文的声母、韵母是有限的,网上也有人整理好的,可以拿来。这样你的词组就好匹配很多。

4. 跟常规的输入法对比效果,sogou之类还是比较优秀的

这样做下来,输入法也就那么回事了。当然要跟windows下那些常见的比,还是有点差距,但也还好。

补充下,奇怪的测试用例(可以验证输入法是否成熟):

1. 输入 zzzzzzzzzzzzzzzzzz  超过32个

2. 输入 ccccccccccccccccccc  

3. 输入 超过64个字符,随意组合

4. 输入 i3xs  会显示什么

5. 按下 shift键,会不会切换成英文输入;在有输入情况,按shift会怎么样

6. 按[ ]  ,.  -= 是否翻页,翻页是否正确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
《致远电子嵌入式Linux开发教程(下册)》是一本关于嵌入式Linux开发的教程书籍,旨在帮助读者了解和掌握嵌入式Linux开发的基本知识和技能。 这本教程的下册主要分为几个部分。首先,它介绍了Linux嵌入式系统的基础知识,包括Linux内核的概念和组成部分、设备驱动、中断处理、多任务处理等。通过深入了解Linux嵌入式系统的工作原理,读者可以更好地理解嵌入式设备与操作系统之间的交互过程。 接下来,教程介绍了嵌入式开发环境的搭建与配置,包括交叉编译工具链的安装、文件系统的构建与应用程序的开发等。读者可以学习如何配置和使用开发工具,以便进行嵌入式Linux系统的开发和调试。 此外,这本教程还介绍了Linux的系统调试和性能优化技术,包括使用调试工具进行系统调试和性能分析、如何优化系统的运行速度和内存占用等。这些内容对于嵌入式开发者来说非常重要,可以帮助他们提高嵌入式系统的稳定性和性能。 最后,教程还介绍了一些实际的应用案例,包括网络应用、多媒体应用、智能设备等。通过这些案例的学习,读者可以更好地理解嵌入式Linux系统在不同领域的应用和开发方法。 总的来说,致远电子嵌入式Linux开发教程(下册)是一本很实用的教程书籍,内容丰富且系统全面,适合嵌入式开发者入门和深入学习嵌入式Linux开发。无论是对于刚入门的开发者,还是想深入研究嵌入式Linux开发的专业人士,这本教程都是一个很好的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值