
输入法
文章平均质量分 63
码农飞飞
这个作者很懒,什么都没留下…
展开
-
TSF框架中预先上屏的字符管理和控制
在TSF框架中有时候我们需要通过框架上屏一些占位字符来进行定位,这时候我们就需要对预先上屏的字符进行管理,以微软的输入法为例图中红框框选出来的部分就是预先上屏的字符。在TSF框架中通过ITfRange类来对这个上屏的字符串进行控制。在进行控制的时候我们通过ITfComposition的接口来获取对应的ITfRange实例,在获取对应的实例之后,我们就可以通过ITfRange的对应的接口来进行控制上屏的字符串了。ITfRange中的几个比较关键的接口说明如下://改接口主要负责设置预先上屏的原创 2022-03-27 10:13:00 · 856 阅读 · 0 评论 -
快速搭建一款输入法(前端UI搭建)
前端UI显示是仿照手机输入法进行设计的,支持触摸屏点击输入,也支持实体键盘输入。前端UI将将输入模式分为:英文输入、中文输入、符号输入、数字输入、手写输入五种。英文输入模式下用户可以输入英文符号,通过Shift键来切换对应的大小写字符。显示效果如下:点击右下角的中英文切换按钮可以实现中英文输入模式的切换。中文输入模式下用户可以通过拼音输入获取各种候选,从而实现各种中文字符的输入。中文输入模式效果如下:中文输入模式下第一行显示用户输入的拼音串,第二行显示候选,我们可以通过滑动候选...原创 2022-03-21 12:44:54 · 1633 阅读 · 2 评论 -
快速搭建一款输入法(封装输入法引擎)
输入法最核心的是输入法引擎,输入法引擎负责加载和管理输入法配置和输入法的词库,输入法引擎对用户输入的拼音字符串进行处理并返回对应的候选列表。通过引入输入法引擎我们就可以将我们输入法的拼音串转换成对应的中文候选了。这里我不建议用户自己开发输入法引擎,这个难度还是很大的,涉及到了音节拆分和智能组词等等。如果是简单的使用的话,采用开源的输入法引擎库就行,这里我采用的是谷歌的开源输入法引擎,引擎项目的地址如下:GitHub - lelelongwang/GooglePinyinIME: Google 拼音输原创 2022-03-12 15:06:31 · 3662 阅读 · 7 评论 -
fcitx架构介绍和模块说明
fcitx的架构比较简单,输入法的宿主进程称为输入法的客户端,输入法框架从客户端接受按键消息,然后对按键消息进行处理最后向客户端输出一个处理后的字符串。fcitx处理键盘事件分为四个阶段:PreInput,DoInput,PostInput和处理热键。我们的输入法在DoInput这个阶段被调用。fcitx的插件被分为四个类别:Frontend,input Method,Module,和User Interface,Frontend负责从客户端程序接收按键消息,然后将消息转发给fcitx框架,Inpu原创 2022-02-26 15:36:16 · 4348 阅读 · 0 评论 -
fcitx框架接口使用说明
Fcitx (Flexible Input Method Framework) ──即小企鹅输入法,它是一个以 GPL 方式发布的输入法平台,可以通过安装引擎支持多种输入法,支持简入繁出,是在 Linux 操作系统中常用的中文输入法。由于fcitx的开发者比较小众,相应的说明文档比较少,这里对fctix里面常用的接口进行了分类说明,希望有帮助。输入法管理fcitx输入法状态管理的各种接口//注册输入法//在输入法的插件里面通过该接口向输入法框架里面注册输入法void FcitxInst原创 2022-02-20 09:18:57 · 1115 阅读 · 0 评论 -
fcitx功能插件的开发和应用
Fcitx框架添加插件Fcitx插件可以分为四类分别是:1.Frontend2.Input Method3.Module4.User InterfaceFrontend插件负责接口按键消息并把消息传递给Fcitx框架,InputMethod插件负责将键盘输入转换成他们的语言信息,也就是输入法的核心模块Module是通用模块,通过注册钩子实现各种各样的功能User interface模块负责通过屏幕展示各种UI元素如果插件需要配置文件的话,插件首先应该提供一个配置描述文原创 2022-02-12 14:34:06 · 1428 阅读 · 0 评论 -
基于TSF框架的输入法注册流程分析
原文链接输入法注册基于TSF框架的输入法其实本质上就是一个COM程序,通过regsvr32.exe进行注册,注册的命令如下所示.regsvr32.exe sogou.ime //注册输入法regsvr32.exe /u sogou.ime //取消注册输入法1.调用对应的注册回调函数这里解析一下输入法COM程序的注册流程。在注册输入法的时候,会调用对应的输入法动态库里面的DllRegisterServer()函数,在卸载输入法的时候会调用 DllUnregisterServer()原创 2021-07-21 21:53:24 · 2081 阅读 · 0 评论 -
输入法开发基础
原文链接输入法作为使用频率最高的软件之一,现有市场已经几乎被搜狗输入法垄断。也正是由于垄断,导致现有的输入法开发项目和开发资料比较少。在这里将自己最近收集的一些内容整理出来,供想做输入法开发的开发人员参考。输入法开发最为重要的就是开发框架,它是输入法与系统中有输入焦点的应用之间连接的桥梁,将用户输入的文字传输到对应的应用中。不同系统下输入法开发使用的框架不同,windows系统下使用的框架有:IMM-IME和TSF,Linux系统下使用的框架有fcitx和ibus,不同的框架应对的使用环境和原创 2021-07-18 17:15:38 · 4713 阅读 · 1 评论 -
输入法TSF框架候选栏定位研究
原文链接在开发输入法应用的时候,我们需要让候选栏时刻跟踪输入光标的位置,来进行输入。但候选栏定位不准,一直会困扰输入法的开发者。windows老的输入法框架imm在部分场景下比如chrome应用中会定位不准,而新的输入法框架TSF在部分应用中也会定位不准比如Notepad++等应用。解决定位不准的问题,通常有两种方案1.通过应用获取输入光标的位置然后进行候选定位2.通过TSF框架预先上屏占位符号进行定位两种方案各有利弊,这里我介绍一下两种方案1.通过应用的输入光标进行定位,获取光原创 2021-07-18 17:02:25 · 1259 阅读 · 0 评论 -
输入法基本概念
万里之行始于足下,在真正的开发输入法之前需要了解输入法的相关概念。这里根据作用的层次不同将输入法的基本概念分为三类:1.框架层概念(和系统交互)2.UI层概念(和用户交互)3.功能模块层概念(和输入引擎交互)<1> 先介绍一下框架层的一些概念。在windows系统从win98到winxp再到后来的win7、win8、win10。Windows 提供了两套输入法框架:在 Windows XP及之前,是 IMM(Input Method Manager),即输入法引擎,基于.原创 2021-06-11 17:12:49 · 2218 阅读 · 1 评论