文件
crab-input-rtos/com.sydxky.rtos.inputmethod/README.md
T

8.5 KiB
原始文件 Blame 文件历史

蟹蟹输入 / Glyphix RTOS

蟹蟹输入 RTOS适配改版:基于CrabKeyboard的独立改版,RTOS适配代码采用MIT协议,允许商用、修改及再分发,须保留版权与许可。上游与第三方署名见NOTICE.md。公开源码:https://git2.sydxky.cn/sydxky/crab-input-rtos;免注册匿名反馈。

独立应用 com.sydxky.rtos.inputmethod,版本 1.2.2 / 10202。基于 CrabKeyboard 的 MIT 全量词库和拼音前缀消费方式,重写为 Glyphix .ux 页面;不依赖 HarmonyOS HML、Android 输入法服务、DOM 或网络。

1.2.2 修复文字与键盘之间的多余空隙,圆屏按键上移后同步检查安全边界;本版验证范围见间距修复验收。

1.2.0 完整候选重做为 4×4 网格:单字每页16个,2~4字词组占两格,长词占整行并可增加行高;保持原有顺序,最后一页可达,不显示候选拼音。圆/方普通及QuickApp四配置已通过84项原生操作、84项布局及48个视觉状态,见验收记录。同源新增Android应用内键盘组件,独立包名、无需联网,接入应用的输入框自动弹出,保持系统默认输入法。

1.0.1 按用户选择重做为浅色手机输入法风格:浅灰底、白色大按键、深色候选和蓝色主操作。候选栏与模式栏减少色块,英语和数字模式隐藏无用候选区;首页只突出一个输入主按钮。设计规范见 DESIGN.md。

1.1.0 将全拼和英文改为标准 QWERTY 10/9/7 三排,新增公开华为风格的 14键双字母拼音,布局及独立离线消歧算法见 14键说明。修复键盘容器被压缩导致末排裁切、四候选列表间距超出父容器、背景留黑的问题,圆屏下方逐行收窄。取消、退格、完成、编辑、键盘返回和翻页使用同一套 iconfont / Remix Icon 线性图标,保留“空格”和输入模式文字。SVG 原稿、来源和 Apache-2.0 许可见 图标说明;运行包采用本地透明 PNG,不增加网络请求。

上游固定提交 93d36b5002dee80a3d253b1ec7ec9e29800a104c(v2.0.0-patch01)。41 个原始词库文件均按 Git blob SHA-1 验证后保存于 third_party/crabKeyboard/,许可证和原始读取器一并保留。全量数据包含 104,837 组拼音/缩写索引、163,238 个候选项;这是索引项计数,不表示不同词语数。按原词库内容逐字/逐词组合输入长句。

使用

  • 点击首页文字区或“开始输入”即打开满屏键盘。完成回填;取消保留原文。草稿需主动保存,仅保存在本应用。
  • 默认九宫大按键。“26键”切到标准 QWERTY 全拼,v 表示 ü;“九宫”切回九宫。“14键”直接进入双字母模式。连续点击对应字母组,选择候选后只消费匹配部分,剩余编码继续查词。存在未选词的九宫或14键编码时禁止切换模式/完成,避免丢字或把编码当文字提交。
  • 第一行显示三个候选。点击右侧下箭头按每页四项查看全部匹配候选,左右箭头翻页,不使用原项目扩展列表的 100 项截断。拼音候选保留每组原始顺序;九宫和14键歧义通过本地 jieba 0.42.1 词频排序,学习偏好可优先排序。
  • 支持英文大小写、数字、完整可打印 ASCII 标点与常用中文标点。符号分两组大按键,通过“下一组符号”切换。网址额外提供 https://、.com。
  • 点击文本预览或铅笔图标移动光标、换行、上屏全拼、清空全文。Unicode 字符按码点计数和删除,避免拆坏 emoji。清空全文需第二次点击确认;长按退格图标连续删除,松开/隐藏/销毁停止。勾号完成,叉号取消,键盘图标返回输入。
  • 学习默认关闭,可开启或清除,仅保存最多 100 组、每组三个已选择的真实候选,不记录整段正文。私密输入始终遮盖、不学习、不保存;切到其他应用时清空私密编辑状态。

