日月有常
注意
本方案基于宇浩拆分,为 25.5 键、前缀、五码、三编、音托、全字集、繁简通打输入方案。同传统定长方案输入体验有所不同,请务必充分了解、分析、平衡其风险和收益后再决定是否学习使用。
简介
日月输入法,又称大明输入法、明码,基于宇浩拆分设计制作,是世上第一款纯形前缀码方案,可完全离开空格键进行输入。其名源自尚书大传之「日月有常,星辰有行」。
本方案的字根大部分为三编码,称为大码、声码、韵码;少部分字根为双编码,称为大码、韵码。其中,声码和韵码对应汉语音节中的声母和韵母(韵头+韵腹+韵尾),不考虑声调。更详细地:
- 大码在
BCDFGHJKLMNPQRSTVWXY
等 20 个按键上半聚类、半乱序分布。 - 声码取字根读音的声,在
BCDFGHJKLMNPRSTXZ
等 18 个键上有序分布。对于ZH(ㄓ) CH(ㄔ) SH(ㄕ)
三个声母,将它们映射到SRK
上。部分字根为零声母或近零声母,则不取声码。 - 韵码取字根读音的韵,在
AEIOU
等 5 个键上分布,如遇多元音或特殊元音,则映射到AEIOU
上。 例如:魚
的韵是ㄩ
,映射到E
键上;歐
的韵是ㄡ
,映射到e
键上;月
的韵是UEㄩㄝ
,映射到E
键上。R(ㄖ)
及REN(ㄖㄣ)
、RU(ㄖㄨ)
三个音节较为特殊,作零声母处理。
注意
声码、韵码依照的是字根的实际读音,而不是汉语拼音或者注音符号(事实上,汉语拼音大部分音节都是整体识读的)。比如:
一
的大码为F
,声码为空,韵码为I
,全码为FI
。二
的大码为S
,声码为空,韵码为O
,是读音ERㄦ
的映射。
另外地:
- 如果一个字根有若干读音,一般取最常用的读音作为声码韵码。有时也取不常用的读音来增加手感,如
土
的声码取D
。 - 如果一个字根因为简化字的归并和简化导致了多个读音,一般取古音,如
虫
取hǔi虺
,厂丆
取ān
。 - 如果一个字根无音、或为生僻字、或读音繁杂,则声码为空,韵码取
O
。
注意到,字根声码和韵码取汉字读音的目的是为了方便记忆,因此存在作者的一些人为选择。如果用户不熟悉当代标准汉语,也可以将字根声码和韵码当作无理码记忆。同时,用户只要记忆有限的字根声韵,而不是全部汉字的读音,因此本方案是纯形而非形音的。
下表为汉语拼音的韵母和本方案的韵码之间的对应表:
A | O | E | I | U |
---|---|---|---|---|
a | o uo wo | e ê | i yi | u* wu |
er | ü u* | |||
ei | ai | |||
ou | ao | |||
ia ya | ie ye | iao yao | iu you | |
ua wa | ui wei | üe ue yue | ||
an | in yin | en ian* | ian* uan uen | |
iang yang | ang | ing ying | ||
uang wang | eng | iong yong | ||
(sh)ri* | ren | ru | ri* |
下表为注音符号和本方案的韵码之间的对应表:
A | O | E | I | U |
---|---|---|---|---|
ㄚ | ㄛ ㄨㄛ | ㄜ ㄝ | 〡 | ㄨ* |
ㄦ | ㄩ ㄨ* | |||
ㄟ | ㄞ | |||
ㄡ | ㄠ | |||
〡ㄚ | 〡ㄝ | 〡ㄠ | 〡ㄡ | |
ㄨㄚ | ㄨㄟ | ㄩㄝ | ||
ㄢ | 〡ㄣ | ㄣ 〡ㄢ* | 〡ㄢ* ㄨㄢ ㄩㄢ ㄩㄣ | |
〡ㄤ ㄨㄤ | ㄤ ㄥ | 〡ㄥ ㄩㄥ | ||
ㄖㄣ | ㄖㄨ | ㄖ | (ㄕ)ㄖ* |
下表为汉语拼音音节、注音符号音节、韵码对应表。~
表示任何声母。
拼音音节 | 注音音节 | 韵码 | 举例 | 备注 |
---|---|---|---|---|
~a | ~ㄚ | A | 巴 | |
~ai | ~ㄞ | E | 白 | |
~an | ~ㄢ | A | 干 | |
~ang | ~ㄤ | E | 上 | |
~ao | ~ㄠ | I | 勹 | |
~e | ~ㄜ | E | 禾 | |
~ei | ~ㄟ | O | 黑 | |
~en | ~ㄣ | E | 艮 | |
~eng | ~ㄥ | E | 生 | |
~i | ~ㄧ | I | 一 | |
~ia | ~ㄧㄚ | A | 牙 | |
~iao | ~ㄧㄠ | I | 幺 | |
qian tian dian yan | ㄑ〡ㄢ ㄊ〡ㄢ ㄉ〡ㄢ 〡ㄢ | I | 丶 | 声码在左或无声码时 |
pian jian mian | ㄆ〡ㄢ ㄐ〡ㄢ ㄇ〡ㄢ | E | 面 | 声码在右时 |
~iang yang | ~ㄧㄤ | O | 羊 | |
~ie ye | ~ㄧㄝ | E | 也 | |
~iu you | ~ㄧㄡ | U | 又 | |
~in yin | ~ㄧㄣ | O | 廴 | |
~ing ying | ~ㄧㄥ | I | 丁 | |
~iong yong | ~ㄩㄥ | I | 用 | |
~ong | ~ㄨㄥ | I | 工 | |
~ou | ~ㄡ | E | 缶 | |
bu fu du lu gu hu zhu chu shu zu u | ㄅㄨ ㄈㄨ ㄉㄨ ㄌㄨ ㄍㄨ ㄏㄨ ㄓㄨ ㄔㄨ ㄕㄨ ㄗㄨ ㄨ | U | 鸟 | 非mu/pu时 |
mu, pu | ㄇㄨ ㄆㄨ | E | 母 M | |
~ua wa | ~ㄨㄚ | A | 爪 | |
~uan wan | ~ㄨㄢ | I | 川 | |
~uang wang | ~ㄨㄤ | O | 王 | |
~un wen | ~ㄨㄣ | I | 文 | |
~uo ~o | ~ㄨㄛ ~ㄛ | O | 𠂇 | |
~üan | ~ㄩㄢ | I | 犬 | |
~üê yue | ~ㄩㄝ | E | 月 | |
~ü yu | ~ㄩ | V | 鱼 Be | |
shi | ㄕㄭ | A | 十 TKa | shi时 |
zhi chi zi ci si | ㄓㄭ ㄔㄭ ㄗㄭ ㄘㄭ ㄙㄭ | I | 子 Lzi | 非shi时 |
ri | ㄖ | I | 日 Ji | |
ru | ㄖㄨ | E | 入 Ke | |
ren | ㄖㄣ | O | 人 Wo |
单字取码规则如下:
- 取首根大码和声码。
- 依次取二、三、末字根的大码;
- 不足五码时,补末根声码。
- 不足五码时,补末根韵码。
注意到,大码和声码所在的键位(A区)同韵码所在的键位(B区)互斥,故而韵码可作为单字的自然分隔符。不满五码时,不用空格也可进行连续输入。
本方案全字集低重、繁简通打,其关键数据如下:
- GB2312 重码数 186
- 国字常用字重码数 56
- GBK 重码数 2658
- 简体动态选重率 0.021%
- 繁体动态选重率 0.032%
- 繁简混合动态选重率 0.034%
- 全码速度当量 1.239
更新
20250618 更新
- 丂 -> Fki ~ 匚
- 丅 = 丁 -> Ddi
- 勹 = 冂 -> Ho
- 忄 = 心 -> Jxo
- 舟 -> Jse
- 冖 = ⺈ -> Mo
- 䒑丷 -> Xci
- 皮 -> Dpi
- 丩 = -> Qo
20250622 更新
- 丁下 -> K
- 呙骨 -> J
- 厂丆 -> K
- 臣 -> J
- 片爿 -> S
- 末未 -> B
- 甲电 -> F
- 廴 -> D
- -> D ~ 口
20250630 更新
- 疒 -> Gne
- ⺍ -> Lxi ~
小
- -> Dji ~
⺔
(避免 ⺔ - 豕 编码不一致) 川巛ㄍ
-> Jri (同指不位移优先)工
-> Jgi (同指不位移优先)瓦
-> Ja (同指不位移优先)見
-> GJe ~目
(聚类)
20250723 更新
饣
-> L (和欠
同大码)shi
的声韵码Ku
->Ka
(显著提高手感和击键速度)士
->VKe
(和龶
同码归并)
20250811 更新
凵屮
->Do
(出
字编码KcKka
->DDo
)鸟乌
大码H
->X
20250812 更新
马
,Kma
->Cma
(和𠃌
聚类)
20250813 更新
食
,FKa
->WKa
(和人
聚类)水
,FKo
->WKo
- 厂丆,
Kre
->Ga
(和广疒鹿麻
聚类) - 风虫,
M
->Q
(和几殳
聚类) - 耂,
Vli
->Vo
(生僻字,只做首部,此处作无音化处理) - 壴,
Fsu
->Vsu
(和土士龶耂
聚类)
20250815 更新
肀
,Se
->Sji
(和彐
归并,否则書畫盡
等字拆分不统一,容易卡顿)
20250816 更新
スマ癶
, ->Vo
(解决约十个类似「领颔」的静态重码)
对比
这里展示日月方案和两个经典的汉字输入法的对比:
仓颉输入法
相同点:都是五码定长、全字集、繁简通打。
不同点:仓颉在不足五码的情况下,需要使用空格确认,而日月方案可以完全离开空格键。仓颉的字根是单编码,而日月是双编码或三编码。仓颉的字根是有序的,而日月是近乱序的。
郑码输入法
相同点:都是字根双编码或三编码,首根都可能取到两码。 不同点:郑码首根可能取到三码,日月最多取两码。郑码当主根多取一码的时候会少取一个字根,而日月不管任何情况都会取满四个字根。郑码需要使用空格确认,而日月方案可以完全离开空格键。郑码的字根是有序的,而日月是近乱序的。
简码和码长
简码(此处以简体方案为例)设置如下:
- 一码上屏字,5个:的E、是I、我O、不U、了A。
- 两码上屏字,73个:取首码和末根韵码或空格,如:你WI、和CE。等效一级简码。
- 三码上屏字,600个:前两码和末根韵码,如:段WKU、只DKA、中DKI。等效二级简码。
- 简词:部分一码或二码加空格。
日月方案的单字平均编码(简体文本)长度如下(更多信息参考常见输入法测评数据——简码效率):
- 单字全码:4.352
- 使用效率最高的50个简码字:3.512
- 使用效率最高的100个简码字:3.321
- 使用效率最高的200个简码字:3.151
- 使用效率最高的500个简码字:2.961
本方案是前缀码,因此简码效率显著高于一般的四码定长方案,简码设置的边际效率相对更高。综上所述,在记忆500个简码的情况下,单字平均码长约为3。
简码调整
简码字词在未来可能会根据社群的反馈和需求进行调整。
下表为效率排名前500的二码上屏简码字词,追求极致码长的用户必须熟悉。
a | u | e | o | i | 空格 | |
---|---|---|---|---|---|---|
b | 彩 | 受 | 爱 | |||
c | 妈 | 和 | 以 | 没 | ||
d | 只 | 完 | ||||
f | 再 | 看 | ||||
g | 度 | 把 | ||||
h | 基 | 些 | 起 | 此 | ||
j | 外 | 过 | 多 | |||
k | 下 | 感 | 很 | |||
l | 六 | 就 | ||||
m | 色 | 在 | 著 | 东 | ||
n | 参 | 服 | 然 | |||
p | 大 | 零 | 太 | |||
q | 收 | 发 | 留 | |||
r | 码 | 现 | 这 | |||
s | 头 | 相 | 到 | |||
t | 真 | 各 | 常 | 被 | ||
v | 声 | 都 | 说 | 去 | 地 | |
w | 什 | 你 | 个 | |||
x | 关 | 着 | 前 | 并 | ||
y | 际 | 要 | 怎 | 笑 |
下表为效率排名前500的三码上屏简码字,追求极致码长的用户可考虑熟悉。
三码上屏简码
first | a | e | i | o | u | _ |
---|---|---|---|---|---|---|
bb | 战 | 点 | ||||
bh | 虑 | |||||
bk | 神 | 福 | 社 | 视 | ||
cc | 书 | |||||
cf | 司 | 那 | ||||
ch | 种 | 程 | 科 | 利 | ||
cj | 对 | |||||
ck | 法 | 满 | 没 | 清 | ||
cl | 欢 | |||||
cm | 敢 | 验 | ||||
cn | 好 | 姑 | 如 | |||
cs | 买 | 通 | ||||
cv | 观 | |||||
cw | 难 | 承 | ||||
dj | 改 | |||||
dk | 中 | 哪 | 吧 | 吧 | ||
dm | 定 | 官 | 家 | 实 | ||
ff | 欧 | 医 | ||||
fh | 两 | |||||
fj | 死 | |||||
fk | 与 | 武 | ||||
fl | 远 | |||||
fm | 开 | 形 | 型 | |||
fn | 及 | |||||
fp | 么 | 乎 | 失 | 天 | 系 | |
fv | 来 | 恶 | 严 | |||
fw | 求 | |||||
gg | 应 | 底 | ||||
gk | 接 | 打 | 报 | 找 | ||
gm | 睡 | 眼 | ||||
gn | 告 | 特 | 先 | 物 | 制 | |
gw | 历 | |||||
hb | 则 | 财 | ||||
hd | 够 | 句 | ||||
hf | 同 | |||||
hh | 刻 | |||||
hj | 包 | |||||
hm | 典 | |||||
hq | 期 | 斯 | 甚 | |||
hs | 步 | |||||
ht | 略 | 思 | 男 | |||
hv | 周 | 刚 | ||||
hz | 息 | 趣 | 越 | |||
jc | 星 | |||||
jd | 忍 | 事 | ||||
jf | 帮 | 才 | ||||
jg | 功 | |||||
jh | 易 | |||||
jj | 时 | |||||
jk | 短 | 卡 | 知 | |||
jl | 景 | 影 | ||||
jm | 间 | 晚 | 最 | 问 | ||
js | 盘 | 般 | 果 | |||
jx | 情 | 怪 | 快 | |||
kb | 分 | 公 | ||||
kd | 可 | 回 | ||||
kf | 微 | |||||
kg | 张 | |||||
kj | 团 | 式 | ||||
kk | 具 | |||||
kp | 因 | |||||
kq | 装 | 将 | ||||
kr | 很 | 得 | 行 | 国 | ||
ks | 给 | 终 | 经 | |||
kt | 图 | |||||
kx | 圈 | |||||
lb | 毕 | 比 | ||||
lc | 坚 | 紧 | ||||
lf | 族 | 放 | ||||
lg | 平 | |||||
lk | 饭 | |||||
ll | 熟 | 就 | ||||
ln | 望 | |||||
ls | 政 | |||||
lt | 交 | 率 | 夜 | |||
lx | 光 | 兴 | 当 | |||
lz | 孩 | |||||
mb | 否 | 还 | ||||
mc | 落 | 花 | 黄 | 苦 | ||
md | 追 | 象 | 职 | |||
mf | 写 | |||||
ml | 尔 | |||||
mq | 切 | |||||
ms | 带 | 解 | ||||
mv | 军 | |||||
mx | 联 | |||||
mz | 有 | 左 | 布 | 友 | 存 | |
nd | 良 | 为 | 主 | |||
nf | 缺 | |||||
nr | 脑 | |||||
ns | 台 | 能 | ||||
nv | 脚 | |||||
nw | 脸 | |||||
nz | 跟 | 跑 | 跳 | 路 | ||
pd | 达 | 奇 | ||||
pf | 规 | |||||
pq | 独 | |||||
qf | 印 | |||||
qj | 风 | |||||
ql | 乐 | |||||
rd | 离 | |||||
rf | 球 | 玩 | ||||
rh | 默 | |||||
rk | 理 | 确 | ||||
rl | 亲 | 这 | 部 | 意 | ||
rx | 班 | |||||
sc | 专 | |||||
sd | 冲 | 况 | ||||
sh | 房 | 遍 | ||||
sj | 即 | 进 | ||||
sk | 尽 | 居 | 展 | |||
sl | 资 | 次 | ||||
sm | 机 | 想 | 板 | 样 | ||
sn | 动 | 运 | ||||
sp | 版 | 牌 | ||||
ss | 致 | |||||
sw | 冷 | 准 | ||||
tb | 补 | |||||
th | 爆 | |||||
tj | 初 | |||||
tk | 索 | 直 | 南 | |||
tp | 条 | 备 | 处 | 务 | ||
vc | 词 | |||||
vd | 地 | 城 | 场 | 却 | ||
vf | 后 | 考 | 语 | |||
vh | 该 | 所 | 调 | |||
vj | 让 | |||||
vk | 表 | 试 | ||||
vl | 教 | 老 | ||||
vm | 数 | 断 | 类 | 精 | ||
vq | 设 | |||||
vr | 轻 | 连 | 转 | |||
vs | 话 | 讲 | 喜 | |||
vt | 谈 | 计 | 质 | |||
vv | 请 | 诉 | ||||
vw | 论 | 谁 | ||||
vy | 许 | |||||
wc | 集 | 似 | ||||
wd | 保 | |||||
wf | 命 | 便 | 使 | |||
wg | 件 | |||||
wh | 拿 | |||||
wj | 们 | 但 | ||||
wk | 段 | 做 | ||||
wl | 加 | 边 | 候 | |||
wm | 像 | |||||
wn | 领 | 今 | 住 | |||
wq | 低 | |||||
wr | 位 | 创 | ||||
ws | 会 | |||||
ww | 坐 | 众 | ||||
wy | 伤 | 作 | ||||
xc | 弟 | 道 | 单 | 师 | ||
xj | 钱 | 错 | 铁 | 钟 | ||
xp | 美 | |||||
xx | 善 | |||||
yd | 每 | 配 | ||||
yf | 阿 | 院 | 随 | |||
yj | 复 | |||||
ys | 第 | 等 | 管 | 算 | ||
yx | 票 |
词语
词语编码规则如下:
每个词最多五码,前四码同星陈方案。第五码为日月特有,如果前四码已经取到末字末根,则接著往下取声码韵码;如果前四码尚未取到末字末根,则取末字末根大码。
- 两字词:首字前两码 + 次字前两码 + 第五码。注意,首字为字根的,不设置词语编码。
- 「宇浩」的编码是
DM + CK + D
。 - 「白色」的编码是
KB + MJ + B
。 - 「一下」首字为字根,故而不设词语编码,完整编码是
Fi + KXa
。 - 「一些」首字为字根,故而不设词语编码,完整编码是
Fi + HSLSo
。
- 「宇浩」的编码是
- 三字词:首字第一码 + 次字第一码 + 第三字前两码 + 第五码。
- 「好不好」的编码是
C + M + CN + L
。 - 「不知道」的编码是
M + J + XC + L
。 - 「一下子」的编码是
F + H + LZ + i
。
- 「好不好」的编码是
- 四字词:首字第一码 + 次字第一码 + 第三字第一码 + 第四字第一码 + 第五码。
- 「不置可否」的编码是
M + G + H + M + D
。 - 「自作自受」的编码是
H + W + H + B + C
。 - 「洋洋洒洒」的编码是
C + C + C + C + Y
。 - 「江河湖海」的编码是
C + C + C + C + D
。 - 「骂骂咧咧」的编码是
D + D + D + D + Y
。 - 「恍恍惚惚」的编码是
J + J + J + J + J
。 - 「魑魅魍魉」的编码是
J + J + J + J + W
。
- 「不置可否」的编码是
- 五字及以上词:首字第一码 + 次字第一码 + 第三字第一码 + 第四字第一码 + 末字第一码。
- 「不管三七二十一」的编码是
M + Y + K + M + F
。 - 「中华人民共和国」的编码是
D + W + W + J + K
。
- 「不管三七二十一」的编码是
为字词一致考量,日月方案的双字词使用宇浩千词极简词库,只收录极常用词语(知乎词频),并且以下情况一般不设置词语编码:
- 首字是双编码的字根字,如:「一个」「二人」「而且」等。这些直接按单字连续输入即可。
- 首字是一码、二码上屏的简码字,如:「你们」「我们」「和平」等。这些直接按简码连续输入即可。
优缺点
本方案为首款纯形前缀码方案,优缺点都十分突出,故总结如下:
缺点
- 字根大码近乱序,初始学习难度较大,同键位字根之间的字形关系较星陈方案更弱。
- 单字平均码长在378个简码情况下为3.14。如果需要达到这个码长需要记忆简码。
- 更专注於单字。
- 简码不是全码的前缀。
优点
- 首根信息完整,大字集重码极低,远超宇浩输入法其他方案。
- 本方案不需要按空格,特别适合腱鞘炎患者。
- 双手互击、击键速度当量、用指分布极佳。
- 专注於单字,无需记忆词语,输入流畅。
难度
更易 | 更难 | |||
---|---|---|---|---|
大码 | 星陈 | 光华 | 日月 | 卿云 |
小码(声韵) | 卿云 | 星陈 | 日月 | 光华 |
设计思路
形码方案中的离散问题,主要在于多根字。多根字的离散问题,主要在于首根和末根。为什么这么讲?注意到,通过更换部首或部件,我们可以排列组合出大量汉字,如:「問问吝各束杏回可台呇扣和吉召吕唇知否喜可右启叵釦名占句售告如」,都是由一个部件搭配「口」字根组成的。一旦任意两个首根位于同一键位上,则会产生重码。这个例子中,共有30个字,也就是有30个首根,但按键一般是26个,根据抽屉原理,必然会在一个按键上有两个字根,这就说必然会有两个字的编码相同。常见的汉字部首大约一百个,为了避免出现重码,必须要有足够的按键数量或编码空间来容纳它们。对称地,末根的离散问题也同样存在。
如何解决首根和末根的离散问题?在这方面,前人有多种探索:
- 用汉字结构和末笔信息作为补充编码。主要解决同拆异形(如「束杏」)、提高末根离散。最早可追溯到五笔。它的缺点是不仅需要知道结构和末笔,还需要进行一次交叉映射,使用时难以形成肌肉记忆。
- 减少字根数量和大小。当按键数量不变时,通过减少字根数量和大小,将部首继续分解,可以变相减少编码冲突的可能。五笔、仓颉都是这样的例子。它的缺点是,不少常见字根被拆分成了多个小字根,不仅不直观,还会造成复杂汉字中间部分的信息丢失,增加重码的可能性。
- 大字根双编码。反其道而行之,通过增加字根编码的长度,来增加编码空间。26个按键,若每个按键有两个编码,则可以容纳676个字根,两个部首放到同一个「抽屉」的可能性直线下降,从而明显减少重码的可能。这个思路最早可追溯到郑码。它的缺点是:
- 一、打词的时候,同部首的字会形成大量重码,如「猫猫」「狗狗」「狼狗」等。郑码的解决方案是词语编码和单字编码不一致。徐码的解决方案是将首根小码后置。但这样的设计,会增加学习成本。
- 二、抽屉增加到了676个,但常用部首只有100个左右,前两码的组合空间不少被闲置出来,这样的设计,造成简码效率低下。对此,郑码的解决方案是设置主副根,首根是主根则不取小码,首根是副根则取小码。由于主根的存在,前两码的组合空间不会被浪费。但这样的设计,会使得规则复杂化,有时取三根、有时取四根,还是增加了学习成本。
- 多取字根。在小字根的基础上,多取一个字根,达到减少重码的目的。仓颉便是代表。它的问题是码长较长,简码和词语效率较低。仓颉便不设简码,不设词语,专注於单字输入。因为字根和规则简单,学习成本较低,相比之下,码长较长的问题就不那么突出了。
宇浩拆分主要走的是大字根的设计思路,也就是郑码一系的策略。因为这套方案更容易实现大字集低重码,可以繁简通打,且码长可控。关于首根的离散问题,基于宇浩拆分各方案的设计型态是:
- 光华:字根双编码、首根小码后置、不分主副根且只有双根字取首根小码(创新)、字根分区。两根字编码:
AZza
- 星陈:字根双编码、小码取声、首根小码后置、不分主副根且只有双根字取首根小码、字根聚类。两根字编码:
AZza
- 卿云:字根双编码、小码取声、首根小码不取、不分主副根、首根分区。两根字编码:
AZz
以上三个方案都有缺点:
- 光华、星陈的首根小码后置,会在输入时造成一定思考。
- 卿云的首根小码不取,会造成首根分离度变差。常用字集字频加权选率尚且可控,但一旦字集增大,或更换文本风格,重码率会大幅上升,且不稳定。
- 以上方法,输入时都需要按大量空格键,对大拇指不友好。
于是,我一直都在思考一个这样的方案:
- 首根小码永远取全,大字集重码更低。
- 首根小码不后置,输入时更流畅。
- 尽可能减少空格键使用,对大拇指友好。
也就是以下的单字编码方式:Zz
AaZz
AaBZz
AaBCZz
等,且使用全码连打模式。
那么问题来了:首根小码永远取全,意味着编码至少是五码,码长会变长;首根小码不后置,意味着简码效率降低,不能打词;尽可能减少空格键使用,意味着需要有系统的字间分隔方法。
当然,答案也许就在问题当中。全码变成五码,但可以通过连续输入来减少码长,这和减少空格键使用是相辅相成的。简码效率降低,不能打词,我们就干脆不打词,专注打单,提高击键。同时,一旦不用空格键,那么等于简码少输入一码,抵销了简码效率降低的问题。
归根结底,问题的核心只有一条:如何减少空格键使用。
减少空格键频率,一个方式是使用连续输入,比如全码连打。但字和字之间的分隔是模糊的,需要用词库来进行预测。一般情况比较准确,但有时也会出现分隔错误,比如「不二」和「些」在卿云中都是NBAE
,「说一不二」常常被预测为「说一些」。
另一个方法,就是顶功。顶功方案把按键分为两个区域,A区和B区。输入时,先输入若干A区键,然后输入若干B区键。A区域键和B区域键之间形成自然分隔符,一旦输入B区键,再输入A区键,则会自动认为是下一个字,而不用按空格键。(其实定长方案也是一类广义顶功方案,只不过它的A区是26个字母,B区只有一个空格键,且对于编码结束的判断是内生的。)
但顶功方案一般需要从某一键开始使用小键集进行输入。从形码的角度来看,小键集的自然选择就是笔画了。比如逸码,就是从第三个字根开始使用五笔画拆分。一旦见到想要的字,直接输入下一个字,就可以上屏前一个字。从另一个角度说,顶功方案用若干B区键,分摊了空格键的功能,且B区键自带部分汉字信息。
顶功方法可否拓展到宇浩拆分?似乎可以,比如前三根分别取首根大码、首根声码、次根大码,后面全部拆成五笔画。但是这样的话,会有以下问题:
- 笔画拆分后,全码码长会变长,最高可能会有六、七码。如果有人想打全码会比较累。
- 将字拆成笔画,用户需要对于字形的认识较深,对于笔顺较熟。并且,一旦某些字形出现歧义,用户容易打不出字来。
- 拆成笔画,等同于改变了宇浩拆分。
接下来的很长时间,我都在思考如何让顶功适用于宇浩拆分,并对一些维度进行取舍。最好的情况是,能够保持目前宇浩各方案的拆分和编码方式。最后,偶然的机会,我想到了在小码上做文章。
考虑到,基于首根小码永远取全和首根小码不后置的设计,若用空格上屏,双根字编码为AaZz_
。那么,可以进行以下步骤:
- 第一步,将末尾空格键替换为若干B区按键的集合
AaZzβ
,其中β
代表B区按键。 - 第二步,让B区按键
β
和末根Z
有某种内在的联系。问题是,如何让一个字根的小码能分成两部分呢?一个自然的思路就是声母和韵母。因为在汉语拼音中,声母所在的按键,和元音所在的按键是隔离的。我们只要定义A区的按键为BCDFGHJKLNMPQRSTVWXYZ
,B区的按键为AEIOU
,便能自然形成隔离。比如「千」的第一小码取声母Q
,第二小码将韵母IAN
映射到B区按键中的某个按键即可。 - 第三步,我们将一个字根设置成三码,大码
Z
、声码z
、韵码ⓩ
。这样,双根字的编码就变成了AaZzⓩ
。 - 第四步,我们只需要确定
ⓩ
的映射规则。
这样,我们就可以得到一个新的方案,它的编码最长五码,有以下可能:
- 一根字:
Zzⓩ
。 - 两根字:
AaZzⓩ
。 - 三根字:
AaBZz
。 - 四根以上字:
AaBCZ
。
观察到,韵码不仅包含了部分的字根信息,还能够作为字根之间的分隔符。一旦用户输入了韵码,这个字就被唯一确定,可以直接上屏。由于取到五码,且首根声码永远取全(郑码、徐码也是),此设计可以保证大字集极低重码。码长方面,虽然最长五码,但可以通过连续输入来减少码长,比仓颉效率更高。最后,我们得到的是一个重码比仓颉低,码长比仓颉短,且完全不需要空格键的大字集方案。
到此为止,其实可以说,这个方案已经完成了。但我还是觉得有些不够完美:
- 码长还是太长,从两根字开始都是五码。
- 首根取大码、声码,会有大量空间浪费,简码效率不高。
- 手感不会太好,毕竟声码出现了
Y
,比如「一」的编码是FYⓘ
。不论是当量还是键位分布,都不好。
如何解决这些问题?我从卿云的小码设计中找到了答案,并且同时解决了以上三个问题。卿云中,零声母的yi
韵,直接取了小码I
,而不是Y
。这个方法可以适用到新方案中。对于部分零声母的字根,我们可以无视它的声码,直接取韵码。也就是说,这些字根字全码只有两码:Zⓩ
。那么,单字的编码可行组合明显增加:
- 一根字:
Zⓩ
Zzⓩ
。 - 两根字:
AaZzⓩ
AaZⓩ
AZzⓩ
AZⓩ
。 - 三根字:
AaBZz
AaBZⓩ
ABZzⓩ
ABZⓩ
。 - 四根以上字:
AaBCZ
ABCZz
ABCZⓩ
。
眼尖的你可能看出来了,这和郑码、徐码的主副根设计不谋而合。他们当初这样设计,一者,可以增加前两码的编码空间效率,二者,对于首根为主根的字多取一根,能够攫取更多的信息。但是,它们的主根和副根小码取码不统一,变相增加了小码的无理性。
而通过省略零声母字声码的方法,我们也可以达到同样的效果,但小码的设计逻辑更加统一。可以说,我主观上没有分主副根的意图,但客观上或许实现了主副根的效果。
至此,码长得到了降低,简码效率得到了提高,手感也得到了改善,方案也就完成了。老传统,我用《尚书大传》之「日月有常,星辰有行」将它命名为日月。其实也暗藏着声码和韵码、A区和B区的对立关系。
这个方案,虽然在按键区分了A区和B区,但它不同于一般意义上的顶功方案。顶功方案中,只有输入了下一个字的A区键,才意味著上一个字输入完毕,可以上屏,它对编码的分割是外生的。而本方案中,只要出现B区按键(韵码),便意味着这个字已经输入完毕,可以上屏了,它对编码的分割是内生的。在这个方案中,A区按键,如同珠子一样串联在B区按键前。任何字的编码,都不是其他字编码的前缀。严格地说,它应该叫非前缀码方案。
日月方案,全码码长和其他方案对比如下:
方案 | 全码码长 简体文本 |
---|---|
光华 | 4.00 |
星陈 | 4.00 |
卿云 | 3.83 |
日月 | 4.32 |
做完了全码,接下来是简码的设置。注意到,一个字的全码一定以A区键开始,所以当你第一码输入的是B区键时,其实是个空码。我们可以充分利用这个五个空键位,将它们设置成简码,放入最常用的几个汉字:的、是、我、不、了。因为一个字一定是以B区键结束的,因此当你输入这些简码时,会自动上屏。也就是说,你拥有了五个真正的一码字。按下E
,你直接看到「的」字上屏。这五个简码,可以将码长减少到4.0左右。
其他的简码,会有两种模式:
- 一种模式,是常规的简码,它是全码的前N码。你可以像其他方案一样,通过空格键上屏。
- 另一种模式,是带有上屏性质的简码,它取全码的前N码,并且在末尾加上末根韵码上屏。注意到,这类简码的上屏键有五种可能
aeiou
而不是单一的空格键,因此需要适应这种简码方式。日月方案中,这类简码只设置500个。它们将码长减到了3.4左右。
此两种简码模式,本质上都是全码的前缀再加上一个上屏码。因此,对于任意一个简码码位,都有最多六种可能的简码字。在输入当中,你可以根据提示选择使用空格键上屏,或者使用韵码键上屏。
以上就是日月方案的设计思路。它的优点缺点都很突出,特别适合喜欢打单字的用户、不愿打空格的用户、对重码要求较高的用户。
A区B区按键数量
由于按键需要分为互不重合的A区和B区,A区或B区的数量必然在1到24之间。具体数量,应当取决于如何让编码空间最大化。注意到,依据日月的取码规则,首根不取Z,因此实际编码空间数量为:
这个代数式是优美的,因为中间项可以全部约去。用
可以求得: