Skip to content

中文九键

如何启用『中文九键』

前置条件

  • 更新内置输入方案

点击「RIME-RIME 重置」,并选择「确认」,将内置雾凇方案更新到支持中文九键的版本。

启用步骤

  1. 设置中文九键匹配的方案

    注意:如果您使用其他输入方案来配合九键的使用,请参考下面的『RIME 方案如何配置中文九键』修改方案。

    内置的雾凇输入方案中已包含有支持中文九键的方案配置,以下步骤已内置的雾凇方案为例:

    • 点击「输入方案设置」,按住下方输入方案列表中「中文九键」右侧的 ≡ 符号,将其排列到首个位置;
    • 进入「RIME」页面,点击「重新部署」,并等待部署完成。
    • 重新进入「输入方案设置」,确保当前下方的输入方案列表中「中文九键」排列在首位。

    如果方案列表中没有「中文九键」的选项,请将内置雾凇更新到最新的版本。

  2. 启用中文九键布局

    • 点击进入「键盘布局」,选择「中文 9 键」

RIME 方案如何配置中文九键

  • 在全拼的方案文件中添加 t9 配置参数
t9:
# 是否显示 rime 中原始的预编辑文本,默认为 true
# true: 对 preedit 不做处理,显示 rime 返回的原始 preedit 值。
# 如果想通过 lua 自己调整 preedit 的显示,可以设置为 true。
# false: 根据候选字 comment 显示转换后的 preedit 内容。
# 注意:请务必保证候选字 comment 有效且正确,否则可能导致预编辑文本显示异常。
isDisplayOriginalPreedit: false
  • 在上一步修改的方案文件中的 processors 添加 t9_processor

t9_processor 会用来处理九键输入的字符,如回车键、删除键等。

engine:
processors:
- t9_processor
#其他 processors
  • 在上一步修改的方案文件中的 speller 添加 t9 映射

此步骤将词库中的 ASCII 小写字母派生为数字,如 “abc” 映射为 “2”等,输入数字可模糊匹配词库,输入 ASCII 小写字母可精确匹配词库。

speller:
# 注意: 这里添加了数字 0123456789
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
algebra:
# ### 超级简拼(可选)
- abbrev/^([a-z]).+$/$1/ # 超级简拼
- abbrev/^([zcs]h).+$/$1/ # 超级简拼中,zh ch sh 视为整体(ch'sh → 城市),而不是像这样分开(c'h's'h → 吃好睡好)。
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/un$/uen/
- derive/ui$/uei/
- derive/iu$/iou/
- derive/([aeiou])ng$/$1gn/
- derive/([dtngkhrzcs])o(u|ng)$/$1o/
- derive/ong$/on/
- derive/ao$/oa/
- derive/([iu])a(o|ng?)$/a$1$2/
# ### 九宫格映射(必须)
- derive/[abc]/2/
- derive/[def]/3/
- derive/[ghi]/4/
- derive/[jkl]/5/
- derive/[mno]/6/
- derive/[pqrs]/7/
- derive/[tuv]/8/
- derive/[wxyz]/9/

注意:上面的「九宫格映射」部分可以进一步优化为:

- derive/^(.*)$/\U$1/
- xform/[ABC]/2/
- xform/[DEF]/3/
- xform/[GHI]/4/
- xform/[JKL]/5/
- xform/[MNO]/6/
- xform/[PQRS]/7/
- xform/[TUV]/8/
- xform/[WXYZ]/9/

这样可以生成更少体积的 prism 文件及更好的性能,但在不同的输入方案下,两种配置生成的效果不太一样。

具体使用那种配置,自己可以都尝试看看效果,哪种效果好用哪个。

  • 在上一步修改的方案文件中,屏蔽对候选字 comment 处理的 Lua 脚本