自动弹出的实际范围

Glyphix 官方 text-field 文档明确说明普通输入框不会弹出输入法。当前厂商工具没有提供系统级输入法注册/全局输入焦点注入接口。本项目交付独立文本应用和可接入页面,不能接管未接入的第三方应用或固件界面。

腕上浏览 1.1.0 同步使用此键盘:点击地址、配对码及兼容网页输入项后直接打开此页。输入法本身全离线;浏览器原有统一账号验证和兼容模式数据告知继续有效。其他应用可按下述方式接入。

# 先构建本项目生成资源,再复制页面/引擎/资源并注册路由。
& '.\build.ps1'
node .\scripts\install.mjs '<目标 Glyphix 工程根目录>'

在业务输入区的 on:click 中调用;页面上保留单一 opening 标志防止重复弹出:

const result = await router.push({uri: 'keyboard', params: {
  initial: this.value, title: '输入内容', inputType: 'text',
  maxLength: 2048, allowNewline: true, secret: false
}})
if (result && result.accepted) this.value = result.text

inputType 支持 text、url、number、pin、password。pin 仅接受数字;number 允许小数点和负号;maxLength 上限 4096 个 Unicode 码点。业务仍需校验数值、网址或配对码的实际格式。不要在异步生命周期中等待页面结果。在宿主 app.js 的 onHide 中调用 clearPrivateInputs(router)(common/ime-lifecycle.js),覆盖厂商页面生命周期差异。宿主销毁后不得继续处理异步结果。

构建和复现

使用非 MSIX PowerShell 7,从本目录执行 build.ps1。脚本先无损转换词库、运行真实引擎和 UX 脚本测试,再用 RTOS 父目录的 OPPO 附件 gx.exe 生成圆/方普通镜像及圆/方 QuickApp 完整目录。SDK 不随源码分发。新机器另需从厂商附件准备工具,先构建/启动 com.sydxky.rtos.snakeov 一次取得 launcher/global 资源;通用 Inspector 支持位于 ../tests/emulator-validate.py。

python .\tests\native.py --work '<独立临时目录>' --output '<原生证据目录>'
python .\tests\visual.py --work '<另一个临时目录>' --output '<原生证据目录>/visual'

原生验收覆盖四配置,每配置 21 项,共 84/84;真实引擎及 UX 脚本分别通过 40 + 29 项断言。实际结果与运行包 SHA-256 见生成的 results.json。测试脚本使用既有离线参考应用执行真实前后台切换;不会接管被其他进程占用的 Inspector 14201。

1.1.0 的原生检查同时逐层核对可见 Button、图标、Label 与父容器边界;圆屏按钮四角限制在半径 230px 内。独立视觉回归覆盖四配置各11个页面状态,共 44/44,并统计靠近屏幕边缘的黑色缺口,避免只检查屏幕边界而漏掉内部裁切。截图保留实际原生画面,未绘制替代界面。详见 本版验收记录。

1.0.0 历史版本的 72/72 原生用例及 26 + 22 项逻辑断言见 此前验收记录。1.0.1 浅色版重新完成四配置 72/72 原生验证,详见 本版验收记录。

内存与词库

convert-dictionary.py 将原始 V5 trie 无损转换为 6779 个编码分片(九宫/全拼4194个、14键2585个),最大分片 116,686 字节。九宫/全拼使用四位前缀,14键使用三位前缀;短编码单独索引。解码缓存限制为四项且 JSON 文本合计不超过 90,000 字符,大分片不缓存。仅当前页最多16个候选进入展开网格,所有候选对象不放进响应式状态。转换器分别回读两种索引,验证与原始索引完全相同;不改写原始字典。

初期两位编码分片曾触发原生模拟器内存回收,已改为四位编码分片。验收保持既有 --memory-profile 8192,没有通过增大模拟器内存规避问题。模拟器耗时不能替代真机帧率、延迟或功耗结论。

MIT 许可副本也随运行包保留。jieba 词频只用于歧义候选排序,不联网、不分词上传。官方公开 API 不足以实现全局输入法安装;本轮仍按用户确认的模拟器与提交包范围交付,真机安装与平台审核单独处理。