🧠 超级处理器 (Super Processor):万象的按键中枢神经
这不是一个简单的快捷键脚本,这是一个接管并重塑整个输入法按键生命周期的“底层事件总线”。
在传统的 Rime 生态中,按键拦截逻辑往往是极度碎片化的。多个独立脚本“各自为战”,极易引发底层状态机的冲突、死锁与按键劫持。
万象的 super_processor.lua 彻底重构了这一架构。它打造了一个统一且极速的按键调度中枢,将以词定字、数字键调度、分词循环、字母选词、符号快打、重复限制、退格限制、声调回退 8 大核心能力,完美融铸于一个极其高效的毫秒级处理环内。
技术跃迁:跨语言正则转译引擎 (Regex Transpiler)
更具技术突破性的是,为了实现“零误判”的数字键正则路由调度,我们在底层专门自研构建了一套 C++ 至 Lua 的正则语法解析与转译引擎。它打破了底层引擎与上层脚本之间的跨语言正则解析壁垒,让万象既拥有 C++ 级别的严谨匹配机制,又具备 Lua 级别的极致动态张力,在配置层减小用户心智负担!
🌟 核心功能全景解析
1. 🎯 以词定字 (Select Character):拆词利器
遇到不会打的单字怎么办?打一个包含它的词组,然后单独提取!
-
操作逻辑:当你输入编码并出现候选词时,按下
[即可自动上屏候选词的第一个字;按下]则上屏最后一个字。 -
(例如:想打“试”字,输入
ce ui出现“测试”,按下],“试”字直接上屏)
2. 🔢 小键盘与“正则路由”引擎 (Numpad & Regex)
你在打字时,按下键盘上的数字键,它到底是应该“选词”,还是应该把“数字输入到编码区”?
万象通过极度聪明的正则表达式路由 (Recognizer Patterns) 解决了这个千古难题。
智能数字调度逻辑
万象底层会将方案中的 recognizer/patterns 转化为 Lua 正则表达式。
-
场景 A (匹配正则):当你输入
N202(日期模式)或V12+(计算器模式)时,底层探测到你正在输入特殊格式,此时按下数字键5,它会老老实实作为编码进入输入框(变成N2025)。 -
场景 B (常规选词):当你在正常打字时,按下数字键
1-9,它会立刻识别为选词操作,将对应候选词送上屏幕!
⌨️ 小键盘 (NumPad) 独立行为模式
除了主键盘的数字键,万象还允许你独立控制外接或全尺寸键盘右侧小键盘(NumPad)的专属行为。通过在配置中修改 kp_number_mode,让小键盘完美适配你的输入流:
select(选词对齐模式 / 默认) 小键盘的数字按键行为完全对齐主键盘的数字键。打字时按下小键盘数字,直接执行候选词上屏;匹配到正则规则时,则进入编码区。最符合大众的常规输入直觉。auto(智能跟随模式) 只有在输入框中已有字母(正在输入拼音)的情况下,小键盘打出的数字才会进入编码区。如果当前没有输入拼音,敲击小键盘会直接把数字输出到屏幕上(相当于中英混输场景下的极速数字输入,无需切换英文状态)。compose(强制编码模式) 小键盘打出的数字永远不会直接上屏,也绝对不会作为选词键。它会无条件跟随你正在敲击的按键,强行进入编码区。极度适合需要大量混合输入字母与数字编码的特殊工作场景。
3. ✂️ 超强分词循环 (Super Segmentation)
对于PRO长拼音,系统的自动分词(切割音节)由于辅助码差异问题,切分可能不符合你的预期。
-
操作逻辑:在输入长拼音后,你可以连续按下分词符
'(单引号)。 -
魔法效果:万象的处理器会动态计算音节长度,每次按下
',系统就会在不同的分词组合边界(如2-2、1-3、3-1)之间无缝循环切换,直到切出你想要的那个词!更长的句子切分统一按2均分,因为此种状态还要用不可能再去动态处理。
4. 🛡️ 极致防误触引擎 (退格与重复限制)
在高速盲打时,误触是不可避免的。处理器在底层为你加了两道安全锁:
-
退格限制 (Backspace Limit):当你长按退格键删除错误拼音时,如果删到底了,传统的输入法会继续删除你已经上屏的正常文字!万象拦截了这一行为,在清空编码的瞬间会强制“刹车”,保护你辛苦打出的内容。
-
重复限制 (Limit Repeated):如果你不小心把手压在了键盘上,输入了超过 8 个相同的声母(如
ffffffff)或超过 40 个无效音节,系统会立刻阻断并提示〔已超最大重复声母〕,防止 Rime 引擎因为计算庞大无效图纸而卡死崩溃。
5. 🎵 声调回退与压缩 (Tone Fallback)
万象支持输入数字作为声调辅助。但在快速敲击时,很容易手抖打出多个相同的声调(如 wang888)。
- 操作逻辑:处理器会自动将连续相同的声调数字进行无损压缩,
wang888会被瞬间折叠纠正为wang8,绝不干扰后续选词,这一特性还让输入错误变得没有代价,原来需要删除重新输入,现在我们只需要按下7890循环即可,出现想要的字就停下。
6. 🔠 特殊模式的字母选词 (Letter Selector)
当你在输入金额大写(如 R123)或时间模式时,数字键被占用了怎么办?
此时,数字键 1-9 会自动交接给主键盘的 q, w, e, r, t, y, u, i, o 键,让你依然可以通过字母进行极速选词!
🛠️ 如何配置与自定义?
上述的所有神仙功能,你都可以通过在 wanxiang.custom.yaml 中打 Patch 来自由开关和调节:
patch:
# 开启以词定字,设置 [ 上屏首字,] 上屏尾字
"super_processor/select_character": "[,]"
# 重复限制阈值:"最大连续相同声母数, 最大允许音节数"
"super_processor/limit_repeated": "8,40"
# 小键盘数字键模式:select(选词), compose(上屏编码), auto(智能处理)
"super_processor/kp_number_mode": "select"
# 各种底层引擎开关 (true 开启,false 关闭)
"super_processor/enable_backspace_limit": true # 开启退格防误删保护
"super_processor/enable_seg_loop": true # 开启分词符单引号循环切割
"super_processor/enable_tone_fallback": true # 开启声调防手抖压缩
"super_processor/enable_predict_space": false # 联想空格优化 (按需开启)
给极客玩家的正则定制建议
如果你在折腾 Lua 或自定义方案时,发现某些场景下数字键本该输入却变成了选词。
你只需要前往 recognizer/patterns 节点,写一条你的正则表达式。super_processor.lua 在初始化时会自动抓取并转换这些正则,只要你的输入匹配,就会自动触发“放行拦截”,让输入体验无比丝滑。