常见问题

  • 为什么我使用九键后输入的是数字,且没有中文候选字?

    中文九键必须使用九键方案配置,否则会出现输入数字的情况。方案配置请参考『RIME 方案如何配置中文九键』。

  • 为什么我输入后,有中文候选字,但不显示拼音,而是显示数字?

    这里存在两种情况:

    1. 方案中存在 lua 脚本将候选字的 comment 信息屏蔽了,导致预编辑文本无法正确显示。
    2. 没有为方案添加 t9/isDisplayOriginalPreedit 选项或者此选项值不对。

    无论是哪种情况,都请参考『RIME 方案如何配置中文九键』中的步骤,检查方案的配置。

  • 如何屏蔽候选字右侧显示的拼音?

    点击「键盘设置-候选栏设置」,关闭「显示候选 Comment」选项。

    注意:如果此选项是关闭的,可以重新开启在关闭。

  • 切换数字键盘后,点击数字按键,上屏的是候选字而非数字?

    两种情况:

    1. 使用的是内置的中文 9 键布局。

    此情况请检查:「键盘设定」-「数字九宫格」,关闭「数字键由 RIME 处理」选项。

    1. 使用的是「皮肤」。

    此情况需要将皮肤中数字键盘中的按键 action,由 character 改为 symbol

方案配置示例

以下以雾凇方案 t9.schema.yaml 为例,展示完整配置:

# Rime schema
# encoding: utf-8
# 中文九键输入方案配置
#
# 可选,支持英文:
# 1. 解开 `engine/translators` 下的注释
# 2. 将 `others/Hamster/melt_eng.custom.yaml` 里的文件拷贝至配置目录,该补丁转写了英文的拼写规则到九宫格;
__include: rime_ice.schema.yaml:/
schema:
schema_id: t9
name: 中文九键
version: "3.0.0"
author:
- Dvel
- "[morse.hsiao](https://github.com/imfuxiao)"
description: |
中文九键·T9
dependencies:
- melt_eng # 英文输入,作为次翻译器挂载到拼音方案
engine:
processors:
- t9_processor
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
segmentors:
- ascii_segmentor
- matcher
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- punct_translator
- script_translator
- lua_translator@*date_translator # 时间、日期、星期
- table_translator@custom_phrase # 自定义短语 custom_phrase_t9.txt
# - table_translator@melt_eng # 英文输入
- lua_translator@*calc_translator # 计算器
filters:
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- uniquifier # 去重
calculator:
prefix: "=" # 计算器前缀
show_prefix: true
# 处理符合特定规则的输入码,如网址、反查
recognizer:
import_preset: default # 从 default.yaml 继承通用的
patterns: # 再增加方案专有的:
calculator: "^=.*$" # 响应 lua_translator@*calc_translator,计算器。前缀设定项 calculator/prefix
translator:
prism: t9
spelling_hints: 100
comment_format: []
# 自定义短语:custom_phrase_t9.txt
# ⚠️ 编码要用数字
custom_phrase:
dictionary: ""
user_dict: custom_phrase_t9
db_class: stabledb
enable_completion: false
enable_sentence: false
initial_quality: 99
# 九宫格 1 键上的符号序列
punctuator:
half_shape:
"1": [1, "@", ".", "/", ":", "_", "-", "#"]
"@": [1, "@", , , , ……, ]
"#": [0, "#", "$", "%", "^", "&", "*", "(", ")"]
t9:
isDisplayOriginalPreedit: false
# 输入时按 1 可以分词
key_binder:
bindings:
- { when: has_menu, accept: 1, send: apostrophe }
speller:
alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0123456789
algebra:
# ### 超级简拼
- abbrev/^([a-z]).+$/$1/ # 超级简拼
- abbrev/^([zcs]h).+$/$1/ # 超级简拼中,zh ch sh 视为整体(ch'sh → 城市),而不是像这样分开(c'h's'h → 吃好睡好)。
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/un$/uen/
- derive/ui$/uei/
- derive/iu$/iou/
- derive/([aeiou])ng$/$1gn/
- derive/([dtngkhrzcs])o(u|ng)$/$1o/
- derive/ong$/on/
- derive/ao$/oa/
- derive/([iu])a(o|ng?)$/a$1$2/
# ### 九宫格映射
- derive/[abc]/2/
- derive/[def]/3/
- derive/[ghi]/4/
- derive/[jkl]/5/
- derive/[mno]/6/
- derive/[pqrs]/7/
- derive/[tuv]/8/
- derive/[wxyz]/9/