那天 MeshCN 微信群里,上海-农药 发了两张照片,上面是同一台 nRF52 手持设备:
- 一张在英文键盘上方出现了 “yes / yet / you / yard / yeah”
- 另一张是中文输入法,刚敲了一个「你」,下面已经排好一整行候选句子。
如果你长期拿着 Meshtastic/Meshcore 节点在山上、屋顶、工地跑,应该对这块小屏幕上的键盘感情复杂——能用,但很费劲。农药这次做的,就是在原有的 on-screen keyboard 上,硬塞进一个联想输入功能,让它不再只是一个纯靠摇杆挪来挪去的「电子点阵板」。
下面就用几段话,把这个功能拆开聊聊:它具体解决了什么痛点、在哪些场景特别好用,以及在一颗小小的 nRF52 上,要付出怎样的代价才能做到这件事。
之前的打字体验:不是在聊天,是在练手速
先回忆一下,没有联想输入之前,我们是怎么在手台上打字的。
屏幕下半部分是一排排小方格,按 QWERTY 排列。你用拇指控制摇杆,把光标挪到想要的字母上,停住,再按确认,光标跳回下一格,然后继续挪。
打一个 “how are you” 这种礼貌问候,都要经历一轮「上上下下左左右右 OK」的组合技。
中文拼音输入法更是折磨。先敲完拼音,再切到候选区选字,一整句话敲完,感觉快得关节炎了。
久而久之,大家在手台上的表达就开始简化。能用预设消息就用预设消息,能发 “OK” 就绝不打 “我这边已经重启中继了,你再测一次”。中文对话更是直接退回到原始人语气:“在?” “弱。” “重启。”
设备是好设备,LoRa 也很能打,但只要一想到要在那块小屏幕上「慢慢挪光标」,很多人心里就自动打了个折扣。
有了联想输入之后:摇杆终于不用干体力活了
联想输入的核心思路其实很朴素:当你输入几个字母或拼音之后,设备会在下方自动给出一行候选词,你只要把光标移动到这一行上,左右拨一拨,就能直接选中一个完整的单词或词组。
举个最直观的例子。以前打 “how” 必须老老实实从 h 挪到 o,再挪到 w;现在你只要打完 ho,候选区就会蹦出 how、home、hot 之类,你往上一推,选中 how 确认,一整个单词就到手了。

中文这边的提升更明显。输入 ni,以前只是「你」「呢」这些单字;现在候选里可以直接出现「你」「你好」「你在吗」。只要往候选区切一次,左右晃几下,你就可以用非常少的操作,完成一句完整的问候。

从手感上来说,这个改动带来的改变很直接。过去,摇杆的工作是从几十个方格中慢慢找字母,现在更像是从几条候选里挑一个最顺眼的。视觉上没多复杂,但你手指要做的工作量,是真的少了一大截。
什么时候最能感受到它的价值?
这个功能最有存在感的场景,基本都和手机不在身边有关。
最典型的是爬山或者维护屋顶节点。你背着电台、天线、工具上山,手机要么没信号,要么舍不得亮屏。以前要在手台上改节点名字、回一条消息,基本都是「能少说就少说」;现在有了联想输入,哪怕只靠摇杆,你也敢写清楚一点:你可以认真打一句「我在梧桐山顶,刚换了天线」,而不是随便敲个 “ok”。
第二种是临时排查问题。比如 MeshCN 群里常见的玩法:深圳这边 traceroute 一下,广州那边拿手台回报数据。以前很多时候你只会回一个数字:“-95”,或者 “弱”;现在你可以用差不多的时间,打出「这边 RSSI -95,有点勉强」,对方看完会清楚得多。
第三种其实挺日常:你只带着手台出门,把它当成一种「离线短信机」。以前,大家在这种模式下发的多是表情、短语、预设消息;现在,有了联想输入,写一句完整的中文或者英文短句,麻烦程度已经降到一个可以接受的水平。
当打字不再那么折磨,大家自然就更愿意在手台上多说两句,而不是凡事都等回家开电脑或掏手机。

如果硬要对比有无联想输入前后的体验,我会用三个维度来形容。
第一是操作次数。没有联想词的时候,一句完整的话往往要几十次摇杆移动加确认。现在因为很多单词、词组可以通过候选直接选,输入同样一条消息,手指要做的动作明显少了一半以上。
第二是信息密度。以前你可能只愿意回复一个「在?」或者 “ok”;现在,同样花二十秒,你已经可以发一句「我在太阳能节点旁边,刚更新完固件」。对整个 Mesh 网络来说,带宽没变,但每条消息承载的信息量已经上去了。
第三是表达意愿。当你知道在这块屏幕上认真打一句中文并不太痛苦时,你就会自然把自己的想法说清楚一点,而不是全部交给对方猜。
技术背后:在 nRF52 里塞下一整个小词库
聊完感受,稍微讲一点点技术层面的东西。
我们现在习惯的手机输入法,动辄上百 MB 词库,再加上一大堆语言模型、云端同步。nRF52 这种 MCU 就完全不是一个量级的东西了:闪存和 RAM 都很紧,一边要跑 LoRa 协议栈、蓝牙和 UI,一边还要挤出空间放一个能用的中英文词库。
能做到这一步,大概经历了几层难题。
首先是字库怎么塞。不可能把完整的现代汉语词库和所有英文单词塞进去,只能做减法,挑那些高频、且跟 Meshtastic 场景相关的词。像「你好」「在吗」「山顶」「中继」「节点」这种,就很有机会留下来。为了省空间,词库结构上也要动刀,比如通过共享前缀、压缩存储、拆分拼音和汉字映射关系等方式,让同样的闪存装下更多内容。
然后是联想算法怎么写。电脑和手机上可以用复杂的模型来预测你接下来要打什么字,在 nRF52 上则必须克制。中文这边还多了一层难度。拼音可能对应好几个汉字,一串拼音也可能对应不同的短语。要让 nihao 更大概率变成「你好」,而不是拆成两个无关的字,就需要在词库中保存一定数量的短语信息,同时在空间和效果之间尽量找平衡点。
最后还有 UI 的细节。原来的屏幕键盘只负责光标移动,现在多了一行候选区域,就要重新定义摇杆的行为:上下是切区域,左右是在区域内移动,确认键什么时候选字、什么时候换行,都需要一点点试错和调整,才能让体验既直觉,又不容易误触。
这些东西平时藏得很深,你只会在屏幕上看到一行朴素的小词条。但恰恰是这些你看不到的活,上海-农药 大佬在背后花了很多时间去钻研和完善。
本文作者: Hays Chan | 陈希
本文链接: https://meshcn.net/predictive-pinyin-input-experience/