RESEARCH / PRACTICE / NOTES

明月输入法

一个还在开发中的 iPhone 五笔输入法:86 与 98 分开,输入留在本地,打开就能用,也让常用候选慢慢回到前面。

#工程实践
关键词五笔iOS输入法
日光下,一部深蓝色手机与实体键盘相邻摆放,前景散落四枚不同颜色的键帽
本文目录 · 5 个章节
  1. 先把键盘留给输入
  2. 86 和 98,分开但不用重新认识一遍
  3. 候选会学习,但只在这台手机上
  4. 有些事情,还是交给系统
  5. 现在做到哪里了

一段话想打出来,事情本来应该很简单。

可是在 iPhone 上用五笔时,我常常先要面对另一件事:键盘上总有很多不属于输入本身的入口;有的输入法功能很全,但需要花不少时间配置,才能变成自己顺手的样子。

所以有了 明月输入法。

先把键盘留给输入

表情、皮肤、快捷服务,或者把 AI 放在输入的入口里,对不少人都有用。愿意花时间调整的用户,也会需要足够细的配置和可扩展性。

只是我想做的,是另一种选择。

有人打开键盘时,只想把一句话安静地打完;不用在一排功能入口里找字,也不用先理解一套复杂的方案,才知道该怎样输入。明月输入法不打算替这些需求做判断,只把自己留在更小的一边:打开就能用,功能只围绕五笔输入,数据留在本地。

第一次打开时,先选 86 或 98,再跟着系统设置把键盘加进来。它不要求“完全访问”,也不需要登录、联网或先装一套配置文件。之后按地球键切到它,开始打字。

下面这张是 Xcode 模拟器里的开始页。入口只保留选版本、添加系统键盘和试打;第一眼能做什么,应该足够明确。

Xcode 模拟器中的明月输入法开始页,提供 86 与 98 选择以及添加系统键盘的两步说明

86 和 98,分开但不用重新认识一遍

86 和 98 都应该是完整的方案,不是同一张码表上的一个小开关。

所以它们各自使用自己的词库、候选习惯和个人短语;切换版本时,界面还是同一套界面,手感也不必跟着变复杂。空格选字、四码唯一上屏、第五码顶字、中英文、数字和常用标点,都先放在日常输入会经过的位置。

下面两张来自 Xcode 模拟器:左边是输入 q 时的 86,候选“我”留在最前面;右边是 98 的深色界面。候选仍在同一行里,需要多一点时再展开。

Xcode 模拟器中的明月输入法 86 键盘,输入 q 后显示我、氏、钳工等候选

Xcode 模拟器中的明月输入法 98 键盘深色界面,显示系统添加键盘后的实际输入状态

98 也沿用这套克制的排布,只把编码方案换回它本来的样子。深色模式、横竖屏和不同大小的输入框,也都在这一轮一起检查。

候选会学习,但只在这台手机上

候选字不是越多越好,先看得清、点得准更重要。

明月输入法现在有一点很轻的本地学习:如果我总是在同一个码下面选择同一个候选,它会在第二次确认后慢慢把这个候选放到前面;如果后来总是改选别的,或者很久不用,旧偏好也会退回去。

它只记住输入的五笔码和实际提交的候选,不读取整段输入,不上传网络,也不改写内置词库。名字、地址和固定短句这样真正需要保留的东西,仍然应该由我在“个人短语”里明确添加;本地学习也可以关闭或一键清掉。

设置页会明确显示本地学习的状态和已学习数量;个人短语则独立出来,由我自己决定写什么、什么时候删掉。下面这组截图分别是这两个位置。

Xcode 模拟器中明月输入法的设置页,显示本地学习开关和已学习候选数量

Xcode 模拟器中明月输入法的个人短语页,显示为 86 方案添加的明月输入法短语

我希望键盘能稍微熟悉我的习惯,但不该悄悄变成另一份聊天记录。

换新设备时,也不该把这点习惯重新从零养一遍。现在可以手动把个人短语、输入偏好和本地候选学习导出成一份归档,再在另一台设备上合并导入。内置码表和完整输入内容不在归档里;文件本身不加密,适合放在自己信任的位置保存。

有些事情,还是交给系统

验证码是一个很小、却很容易让人烦的场景。短信来了,iPhone 本来就会在输入框附近给出自动填充建议;输入法应该让这个入口清楚可用,而不是多接一层自己的流程。

下面是 Xcode 里切到验证码输入框的测试。数字键盘和系统的验证码自动填充提示仍然留给系统处理。

Xcode 模拟器中的验证码输入框,键盘上方显示切换键盘以自动填充验证码的系统提示

现在做到哪里了

这还不是一个已经上架的产品。目前已经完成并在模拟器里反复检查的部分包括:

  • 86、98 两套独立码表与候选逻辑;
  • 候选选择、翻页、空格上屏、五码顶字、中英文、数字和常用标点;
  • 个人短语,以及可关闭、可清除的本地候选学习;
  • 个人短语、输入偏好和本地候选学习的手动归档与合并导入;
  • 普通文本、网址、邮箱、数字、密码和验证码等常见输入框;
  • 明暗主题、横竖屏,以及以 iPhone 11 及更新机型为目标的窗口适配。

这几天又补了一层不太会出现在界面里的工作。

86 和 98 的词库,各自新增了 300 条来自另一份公开码表的固定核对样本。它们不是拿同一份词库再算一次答案:每条都保留了来源版本、文件校验值和原始行号,覆盖从一级到四级的编码,也留了一些词组。完整检查时,会先确认它们还在内置词库中,再跑原有的输入状态回归和 Xcode 编译。

开发工具也和 App 源码分开整理了。词库转换、工程检查和模拟器回归仍能找到正确的项目目录;构建缓存只留在本机,不会随着源码进入仓库。这样的事很安静,但它让以后每一次改词库、改键盘布局,至少还有一条可以重复走的检查路径。

不过,这仍然不等于真机已经验收。

原本下一步是把它装到真实 iPhone 上。现在这台开发机还没有配置真机签名,也没有连接可部署的设备,所以这一段还不能写成“完成”。模拟器里能证明的,是键盘扩展、候选、布局和许多宿主交互确实跑过;它不能替代真实设备上的权限、系统回调、耗电和短信自动填充。

接下来仍要做的,主要不是再往键盘上堆功能。

签名和设备就绪后,我会从备忘录、信息、Safari 和更多日常 App 开始持续输入,继续核对真实短信到达时的系统自动填充、VoiceOver、长时间输入的性能与耗电。不同 iOS 版本的安装、启用、键盘高度、深浅色、输入法切换和验证码自动填充,也还要逐项重新走一遍;现在还不能把它们当成已经完成的兼容性承诺。Duo 的内外屏切换已经有专门的回归用例,最终一轮系统级复测仍在等待开发工具的自动化窗口恢复。跨设备同步和更多方案支持,也都还在后面——它们需要先想清楚,不能为了“有”就把配置和数据边界重新弄复杂。

明月输入法还在开发中。

先把“安静、可靠、好打”的第一步走稳。敬请期待。

交流与讨论

评论加载中…

随便读一篇 →

站内搜索

输入关键词开始搜索。

搜索内容不会上传 Esc 关闭

订阅明月入怀

将下面的网址添加到你的 RSS 阅读器。