介绍

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

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

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

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

实际上大的来说分四层:

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. 按[ ]  ,.  -= 是否翻页,翻页是否正确

嵌入式Linux下开发中文输入法相关推荐

  1. Linux下安装中文输入法--小企鹅输入法

    Linux 下安装中文输入法-- 小企鹅输入法 作者: zccst Linux 系统: CentOS 5.3 刚刚装好的 CentOS 5.3 ,不要说有中文输入法,甚至连中文字体在浏览器里都无法显示 ...

  2. linux中怎么添加输入法,linux下添加中文输入法

    一.安装环境 查看linux版本号 [ztteng@ztteng ~]$ lsb_release -a LSB Version:    :core-4.0-ia32:core-4.0-noarch:g ...

  3. LINUX下安装中文输入法

    最近刚给笔记本装了Ubuntu+win10双系统,但是ubuntu16.04没有自带中文输入法,所以经过网上的一些经验搜索整合,分享一下安装中文输入法的心得.本文主要介绍了谷歌拼音跟ibus中文输入法 ...

  4. 最简单的Linux下设置中文输入法

    1,在linux中默认输入法框架为ibus,所支持的输入法也只有英文输入,要想下载外源中文输入法就要先下载支持外源输入法的框架fcitx 2,下载命令为sudo apt-get install fci ...

  5. 判断linux标准输入法,[fcitx]linux下的中文输入法(非准确)

    Fcitx [ˈfaɪtɪks] 是一个支持扩展的输入法框架.它有自己维护的三个输入法,拼音,区位和码表:还支持其他引擎,rime 中州韵,google-pinyin,sunpinyin.Fcitx ...

  6. linux kde中文输入法,linux 下的中文输入法是不是只能在KDE下啊?Gnome下有吗?名字?怎么装?...

    最好给出详细的安装方法,分就全给他了!谢谢! | RedHat7-Chinput3-tiny-HOWTO 2000-09-28 最近更新:2000-10-07 Wu Yulun (migr@opera ...

  7. linux 系统装中文输入法 fcitx

    Ubuntu 9.10下本身有一此中文输入法 IBUS,但是感伤其词库太小,很多常见的字都没有.于是上网授一下linux下的中文输入法,一样平常回答都是SCIM 和 FCITX,这里说一下FCITX的 ...

  8. 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程

    实验5  嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...

  9. 嵌入式linux中断驱动,嵌入式Linux下硬件中断驱动程序的开发.pdf

    嵌入式Linux下硬件中断驱动程序的开发.pdf 2003 年 6 月 航空精密制造技术 Jun. 2003 第 39 卷 第 3 期 AVIATION PRECISION MANUFACTURING ...

最新文章

  1. 快速开发一个PHP扩展
  2. android插件化-apkplug中以监听方式获取OSGI服务-09
  3. UVA - 10615 Rooks
  4. Eclipse中查看没有源码的Class文件的方法
  5. bootstrap表格某一列值相同时_Bootstrap-table实现动态合并相同行(表格同名合并)
  6. [html] 如何禁止移动端的左右划动手势?
  7. jdbc建立数据库连接的helloword
  8. android window设置动画,android - 具有动画的Windowmanager
  9. 34. 丑数(C++版本)
  10. python监控错误语句_Sentry错误日志监控使用方法解析
  11. 程序人生 - 王者荣耀重名代码
  12. AD工程文件与原理图、PCB文件的储存关系
  13. 优秀的音频EQ均衡器音效源码
  14. 解决css font-size设置小字体不生效
  15. 北京的三甲医院都是定点医院吗?不列入医保卡范围不能报销?
  16. Unirech-最新腾讯云国际版注册流程-无需绑定paypal
  17. ant design vue日期组件怎么清空(a-range-picker,a-date-picker)
  18. 简单 sql 语句 实用大全
  19. 关于51/STC单片机中断优先级的调整
  20. redis集群模式登陆

热门文章

  1. C语言之enum的用法和注意事项(枚举类型)
  2. Unity+GME 腾讯新版的游戏语音(游戏多媒体引擎)
  3. 评张逸的“状态和事件本质相同”(上)-DDD话语批评之一
  4. React实现购物车
  5. 2022航电Navigable Proximity Graph-Driven Native Hybrid Queries with Structured and Unstructured
  6. SDL介绍----2、SDL安全设计核心原则
  7. 安卓手机卡顿怎么解决_硬件与软件的赛跑导致苹果系统闪退,安卓手机卡顿,可你们选谁呢...
  8. Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?
  9. android忘记密码找回,安卓手机手势密码忘记怎么办 安卓手机手势密码找回技巧...
  10. 修改定位服务器,修改定位器服务器地址