方案开关

Rime 输入方案通过 switches 声明可切换的状态,例如中英文、半角/全角、简繁转换和字符集范围。玉兔毫的方案 选单会读取已启用方案中的这些声明,并将可发现的选项显示在“记忆选项”列表中。

基本写法

一个两态开关可以写成:

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, ABC ]
    abbrev: [ 中, A ]

其中:

  • name 是开关标识,应该稳定且便于在配置中引用;
  • reset 是部署或重新载入时的初始状态索引;
  • states 是方案选单显示的完整状态名称;
  • abbrev 是启用缩写显示时使用的短名称。

需要多个固定选项时,可以使用 options

switches:
  - options: [ zh_trad, zh_simp, zh_hk, zh_tw ]
    states: [ 傳統漢字, 简化字, 香港字形, 臺灣字形 ]
    abbrev: [ 繁, 简, 港, 臺 ]

statesabbrev 的数量应与可选状态对应。选项标识会被其他配置引用,发布后不要随意改名;如果必须改名, 应在方案说明中写出迁移影响。

让方案选单记忆状态

方案选单的记忆列表写入 Rime 的 default.custom.yaml。例如:

patch:
  switcher:
    save_options:
      - full_shape
      - ascii_punct
      - simplification

也可以直接在玉兔毫设置窗口的“输入方案与选单 → 方案选单”页面勾选。列表中的选项必须是已启用方案提供的开关 或由用户手动添加的自定义标识。

如果多个方案提供同一个开关,玉兔毫会把它们视为同一选项并显示相关来源。只有通过方案选单完成的切换才会参与 “记忆选项”机制;方案内部或其他按键绑定触发的切换不一定被记录。

与前端设置的边界

方案开关负责定义 Rime 的状态和候选逻辑,玉兔毫前端负责显示选单、接收按键和记忆状态。方案作者不应把候选窗 颜色、字体或布局写进 switches,这些内容属于 rabbit.custom.yamlstyle 配置。

推荐的分工是:

  • 方案文件定义开关名称、状态文本和状态变化后的引擎行为;
  • default.custom.yaml 调整方案列表、选单快捷键和需要记忆的开关;
  • rabbit.custom.yaml 调整候选窗、预编辑和玉兔毫自身行为。

兼容性检查

发布方案前,至少检查:

  1. 开关在玉兔毫和另一个目标 Rime 前端中都能正常切换;
  2. 重新部署后初始状态符合 reset 预期;
  3. 状态名称和缩写在纵向堆叠、横向流式下都不会溢出;
  4. 被记忆的选项在切换方案、重启程序后仍符合说明;
  5. 删除或更名开关后,旧的 save_options 配置不会造成误导。