SOUI官方论坛

 找回密码
 立即注册
查看: 1022|回复: 12

启程输入法架构

  [复制链接]
  • TA的每日心情
    开心
    2020-4-15 08:35
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    38

    主题

    384

    帖子

    2367

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2367

    突出贡献优秀版主

    发表于 2019-10-30 14:34:40 | 显示全部楼层 |阅读模式
    启程输入法包含很多模块,核心就是两个:一个输入法接口,一个是输入法击键逻辑处理。
    输入法接口包含IME和TSF两种,代表微软2代输入法。输入法接口是在编辑器中打开输入法时需要加载的模块,是一个导出特定接口的DLL。
    由于编辑器程序可能是32位也可能是64位,因此输入法接口DLL也要对应的有32位和64位版本。
    一般的输入法都是把击键处理直接放到这个输入法接口DLL中。击键处理不仅要处理击键逻辑,还要负责加载皮肤,显示界面等。
    把这些代码全部放到输入法接口里,优点是由于都在同一个模块处理起来比较简单。
    但缺点更多:
    1、输入法接口模块会很大,4份输入法接口都要增大。
    2、输入法崩溃后,会导致宿主进程崩溃。这是最大的问题。现在输入法逻辑都很复杂,随便一个BUG都可能导致用户的工作全部作废。
    启程输入法的输入法接口只做最简单的按键转发,所有逻辑都在服务进程里处理。
    这样的好处首先是输入法接口功能最小化,逻辑简单,升级也通常不需要升级这些接口,稳定性好,不容易崩溃。
    其次就是所有界面相关的逻辑都在服务进程,服务进程只有一份,内存占用,磁盘占用都更少。
    当然也有缺点:
    启程输入法的服务进程默认是由输入法接口来启动的。在部分程序中(比如Edge),如果一个输入法没有经过签名,这个输入法是不允许在浏览器中启用第三方进程的。所以启程输入法在Edge浏览器中如果服务之前没有打开将不能使用。

    该用户从未签到

    2

    主题

    17

    帖子

    125

    积分

    24:00金丹期

    Rank: 2

    积分
    125
    发表于 2019-10-30 15:12:12 | 显示全部楼层
    对于启程又有了更深入的了解,会越来越好的,加油!!
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 96 天

    [LV.6]常住居民II

    399

    主题

    955

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    10456
    发表于 2019-10-31 11:40:55 | 显示全部楼层
    学习大佬理念,期待输入法做的更上一层楼
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 96 天

    [LV.6]常住居民II

    399

    主题

    955

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    10456
    发表于 2019-10-31 11:41:57 | 显示全部楼层
    支持任意码表吗?可在小拆五笔中推广一波,小拆五笔是外挂在百度五笔上的,理念是追求极限速度
  • TA的每日心情
    开心
    2020-4-15 08:35
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    38

    主题

    384

    帖子

    2367

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2367

    突出贡献优秀版主

     楼主| 发表于 2019-10-31 14:15:52 | 显示全部楼层
    admin 发表于 2019-10-31 11:41
    支持任意码表吗?可在小拆五笔中推广一波,小拆五笔是外挂在百度五笔上的,理念是追求极限速度 ...

    一般的码表都支持,不知道它的码表有什么特别的没有。
  • TA的每日心情
    奋斗
    2020-4-16 12:38
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    1

    主题

    5

    帖子

    145

    积分

    24:00金丹期

    Rank: 2

    积分
    145
    发表于 2020-2-23 10:40:48 | 显示全部楼层
    虽然不懂,但是来逛逛!
  • TA的每日心情

    2020-4-27 09:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    帖子

    43

    积分

    22:00筑基期

    Rank: 1

    积分
    43
    发表于 2020-4-27 01:34:25 | 显示全部楼层
    我想问一下,使用这个输入法在全屏的游戏下无法看到字的候选框,这个问题可以解决吗
  • TA的每日心情
    开心
    2020-4-15 08:35
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    38

    主题

    384

    帖子

    2367

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2367

    突出贡献优秀版主

     楼主| 发表于 2020-4-27 08:55:25 | 显示全部楼层
    550387471 发表于 2020-4-27 01:34
    我想问一下,使用这个输入法在全屏的游戏下无法看到字的候选框,这个问题可以解决吗 ...

    目前不支持游戏。
  • TA的每日心情

    2020-4-27 09:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    帖子

    43

    积分

    22:00筑基期

    Rank: 1

    积分
    43
    发表于 2020-4-27 09:02:33 | 显示全部楼层
    setoutsoft 发表于 2020-4-27 08:55
    目前不支持游戏。

    能在全屏的状态下打中文 已经相当不错不了   像花儿 小狼毫那些的输入法都是只能在全屏的状态下打英文的。

    还有个建言项,能否制作一个自动补全“一对标点”的勾选项。比如我输入“(”,会出现“()”,切待输入的光标正好出现在括号的中间“(|)”。试了一下启程输入法的标点对功能,好像双引号和单引号已经实现,但是书名号,顿号等这些还没实现该 项功能?谢谢
  • TA的每日心情

    2020-4-27 09:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    帖子

    43

    积分

    22:00筑基期

    Rank: 1

    积分
    43
    发表于 2020-4-27 09:18:50 | 显示全部楼层
    550387471 发表于 2020-4-27 09:02
    能在全屏的状态下打中文 已经相当不错不了   像花儿 小狼毫那些的输入法都是只能在全屏的状态下打英文的 ...

    找到了,在编辑符号映射表里面可以进行相关的设置。还有能否制作一个功能,把输入法所有的用户的个性化设置全部导出成一个文件,方便在别的电脑装入后一键式导入,包括设置内容\数据管理等内容。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|SOUI官方论坛 ( 粤ICP备18103663号-2 )

    GMT+8, 2020-5-29 09:03

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表