输入关键词开始搜索

Rime输入法配置:小鹤双拼与小狼毫界面优化

1461 字 约 4 分钟

使用雾凇拼音的小鹤双拼方案时,希望输入双拼编码后按回车,提交的是对应的完整拼音,而不是原始按键;输入过程中的拼音显示在应用输入框中,选词后再由汉字替换。同时精简中英文切换提示,让小狼毫的界面更安静。

例如输入“上屏”的小鹤双拼编码 uhpk:

操作默认结果期望结果
输入 uhpk 后按回车uhpkshangping

配置环境 ​

  • Windows 11
  • 小狼毫 Weasel 0.17.4
  • Rime 1.13.1
  • 雾凇拼音的小鹤双拼方案
  • 方案 ID:rime_frost_double_pinyin_flypy

Rime 用户目录在本机是 D:\Software\Rime\UserConf。其他安装方式通常使用 %AppData%\Rime,下文中的配置文件都位于实际的 Rime 用户目录中。

实现原理 ​

Rime 的编辑器对回车组合键有不同处理:

  • Return 提交原始输入编码,所以小鹤双拼会得到 uhpk。
  • Shift+Return 提交经过 translator/preedit_format 转换的预编辑文本。

雾凇拼音的小鹤双拼方案已经在 translator/preedit_format 中定义了完整的双拼展开规则。例如,规则会把 uh 转换成 shang,把 pk 转换成 ping。因此不需要在 Lua 中重新维护一套小鹤双拼映射,只需要在组字状态下把回车转发为 Shift+Return。

实际配置中还存在一个需要注意的地方:小狼毫的 weasel.yaml 可以在输入方案之前处理回车。如果这里只修改小鹤双拼方案,回车可能已经被前端转换成其他动作,方案内的绑定就收不到原始 Return。因此前端配置和方案配置都需要处理。

小狼毫还支持嵌入式预编辑。启用 style/inline_preedit 后,正在输入的拼音会显示在应用输入框的光标位置,而不是候选面板内;style/preedit_type: composition 表示显示当前拼音组合,选词上屏后由候选文字替换。少数不支持 TSF 嵌入式预编辑的旧应用可能仍会回退到候选面板显示。

中英文切换时显示的状态图标使用 Windows 系统图标尺寸 SM_CXICON,小狼毫 0.17.4 没有单独缩放参数。show_notifications 既可以设置布尔值,也可以设置要显示的通知列表。只保留 schema 后,切换输入方案时仍有提示,但切换 ascii_mode 时不再弹出过大的中英文图标。

修改小狼毫前端配置 ​

编辑 weasel.custom.yaml,在已有的 patch 节点中加入回车绑定。当前配置还包含候选窗的配色、字体和布局设置,合并后的完整 patch 如下:

yaml
patch:
  "show_notifications": [schema]
  "key_binder/bindings":
    - { when: composing, accept: Return, send: "Shift+Return" }
    - { when: composing, accept: KP_Enter, send: "Shift+Return" }
  "style/color_scheme": so_young
  "style/font_face": "霞鹜文楷"
  "style/font_point": 14
  "style/horizontal": true
  "style/inline_preedit": true
  "style/label_font_face": "霞鹜文楷"
  "style/label_font_point": 14
  "style/layout/border_height": 0
  "style/layout/border_width": 0
  "style/layout/candidate_spacing": 10
  "style/layout/corner_radius": 8
  "style/layout/hilite_padding": 8
  "style/layout/hilite_spacing": 3
  "style/layout/margin_x": 8
  "style/layout/margin_y": 8
  "style/layout/spacing": 10
  "style/preedit_type": composition

这里使用 when: composing,所以只有正在输入拼音时才转换按键。没有输入内容时,主回车和小键盘回车仍保持正常行为。

样式配置的作用如下:

配置项当前值作用
show_notifications[schema]仅保留输入方案切换提示
style/color_schemeso_young使用内置的“致青春”配色方案
style/font_face霞鹜文楷设置候选文字字体
style/label_font_face霞鹜文楷设置候选序号字体
style/font_point14设置候选文字字号
style/label_font_point14设置候选序号字号
style/horizontaltrue使用横向候选列表
style/inline_preedittrue在应用输入框中显示正在输入的拼音
style/preedit_typecomposition内嵌显示当前拼音组合
style/layout/border_height0取消上下边框留白
style/layout/border_width0取消左右边框留白
style/layout/candidate_spacing10设置候选项之间的间距
style/layout/corner_radius8设置候选窗圆角
style/layout/hilite_padding8设置高亮候选项的内边距
style/layout/hilite_spacing3设置高亮区域之间的间距
style/layout/margin_x8设置候选窗横向内边距
style/layout/margin_y8设置候选窗纵向内边距
style/layout/spacing10设置预编辑区与候选区的间距

如果文件中已经有 patch:,不要再创建第二个同名节点,应当把回车绑定和样式配置合并到同一个节点下。

当前本机配置将 style/label_font_point 写成了 style/label_font_poin,末尾少了字母 t。这个错误键名不会覆盖候选序号字号;当前生成配置仍继承默认值 14,所以视觉上暂时没有差异。文中的配置使用正确写法。

修改小鹤双拼方案配置 ​

创建或编辑 rime_frost_double_pinyin_flypy.custom.yaml:

yaml
patch:
  "key_binder/bindings/+":
    - { when: composing, accept: Return, send: "Shift+Return" }
    - { when: composing, accept: KP_Enter, send: "Shift+Return" }
  "translator/preedit_format/+":
    - "xform/[ ']+//"

这部分包含两项处理:

  1. key_binder/bindings/+ 为小鹤双拼方案追加回车绑定,也作为前端绑定失效时的兜底。
  2. xform/[ ']+// 在所有双拼展开规则执行完之后,移除音节之间的空格和单引号分隔符。

如果没有最后一条格式化规则,uhpk 按回车可能得到 shang ping;加入后才会得到连续的 shangping。

使用 .custom.yaml 补丁文件,而不是直接修改 rime_frost_double_pinyin_flypy.schema.yaml,可以避免更新雾凇拼音时覆盖自定义内容。

重新部署 ​

修改完成后,需要重新部署小狼毫。可以从开始菜单选择“小狼毫输入法”中的“重新部署”,也可以在 PowerShell 中执行:

powershell
& "D:\Software\Rime\weasel-0.17.4\WeaselDeployer.exe" /deploy

安装目录或版本不同,需要相应修改命令中的路径。

部署后可以检查生成配置:

  • build/weasel.yaml 中应当包含 Return 到 Shift+Return 的绑定。
  • build/weasel.yaml 中的 inline_preedit 应当为 true,preedit_type 应当为 composition。
  • build/weasel.yaml 中的 show_notifications 应当只包含 schema。
  • build/rime_frost_double_pinyin_flypy.schema.yaml 的 translator/preedit_format 末尾应当包含 xform/[ ']+//。

验证结果 ​

重新部署后,在小鹤双拼方案中测试:

输入操作输出
uhpk主回车shangping
uhpk小键盘回车shangping
无输入回车正常换行

输入 uhpk 但尚未选词时,完整拼音应当显示在应用输入框的光标位置,候选面板只显示候选文字;选词后,汉字会替换输入框中的拼音。

切换中英文时,光标旁不再弹出状态图标;切换输入方案时,方案名称提示仍然保留。

注意事项 ​

weasel.custom.yaml 可能由小狼毫的界面设置工具重新生成。之后如果修改候选框样式,应当确认其中的 key_binder/bindings 仍然存在,并重新部署。

当前 Rime 配置仓库通过 .gitignore 中的 *.custom.yaml 忽略本地补丁,因此以上两个自定义配置文件不会被 Git 跟踪。本次修改也不需要执行 git add 或 git commit。