嵌入式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. 按[ ] ,. -= 是否翻页,翻页是否正确
嵌入式Linux下开发中文输入法相关推荐
- Linux下安装中文输入法--小企鹅输入法
Linux 下安装中文输入法-- 小企鹅输入法 作者: zccst Linux 系统: CentOS 5.3 刚刚装好的 CentOS 5.3 ,不要说有中文输入法,甚至连中文字体在浏览器里都无法显示 ...
- linux中怎么添加输入法,linux下添加中文输入法
一.安装环境 查看linux版本号 [ztteng@ztteng ~]$ lsb_release -a LSB Version: :core-4.0-ia32:core-4.0-noarch:g ...
- LINUX下安装中文输入法
最近刚给笔记本装了Ubuntu+win10双系统,但是ubuntu16.04没有自带中文输入法,所以经过网上的一些经验搜索整合,分享一下安装中文输入法的心得.本文主要介绍了谷歌拼音跟ibus中文输入法 ...
- 最简单的Linux下设置中文输入法
1,在linux中默认输入法框架为ibus,所支持的输入法也只有英文输入,要想下载外源中文输入法就要先下载支持外源输入法的框架fcitx 2,下载命令为sudo apt-get install fci ...
- 判断linux标准输入法,[fcitx]linux下的中文输入法(非准确)
Fcitx [ˈfaɪtɪks] 是一个支持扩展的输入法框架.它有自己维护的三个输入法,拼音,区位和码表:还支持其他引擎,rime 中州韵,google-pinyin,sunpinyin.Fcitx ...
- linux kde中文输入法,linux 下的中文输入法是不是只能在KDE下啊?Gnome下有吗?名字?怎么装?...
最好给出详细的安装方法,分就全给他了!谢谢! | RedHat7-Chinput3-tiny-HOWTO 2000-09-28 最近更新:2000-10-07 Wu Yulun (migr@opera ...
- linux 系统装中文输入法 fcitx
Ubuntu 9.10下本身有一此中文输入法 IBUS,但是感伤其词库太小,很多常见的字都没有.于是上网授一下linux下的中文输入法,一样平常回答都是SCIM 和 FCITX,这里说一下FCITX的 ...
- 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程
实验5 嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...
- 嵌入式linux中断驱动,嵌入式Linux下硬件中断驱动程序的开发.pdf
嵌入式Linux下硬件中断驱动程序的开发.pdf 2003 年 6 月 航空精密制造技术 Jun. 2003 第 39 卷 第 3 期 AVIATION PRECISION MANUFACTURING ...
最新文章
- 快速开发一个PHP扩展
- android插件化-apkplug中以监听方式获取OSGI服务-09
- UVA - 10615 Rooks
- Eclipse中查看没有源码的Class文件的方法
- bootstrap表格某一列值相同时_Bootstrap-table实现动态合并相同行(表格同名合并)
- [html] 如何禁止移动端的左右划动手势?
- jdbc建立数据库连接的helloword
- android window设置动画,android - 具有动画的Windowmanager
- 34. 丑数(C++版本)
- python监控错误语句_Sentry错误日志监控使用方法解析
- 程序人生 - 王者荣耀重名代码
- AD工程文件与原理图、PCB文件的储存关系
- 优秀的音频EQ均衡器音效源码
- 解决css font-size设置小字体不生效
- 北京的三甲医院都是定点医院吗?不列入医保卡范围不能报销?
- Unirech-最新腾讯云国际版注册流程-无需绑定paypal
- ant design vue日期组件怎么清空(a-range-picker,a-date-picker)
- 简单 sql 语句 实用大全
- 关于51/STC单片机中断优先级的调整
- redis集群模式登陆
热门文章
- C语言之enum的用法和注意事项(枚举类型)
- Unity+GME 腾讯新版的游戏语音(游戏多媒体引擎)
- 评张逸的“状态和事件本质相同”(上)-DDD话语批评之一
- React实现购物车
- 2022航电Navigable Proximity Graph-Driven Native Hybrid Queries with Structured and Unstructured
- SDL介绍----2、SDL安全设计核心原则
- 安卓手机卡顿怎么解决_硬件与软件的赛跑导致苹果系统闪退,安卓手机卡顿,可你们选谁呢...
- Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?
- android忘记密码找回,安卓手机手势密码忘记怎么办 安卓手机手势密码找回技巧...
- 修改定位服务器,修改定位器服务器地址