fix: 直接辅助支持大写辅助

This commit is contained in:
amzxyz
2025-12-11 12:19:38 +08:00
parent 5b8e37855d
commit 15626355c2
4 changed files with 308 additions and 761 deletions

View File

@@ -1,16 +1,38 @@
-- github.com/amzxyz
-- input_stats.lua
-- Rime 统计增强版 (LevelDB / 滚动时间窗口 / 效率仪表盘 / 汉字提纯)
-- 维度升级1, 2, 3, 4, ≥5 字独立统计
-- UI优化综合数据田字格布局峰值与均速分开显示
-- 逻辑更新:增加平台信息清洗函数 (去除 git hash)
local userdb = require("lib/userdb")
-- 初始化数据库
local rime_api = rime_api
-- 1. 初始化数据库
local db = userdb.LevelDb("lua/stats")
-- 硬编码信息
local schema_name = "万象拼音"
local software_name = rime_api.get_distribution_code_name()
-- 注意:这里只获取原始名称,清洗逻辑下放给 process_platform_info
local raw_software_name = rime_api.get_distribution_code_name()
-- -----------------------------------------------------------------------------
-- 平台信息处理中心
-- 在这里添加你所有的字符串清洗/替换逻辑
-- -----------------------------------------------------------------------------
local function process_platform_info(name, ver)
name = name or ""
ver = ver or ""
-- 1. 清洗 Trime/Rime 版本号中的 git hash
-- 目标:将 "v3.3.7-48-gda909f96" 变为 "v3.3.7-48"
-- 逻辑:匹配连字符+g+一串字母数字,并替换为空
ver = ver:gsub("^(.-%-[^%-]+)%-.*$", "%1")
-- 2. 可以在这里修改平台名称
if name == "Weasel" then name = "小狼毫" end
if name == "trime" then name = "同文输入法" end
return name, ver
end
-- -----------------------------------------------------------------------------
-- 汉字识别核心逻辑
@@ -192,16 +214,12 @@ local function format_summary(title, data)
local phrase_rate = 0
if data.len > 0 then phrase_rate = (data.len - data.l1) / data.len * 100 end
-- 估算均速 (Average Speed)
-- 由于没有记录精确的打字时长,这里用一个经验公式估算:
-- 假设每次上屏平均耗时 1.5 - 2 秒左右,以此倒推一个大概的“均速”用于展示
-- 公式:字数 / (次数 * 2秒 / 60)
-- 估算均速 (优化算法,防止溢出峰值)
local estimated_avg_spd = 0
if data.cnt > 0 then
estimated_avg_spd = math.floor(data.len / ((data.cnt * 2) / 60))
-- 修正:如果估算值超过峰值,说明上屏间隔极短(连打),则取峰值的 60%
if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.6) end
if estimated_avg_spd == 0 and data.len > 0 then estimated_avg_spd = data.len end -- 极少字数保底
if estimated_avg_spd > data.spd then estimated_avg_spd = math.floor(data.spd * 0.8) end -- 修正为峰值的80%更合理
if estimated_avg_spd == 0 and data.len > 0 then estimated_avg_spd = data.len end
end
local p1 = (data.l1 / data.cnt) * 100
@@ -209,37 +227,41 @@ local function format_summary(title, data)
local p3 = (data.l3 / data.cnt) * 100
local p4 = (data.l4 / data.cnt) * 100
local p_gt4 = (data.l_gt4 / data.cnt) * 100
local ver = rime_api.get_distribution_version() or ""
-- 获取原始版本号
local raw_ver = rime_api.get_distribution_version() or ""
-- 【调用】清洗函数处理平台和版本信息
local clean_name, clean_ver = process_platform_info(raw_software_name, raw_ver)
return string.format(
"※ %s统计 · 效率仪表盘\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"📊 综合数据\n" ..
" 总字数:%d\t上屏:%d\n" ..
" 峰值速:%d\t均速:%d\n" ..
"───────────────────\n" ..
" 总字数:%d \t 上屏:%d\n" ..
" 峰值速:%d \t 均速:%d\n" ..
"───────────────\n" ..
"⚡ 核心效率\n" ..
" 平均编码:%.2f 键/字\n" ..
" 词组连打:%.1f %%\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"📈 字词分布\n" ..
" [1] %3d%% %s\n" ..
" [2] %3d%% %s\n" ..
" [3] %3d%% %s\n" ..
" [4] %3d%% %s\n" ..
" [≥5] %2d%% %s\n" ..
"───────────────────\n" ..
"───────────────\n" ..
"◉ 方案:%s\n" ..
"◉ 平台:%s %s",
title, data.len, data.cnt,
data.spd, estimated_avg_spd, -- 峰值与均速并排
data.spd, estimated_avg_spd,
avg_code, phrase_rate,
p1, draw_bar(p1),
p2, draw_bar(p2),
p3, draw_bar(p3),
p4, draw_bar(p4),
p_gt4, draw_bar(p_gt4), -- 改为 ≥5
schema_name, software_name, ver
p_gt4, draw_bar(p_gt4),
schema_name, clean_name, clean_ver -- 使用清洗后的变量
)
end

View File

@@ -16,229 +16,158 @@ local wanxiang = require("wanxiang")
-- 小键盘键码映射
local KP = {
[0xFFB1] = 1, -- KP_1
[0xFFB2] = 2,
[0xFFB3] = 3,
[0xFFB4] = 4,
[0xFFB5] = 5,
[0xFFB6] = 6,
[0xFFB7] = 7,
[0xFFB8] = 8,
[0xFFB9] = 9,
[0xFFB0] = 0, -- KP_0
[0xFFB1] = 1, [0xFFB2] = 2, [0xFFB3] = 3,
[0xFFB4] = 4, [0xFFB5] = 5, [0xFFB6] = 6,
[0xFFB7] = 7, [0xFFB8] = 8, [0xFFB9] = 9,
[0xFFB0] = 0,
}
local P = {}
-- 从 schema 读取 kp_number/patterns 列表
-- 加载配置中的正则模式
local function load_function_patterns(config)
local patterns = {}
local ok_list, list = pcall(function()
return config:get_list("kp_number/patterns")
end)
local ok_list, list = pcall(function() return config:get_list("kp_number/patterns") end)
if ok_list and list and list.size and list.size > 0 then
for i = 0, list.size - 1 do
local item = list:get_value_at(i)
if item then
local pat = item:get_string()
if pat and pat ~= "" then
table.insert(patterns, pat)
end
end
if item then table.insert(patterns, item:get_string()) end
end
end
-- 如果用户没配,给一份保底的默认集合(等价你现在用的那些)
-- 默认保底配置
if #patterns == 0 then
patterns = {
"^/[0-9]$", "^/10$", "^/[A-Za-z]+$",
"^`[A-Za-z]*$",
"^``[A-Za-z/`']*$",
"^U[%da-f]+$",
"^R[0-9]+%.?[0-9]*$",
"^N0[1-9]?0?[1-9]?$",
"^N1[02]?0?[1-9]?$",
"^N0[1-9]?[1-2]?[1-9]?$",
"^N1[02]?[1-2]?[1-9]?$",
"^N0[1-9]?3?[01]?$",
"^N1[02]?3?[01]?$",
"^N19?[0-9]?[0-9]?[01]?[0-2]?[0-3]?[0-9]?$",
"^/[0-9]$", "^/10$", "^/[A-Za-z]+$", "^`[A-Za-z]*$", "^``[A-Za-z/`']*$",
"^U[%da-f]+$", "^R[0-9]+%.?[0-9]*$",
"^N0[1-9]?0?[1-9]?$", "^N1[02]?0?[1-9]?$", "^N0[1-9]?[1-2]?[1-9]?$",
"^N1[02]?[1-2]?[1-9]?$", "^N0[1-9]?3?[01]?$", "^N1[02]?3?[01]?$",
"^N19?[0-9]?[0-9]?[01]?[0-2]?[0-3]?[0-9]?$",
"^N20?[0-9]?[0-9]?[01]?[0-2]?[0-3]?[0-9]?$",
"^V.*$",
}
end
return patterns
end
-- 根据“当前编码 + 这次按下的数字字符”判断是否属于命令模式
-- 判断是否命令模式
local function is_function_code_after_digit(env, context, digit_char)
if not context or not digit_char or digit_char == "" then
return false
end
if not context or not digit_char or digit_char == "" then return false end
local code = context.input or ""
local s = code .. digit_char
local pats = env.function_patterns
if not pats or #pats == 0 then
return false
end
if not pats then return false end
for _, pat in ipairs(pats) do
-- 这里 pat 必须是 Lua pattern 语法
if s:match(pat) then
return true
end
if s:match(pat) then return true end
end
return false
end
---@param env Env
function P.init(env)
local engine = env.engine
local config = engine.schema.config
local engine = env.engine
local config = engine.schema.config
local context = engine.context
-- 读数字选词个数
-- 核心:判断并缓存设备类型
env.is_mobile = wanxiang.is_mobile_device()
env.page_size = config:get_int("menu/page_size") or 6
-- 读小键盘模式auto / compose默认 auto
local m = config:get_string("kp_number/kp_number_mode") or "auto"
if m ~= "auto" and m ~= "compose" then
m = "auto"
end
env.kp_mode = m
env.kp_mode = (m == "compose") and "compose" or "auto"
-- 初始化状态快照
env.context = context
env.context = context
env.is_composing = context:is_composing()
env.has_menu = context:has_menu()
-- 读取命令模式 Lua pattern 集合
env.has_menu = context:has_menu()
env.function_patterns = load_function_patterns(config)
-- 用 update_notifier 同步 context / is_composing / has_menu
env.kp_update_connection = context.update_notifier:connect(function(ctx)
env.context = ctx
env.context = ctx
env.is_composing = ctx:is_composing()
env.has_menu = ctx:has_menu()
env.has_menu = ctx:has_menu()
end)
end
---@param env Env
function P.fini(env)
if env.kp_update_connection then
env.kp_update_connection:disconnect()
env.kp_update_connection = nil
end
env.context = nil
env.is_composing = nil
env.has_menu = nil
env.context = nil
env.function_patterns = nil
end
---@param key KeyEvent
---@param env Env
---@return ProcessResult
function P.func(key, env)
-- 只处理按下
if key:release() then
return wanxiang.RIME_PROCESS_RESULTS.kNoop
if key:release() then
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
local engine = env.engine
local context = env.context or engine.context
local mode = env.kp_mode or "auto"
local page_sz = env.page_size
local is_composing = env.is_composing
local has_menu = env.has_menu
------------------------------------------------------------------
-- 1) 小键盘数字auto / compose
-- 如果“加上本次数字后”还匹配某个命令模式 pattern
-- 只作为编码输入,不 commit、不选词。
------------------------------------------------------------------
local context = env.context
local kp_num = KP[key.keycode]
if kp_num ~= nil then
local ch = tostring(kp_num) -- "0".."9"
-----------------------------------------------------------
-- 1. 桌面端小键盘专用逻辑 (非 Mobile 才执行)
-- Mobile 端直接跳过此段,进入下方通用逻辑
-----------------------------------------------------------
if kp_num ~= nil and not env.is_mobile then
local ch = tostring(kp_num)
-- 检查命令模式
if is_function_code_after_digit(env, context, ch) then
if context then
if context.push_input then
context:push_input(ch)
else
context.input = (context.input or "") .. ch
end
end
context:push_input(ch)
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
end
if mode == "auto" then
-- 输入中:参与编码;空闲:直接上屏
if is_composing then
if context.push_input then
context:push_input(ch)
else
context.input = (context.input or "") .. ch
end
else
engine:commit_text(ch)
end
else
-- compose始终参与编码
if context.push_input then
-- Auto / Compose 模式处理
if env.kp_mode == "auto" then
if env.is_composing then
context:push_input(ch)
else
context.input = (context.input or "") .. ch
env.engine:commit_text(ch)
end
else
context:push_input(ch)
end
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
end
------------------------------------------------------------------
-- 2) 主键盘数字
-- 2.1 若“加上本次数字后”匹配命令模式 → 只当编码输入
-- 2.2 否则:
-- 有菜单时:选第 n 个候选
-- 空闲时:直接上屏
------------------------------------------------------------------
-----------------------------------------------------------
-- 2. 主键盘数字 / 移动端小键盘逻辑
-----------------------------------------------------------
local r = key:repr() or ""
-- 特殊处理:如果是移动端且按下了小键盘,强制将其视为普通数字
if kp_num ~= nil and env.is_mobile then
r = tostring(kp_num)
end
-- 仅处理数字键
if r:match("^[0-9]$") then
-- 命令模式:只作为编码输入
-- 优先检查:是否匹配命令模式(参与编码)
if is_function_code_after_digit(env, context, r) then
if context then
if context.push_input then
context:push_input(r)
else
context.input = (context.input or "") .. r
end
end
context:push_input(r)
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
end
-- 有候选菜单时,用数字选「当前页」的第 n 个候选
if has_menu then
-- 其次检查:是否有菜单(用于选词)
-- 这就是移动端小键盘想要的效果:有菜单时选词
if env.has_menu then
local d = tonumber(r)
local page_sz = env.page_size
if d and d >= 1 and d <= page_sz then
local composition = context and context.composition
local composition = context.composition
if composition and not composition:empty() then
local seg = composition:back() -- 当前正在编辑的 segment
local menu = seg and seg.menu
local seg = composition:back()
local menu = seg.menu
if menu and not menu:empty() then
-- 当前高亮候选的全局下标0 开始)
local sel_index = seg.selected_index or 0
local page_size = page_sz
-- 当前页号 = 高亮索引 / 每页大小
local page_no = math.floor(sel_index / page_size)
local page_start = page_no * page_size
-- 当前页第 n 个候选的全局下标
local index = page_start + (d - 1)
local page_no = math.floor(sel_index / page_sz)
local index = (page_no * page_sz) + (d - 1)
-- 防止越界(最后一页候选不足一整页)
if index < menu:candidate_count() then
if context:select(index) then
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
@@ -247,10 +176,12 @@ function P.func(key, env)
end
end
end
-- 如果是数字键但没选中(例如超出页码),不做处理,交由系统(通常会上屏数字)
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
end
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
return P
return P

View File

@@ -280,431 +280,5 @@ function wanxiang.get_input_method_type(env)
return result_id
end
end
wanxiang.tone_matrix = {
["a"] = {1,2,3,4},
["ai"] = {1,2,3,4},
["an"] = {1,2,3,4},
["ang"] = {1,2,3,4},
["ao"] = {1,2,3,4},
["ba"] = {1,2,3,4},
["bai"] = {1,2,3,4},
["ban"] = {1,3,4},
["bang"] = {1,3,4},
["bao"] = {1,2,3,4},
["bei"] = {1,3,4},
["ben"] = {1,3,4},
["beng"] = {1,2,3,4},
["bi"] = {1,2,3,4},
["bian"] = {1,3,4},
["biang"] = {2},
["biao"] = {1,2,3,4},
["bie"] = {1,2,3,4},
["bin"] = {1,4},
["bing"] = {1,3,4},
["bo"] = {1,2,3,4},
["bu"] = {1,2,3,4},
["bun"] = {1},
["ca"] = {1,3,4},
["cai"] = {1,2,3,4},
["can"] = {1,2,3,4},
["cang"] = {1,2,4},
["cao"] = {1,2,3,4},
["ce"] = {4},
["cei"] = {4},
["cen"] = {1,2},
["ceng"] = {1,2,4},
["ceok"] = {},
["ceon"] = {},
["cha"] = {1,2,3,4},
["chai"] = {1,2,3,4},
["chan"] = {1,2,3,4},
["chang"] = {1,2,3,4},
["chao"] = {1,2,3,4},
["che"] = {1,2,3,4},
["chen"] = {1,2,3,4},
["cheng"] = {1,2,3,4},
["chi"] = {1,2,3,4},
["chong"] = {1,2,3,4},
["chou"] = {1,2,3,4},
["chu"] = {1,2,3,4},
["chua"] = {1,3,4},
["chuai"] = {1,2,3,4},
["chuan"] = {1,2,3,4},
["chuang"] = {1,2,3,4},
["chui"] = {1,2,4},
["chun"] = {1,2,3},
["chuo"] = {1,4},
["ci"] = {1,2,3,4},
["cong"] = {1,2,3,4},
["cou"] = {1,2,3,4},
["cu"] = {1,2,3,4},
["cuan"] = {1,2,4},
["cui"] = {1,3,4},
["cun"] = {1,2,3,4},
["cuo"] = {1,2,3,4},
["da"] = {1,2,3,4},
["dai"] = {1,3,4},
["dan"] = {1,3,4},
["dang"] = {1,3,4},
["dao"] = {1,2,3,4},
["de"] = {1,2},
["dei"] = {1,3},
["den"] = {4},
["deng"] = {1,3,4},
["di"] = {1,2,3,4},
["dia"] = {3},
["dian"] = {1,2,3,4},
["diao"] = {1,3,4},
["die"] = {1,2,3,4},
["dim"] = {2},
["din"] = {4},
["ding"] = {1,3,4},
["diu"] = {1},
["dong"] = {1,3,4},
["dou"] = {1,2,3,4},
["du"] = {1,2,3,4},
["duan"] = {1,3,4},
["dui"] = {1,3,4},
["dun"] = {1,3,4},
["duo"] = {1,2,3,4},
["e"] = {1,2,3,4},
["ei"] = {1,2,3,4},
["en"] = {1,3,4},
["eng"] = {1},
["er"] = {2,3,4},
["fa"] = {1,2,3,4},
["fan"] = {1,2,3,4},
["fang"] = {1,2,3,4},
["fei"] = {1,2,3,4},
["fen"] = {1,2,3,4},
["feng"] = {1,2,3,4},
["fiao"] = {4},
["fo"] = {2},
["fou"] = {1,2,3},
["fu"] = {1,2,3,4},
["ga"] = {1,2,3,4},
["gai"] = {1,3,4},
["gan"] = {1,3,4},
["gang"] = {1,3,4},
["gao"] = {1,3,4},
["ge"] = {1,2,3,4},
["gei"] = {3},
["gen"] = {1,2,3,4},
["geng"] = {1,3,4},
["gong"] = {1,3,4},
["gou"] = {1,3,4},
["gu"] = {1,2,3,4},
["gua"] = {1,2,3,4},
["guai"] = {1,3,4},
["guan"] = {1,3,4},
["guang"] = {1,3,4},
["gui"] = {1,3,4},
["gun"] = {3,4},
["guo"] = {1,2,3,4},
["ha"] = {1,2,3,4},
["hai"] = {1,2,3,4},
["han"] = {1,2,3,4},
["hang"] = {1,2,4},
["hao"] = {1,2,3,4},
["he"] = {1,2,3,4},
["hei"] = {1},
["hen"] = {2,3,4},
["heng"] = {1,2,4},
["hong"] = {1,2,3,4},
["hou"] = {1,2,3,4},
["hu"] = {1,2,3,4},
["hua"] = {1,2,4},
["huai"] = {2,4},
["huan"] = {1,2,3,4},
["huang"] = {1,2,3,4},
["hui"] = {1,2,3,4},
["hun"] = {1,2,3,4},
["huo"] = {1,2,3,4},
["ji"] = {1,2,3,4},
["jia"] = {1,2,3,4},
["jian"] = {1,3,4},
["jiang"] = {1,3,4},
["jiao"] = {1,2,3,4},
["jie"] = {1,2,3,4},
["jin"] = {1,3,4},
["jing"] = {1,3,4},
["jiong"] = {1,3,4},
["jiu"] = {1,2,3,4},
["ju"] = {1,2,3,4},
["juan"] = {1,3,4},
["jue"] = {1,2,3,4},
["jun"] = {1,3,4},
["ka"] = {1,3},
["kai"] = {1,3,4},
["kan"] = {1,3,4},
["kang"] = {1,2,3,4},
["kao"] = {1,3,4},
["ke"] = {1,2,3,4},
["kei"] = {1},
["ken"] = {1,3,4},
["keng"] = {1,3},
["kong"] = {1,3,4},
["kou"] = {1,3,4},
["ku"] = {1,2,3,4},
["kua"] = {1,3,4},
["kuai"] = {2,3,4},
["kuan"] = {1,3,4},
["kuang"] = {1,2,3,4},
["kui"] = {1,2,3,4},
["kun"] = {1,3,4},
["kuo"] = {4},
["la"] = {1,2,3,4},
["lai"] = {2,3,4},
["lan"] = {2,3,4},
["lang"] = {1,2,3,4},
["lao"] = {1,2,3,4},
["le"] = {1,4},
["lei"] = {1,2,3,4},
["leng"] = {1,2,3,4},
["li"] = {1,2,3,4},
["lia"] = {3},
["lian"] = {2,3,4},
["liang"] = {1,2,3,4},
["liao"] = {1,2,3,4},
["lie"] = {1,2,3,4},
["lin"] = {1,2,3,4},
["ling"] = {2,3,4},
["liu"] = {1,2,3,4},
["lo"] = {},
["long"] = {1,2,3,4},
["lou"] = {1,2,3,4},
["lu"] = {1,2,3,4},
["luan"] = {2,3,4},
["lun"] = {1,2,3,4},
["luo"] = {1,2,3,4},
["lv"] = {2,3,4},
["lve"] = {4},
["ma"] = {1,2,3,4},
["mai"] = {2,3,4},
["man"] = {1,2,3,4},
["mang"] = {1,2,3,4},
["mao"] = {1,2,3,4},
["me"] = {1,4},
["mei"] = {2,3,4},
["men"] = {1,2,4},
["meng"] = {1,2,3,4},
["mi"] = {1,2,3,4},
["mian"] = {2,3,4},
["miao"] = {1,2,3,4},
["mie"] = {1,2,4},
["min"] = {2,3},
["ming"] = {2,3,4},
["miu"] = {3,4},
["mo"] = {1,2,3,4},
["mou"] = {1,2,3,4},
["mu"] = {2,3,4},
[""] = {},
["n"] = {2,3,4},
["na"] = {1,2,3,4},
["nai"] = {2,3,4},
["nan"] = {1,2,3,4},
["nang"] = {1,2,3,4},
["nao"] = {1,2,3,4},
["ne"] = {2,4},
["nei"] = {2,3,4},
["nen"] = {4},
["neng"] = {2,3,4},
["ng"] = {2,3,4},
["ni"] = {1,2,3,4},
["nian"] = {1,2,3,4},
["niang"] = {2,3,4},
["niao"] = {3,4},
["nie"] = {1,2,3,4},
["nin"] = {2,3},
["ning"] = {2,3,4},
["niu"] = {1,2,3,4},
["nong"] = {2,3,4},
["nou"] = {2,3,4},
["nu"] = {2,3,4},
["nuan"] = {2,3,4},
["nun"] = {2},
["nuo"] = {2,3,4},
["nv"] = {2,3,4},
["nve"] = {4},
["o"] = {1,2,3,4},
["ou"] = {1,2,3,4},
["pa"] = {1,2,3,4},
["pai"] = {1,2,3,4},
["pan"] = {1,2,3,4},
["pang"] = {1,2,3,4},
["pao"] = {1,2,3,4},
["pei"] = {1,2,3,4},
["pen"] = {1,2,3,4},
["peng"] = {1,2,3,4},
["pi"] = {1,2,3,4},
["pian"] = {1,2,3,4},
["piao"] = {1,2,3,4},
["pie"] = {1,3,4},
["pin"] = {1,2,3,4},
["ping"] = {1,2,4},
["po"] = {1,2,3,4},
["pou"] = {1,2,3},
["pu"] = {1,2,3,4},
["qi"] = {1,2,3,4},
["qia"] = {1,2,3,4},
["qian"] = {1,2,3,4},
["qiang"] = {1,2,3,4},
["qiao"] = {1,2,3,4},
["qie"] = {1,2,3,4},
["qin"] = {1,2,3,4},
["qing"] = {1,2,3,4},
["qiong"] = {1,2,4},
["qiu"] = {1,2,3,4},
["qu"] = {1,2,3,4},
["quan"] = {1,2,3,4},
["que"] = {1,2,4},
["qun"] = {1,2,3},
["ran"] = {2,3,4},
["rang"] = {1,2,3,4},
["rao"] = {2,3,4},
["re"] = {2,3,4},
["ren"] = {2,3,4},
["reng"] = {1,2},
["ri"] = {4},
["rong"] = {2,3,4},
["rou"] = {2,3,4},
["ru"] = {1,2,3,4},
["rua"] = {2},
["ruan"] = {2,3,4},
["rui"] = {2,3,4},
["run"] = {2,3,4},
["ruo"] = {2,4},
["sa"] = {1,2,3,4},
["sai"] = {1,3,4},
["san"] = {1,3,4},
["sang"] = {1,3,4},
["sao"] = {1,3,4},
["se"] = {1,4},
["sen"] = {1,3},
["seng"] = {1,4},
["sha"] = {1,2,3,4},
["shai"] = {1,3,4},
["shan"] = {1,2,3,4},
["shang"] = {1,3,4},
["shao"] = {1,2,3,4},
["she"] = {1,2,3,4},
["shei"] = {2},
["shen"] = {1,2,3,4},
["sheng"] = {1,2,3,4},
["shi"] = {1,2,3,4},
["shou"] = {1,2,3,4},
["shu"] = {1,2,3,4},
["shua"] = {1,3,4},
["shuai"] = {1,3,4},
["shuan"] = {1,4},
["shuang"] = {1,3,4},
["shui"] = {2,3,4},
["shun"] = {3,4},
["shuo"] = {1,4},
["si"] = {1,2,3,4},
["song"] = {1,2,3,4},
["sou"] = {1,3,4},
["su"] = {1,2,3,4},
["suan"] = {1,3,4},
["sui"] = {1,2,3,4},
["sun"] = {1,3,4},
["suo"] = {1,2,3,4},
["ta"] = {1,2,3,4},
["tai"] = {1,2,3,4},
["tan"] = {1,2,3,4},
["tang"] = {1,2,3,4},
["tao"] = {1,2,3,4},
["te"] = {4},
["tei"] = {1},
["teng"] = {1,2,4},
["ti"] = {1,2,3,4},
["tian"] = {1,2,3,4},
["tiao"] = {1,2,3,4},
["tie"] = {1,2,3,4},
["tii"] = {2},
["ting"] = {1,2,3,4},
["tong"] = {1,2,3,4},
["tou"] = {1,2,3,4},
["tu"] = {1,2,3,4},
["tuan"] = {1,2,3,4},
["tui"] = {1,2,3,4},
["tun"] = {1,2,3,4},
["tuo"] = {1,2,3,4},
["wa"] = {1,2,3,4},
["wai"] = {1,3,4},
["wan"] = {1,2,3,4},
["wang"] = {1,2,3,4},
["wei"] = {1,2,3,4},
["wen"] = {1,2,3,4},
["weng"] = {1,3,4},
["wo"] = {1,3,4},
["wu"] = {1,2,3,4},
["xi"] = {1,2,3,4},
["xia"] = {1,2,3,4},
["xian"] = {1,2,3,4},
["xiang"] = {1,2,3,4},
["xiao"] = {1,2,3,4},
["xie"] = {1,2,3,4},
["xin"] = {1,2,3,4},
["xing"] = {1,2,3,4},
["xiong"] = {1,2,4},
["xiu"] = {1,2,3,4},
["xu"] = {1,2,3,4},
["xuan"] = {1,2,3,4},
["xue"] = {1,2,3,4},
["xun"] = {1,2,4},
["ya"] = {1,2,3,4},
["yan"] = {1,2,3,4},
["yang"] = {1,2,3,4},
["yao"] = {1,2,3,4},
["ye"] = {1,2,3,4},
["yi"] = {1,2,3,4},
["yin"] = {1,2,3,4},
["ying"] = {1,2,3,4},
["yo"] = {1},
["yong"] = {1,2,3,4},
["you"] = {1,2,3,4},
["yu"] = {1,2,3,4},
["yuan"] = {1,2,3,4},
["yue"] = {1,3,4},
["yun"] = {1,2,3,4},
["za"] = {1,2,3},
["zai"] = {1,3,4},
["zan"] = {1,2,3,4},
["zang"] = {1,3,4},
["zao"] = {1,2,3,4},
["ze"] = {2,4},
["zei"] = {2},
["zen"] = {1,3,4},
["zeng"] = {1,3,4},
["zha"] = {1,2,3,4},
["zhai"] = {1,2,3,4},
["zhan"] = {1,3,4},
["zhang"] = {1,3,4},
["zhao"] = {1,2,3,4},
["zhe"] = {1,2,3,4},
["zhei"] = {4},
["zhen"] = {1,2,3,4},
["zheng"] = {1,3,4},
["zhi"] = {1,2,3,4},
["zhong"] = {1,3,4},
["zhou"] = {1,2,3,4},
["zhu"] = {1,2,3,4},
["zhua"] = {1,3},
["zhuai"] = {1,3,4},
["zhuan"] = {1,3,4},
["zhuang"] = {1,3,4},
["zhui"] = {1,3,4},
["zhun"] = {1,3,4},
["zhuo"] = {1,2,4},
["zi"] = {1,2,3,4},
["zong"] = {1,3,4},
["zou"] = {1,3,4},
["zu"] = {1,2,3,4},
["zuan"] = {1,3,4},
["zui"] = {1,2,3,4},
["zun"] = {1,3,4},
["zuo"] = {1,2,3,4},
["ḿ"] = {2},
}
return wanxiang

View File

@@ -1088,36 +1088,36 @@ pro:
- xform/^n(\d)/en$1/
- xform/^m(\d)(;.*)/me$1$2/
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- derive/^([aoe])([ioun])(\d)(;.*)$/$1$1$2$3$4/
- derive/^([aoe])([ioun])(\d)(;.*)$/$1$1$2$3$4/ # 注释释放非原本自然码规则
- xform/^([aoe])(ng)?(\d)(;.*)$/$1$1$2$3$4/
- xform/^(\w+?)iu(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]e(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]n(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ui(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ou(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)in(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)$/$1$2$3/
- xform/iu(\d)(;.*)$/$1$2/
- xform/[uv]an(\d)(;.*)$/$1$2/
- xform/[uv]e(\d)(;.*)$/$1$2/
- xform/ing(\d)(;.*)$/$1$2/
- xform/uai(\d)(;.*)$/$1$2/
- xform/uo(\d)(;.*)$/$1$2/
- xform/[uv]n(\d)(;.*)$/$1$2/
- xform/i?ong(\d)(;.*)$/$1$2/
- xform/[iu]ang(\d)(;.*)$/$1$2/
- xform/eng(\d)(;.*)$/$1$2/
- xform/ang(\d)(;.*)$/$1$2/
- xform/ian(\d)(;.*)$/$1$2/
- xform/iao(\d)(;.*)$/$1$2/
- xform/ie(\d)(;.*)$/$1$2/
- xform/ui(\d)(;.*)$/$1$2/
- xform/ou(\d)(;.*)$/$1$2/
- xform/in(\d)(;.*)$/$1$2/
- xform/[iu]a(\d)(;.*)$/$1$2/
- xform/(.+)ao(\d)(;.*)$/$1$2$3/
- xform/(.+)ai(\d)(;.*)$/$1$2$3/
- xform/(.+)ei(\d)(;.*)$/$1$2$3/
- xform/(.+)an(\d)(;.*)$/$1$2$3/
- xform/(.+)en(\d)(;.*)$/$1$2$3/
- xform/^sh/Ⓤ/
- xform/^ch/Ⓘ/
- xform/^zh/Ⓥ/
- xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⓂⒿⒸⓀⓁⓏⓍⓋⒷⓃ/qwrtyuiopsdfghmjcklzxvbn/
- xform/^(aj|ak|al|ob|ez|ef)(\d?)(;.*)$// # 释放非原本自然码规则
自然龙: #原作者项目地址: https://github.com/rimeinn/rime-zrlong
__append:
- xform/Ⅺ// #用于Lua判断输入类型的标记
@@ -1295,34 +1295,33 @@ pro:
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- derive/^([aoe])([ioun])(\d)(;.*)$/$1$1$2$3$4/
- xform/^([aoe])(ng)?(\d)(;.*)$/$1$1$2$3$4/
- xform/^(\w+?)iu(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)/$1$2$3/
- xform/^(\w+?)uan(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[uv]e(\d)(;.*)/$1$2$3/
- xform/^(\w+?)un(\d)(;.*)/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ou(\d)(;.*)/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)/$1Ⓒ$2$3/
- xform/^(\w+?)ui(\d)(;.*)/$1$2$3/
- xform/^(\w+?)in(\d)(;.*)/$1$2$3/
- xform/iu(\d)(;.*)/$1$2/
- xform/uan(\d)(;.*)/$1$2/
- xform/[uv]e(\d)(;.*)/$1$2/
- xform/un(\d)(;.*)/$1$2/
- xform/uo(\d)(;.*)/$1$2/
- xform/ie(\d)(;.*)/$1$2/
- xform/i?ong(\d)(;.*)/$1$2/
- xform/ing(\d)(;.*)/$1$2/
- xform/uai(\d)(;.*)/$1$2/
- xform/eng(\d)(;.*)/$1$2/
- xform/[iu]ang(\d)(;.*)/$1$2/
- xform/ang(\d)(;.*)/$1$2/
- xform/ian(\d)(;.*)/$1$2/
- xform/ou(\d)(;.*)/$1$2/
- xform/iao(\d)(;.*)/$1$2/
- xform/[iu]a(\d)(;.*)/$1$2/
- xform/ui(\d)(;.*)/$1$2/
- xform/in(\d)(;.*)/$1$2/
- xform/(.+)ai(\d)(;.*)/$1$2$3/
- xform/(.+)an(\d)(;.*)/$1$2$3/
- xform/(.+)ao(\d)(;.*)/$1Ⓒ$2$3/
- xform/(.+)en(\d)(;.*)/$1$2$3/
- xform/(.+)ei(\d)(;.*)/$1$2$3/
- xform/^sh/Ⓤ/
- xform/^ch/Ⓘ/
- xform/^zh/Ⓥ/
- xlit/ⓆⓌⓇⓉⓎⓊⒾⓄⓅⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ/qwrtyuiopsdfghjklzxcvbnm/
- xform/^(aj|ac|ad|ew|ef|oz)(\d?)(;.*)$//
微软双拼:
__append:
- xform/Ⅳ// #用于Lua判断输入类型的标记
@@ -1363,33 +1362,33 @@ pro:
- xform/^m(\d)(;.*)/me$1$2/
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- derive/^([aoe].*)(\d)(;.*)$/o$1$2$3/
- xform/^([ae])(.*)(\d)(;.*)$/$1$1$2$3$3/
- xform/^(\w+?)iu(\d)(;.*)/$1$2$3/
- xform/^(\w+?)er(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[uv]an(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[uv]e(\d)(;.*)/$1$2$3/
- xform/^(\w+?)v(\d)(;.*)/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[uv]n(\d)(;.*)/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ui(\d)(;.*)/$1$2$3/
- xform/^([ae])(.*)(\d)(;.*)$/$1$1$2$3$4/
- xform/iu(\d)(;.*)/$1$2/
- xform/er(\d)(;.*)/$1$2/
- xform/[uv]an(\d)(;.*)/$1$2/
- xform/[uv]e(\d)(;.*)/$1$2/
- xform/v(\d)(;.*)/$1$2/
- xform/uai(\d)(;.*)/$1$2/
- xform/uo(\d)(;.*)/$1$2/
- xform/[uv]n(\d)(;.*)/$1$2/
- xform/i?ong(\d)(;.*)/$1$2/
- xform/[iu]ang(\d)(;.*)/$1$2/
- xform/eng(\d)(;.*)/$1$2/
- xform/en(\d)(;.*)/$1$2/
- xform/ang(\d)(;.*)/$1$2/
- xform/ian(\d)(;.*)/$1$2/
- xform/an(\d)(;.*)/$1$2/
- xform/iao(\d)(;.*)/$1$2/
- xform/ao(\d)(;.*)/$1$2/
- xform/ai(\d)(;.*)/$1$2/
- xform/ei(\d)(;.*)/$1$2/
- xform/ie(\d)(;.*)/$1$2/
- xform/ui(\d)(;.*)/$1$2/
- derive/Ⓣ/Ⓥ/
- xform/^(\w+?)ou(\d)(;.*)/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)/$1$2$3/ #注意这里的◯用来暂时替换分号
- xform/^(\w+?)in(\d)(;.*)/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)/$1$2$3/
- xform/ou(\d)(;.*)/$1$2/
- xform/ing(\d)(;.*)/$1$2/ #注意这里的◯用来暂时替换分号
- xform/in(\d)(;.*)/$1$2/
- xform/[iu]a(\d)(;.*)/$1$2/
- xform/^sh/Ⓤ/
- xform/^ch/Ⓘ/
- xform/^zh/Ⓥ/
@@ -1435,31 +1434,31 @@ pro:
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- derive/^([aoe].*)(\d)(;.*)$/o$1$2$3/
- xform/^([ae])(.*)(\d)(;.*)$/$1$1$2$3$4/
- xform/^(\w+?)iu(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)er(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]e(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)v(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]n(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ui(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ou(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)in(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)$/$1$2$3/ #注意这里的◯用来暂时替换分号
- xform/iu(\d)(;.*)$/$1$2/
- xform/[iu]a(\d)(;.*)$/$1$2/
- xform/er(\d)(;.*)$/$1$2/
- xform/[uv]an(\d)(;.*)$/$1$2/
- xform/[uv]e(\d)(;.*)$/$1$2/
- xform/v(\d)(;.*)$/$1$2/
- xform/uai(\d)(;.*)$/$1$2/
- xform/uo(\d)(;.*)$/$1$2/
- xform/[uv]n(\d)(;.*)$/$1$2/
- xform/i?ong(\d)(;.*)$/$1$2/
- xform/[iu]ang(\d)(;.*)$/$1$2/
- xform/en(\d)(;.*)$/$1$2/
- xform/eng(\d)(;.*)$/$1$2/
- xform/ang(\d)(;.*)$/$1$2/
- xform/ian(\d)(;.*)$/$1$2/
- xform/an(\d)(;.*)$/$1$2/
- xform/iao(\d)(;.*)$/$1$2/
- xform/ao(\d)(;.*)$/$1$2/
- xform/ai(\d)(;.*)$/$1$2/
- xform/ei(\d)(;.*)$/$1$2/
- xform/ie(\d)(;.*)$/$1$2/
- xform/ui(\d)(;.*)$/$1$2/
- xform/ou(\d)(;.*)$/$1$2/
- xform/in(\d)(;.*)$/$1$2/
- xform/ing(\d)(;.*)$/$1$2/ #注意这里的◯用来暂时替换分号
- xform/^sh/Ⓤ/
- xform/^ch/Ⓘ/
- xform/^zh/Ⓥ/
@@ -1505,31 +1504,31 @@ pro:
- xform/^m(\d)(;.*)/me$1$2/
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- xform/^([aoe].*)(\d)(;.*)$/o$1$2$3/
- xform/^(\w+?)en(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)in(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)er(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iu(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uan(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)$/$1$2$3/ #注意这里的◯用来暂时替换分号
- xform/^(\w+?)ou(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ue(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ui(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ve(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)un(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)$/$1$2$3/
- xform/en(\d)(;.*)$/$1$2/
- xform/eng(\d)(;.*)$/$1$2/
- xform/in(\d)(;.*)$/$1$2/
- xform/uai(\d)(;.*)$/$1$2/
- xform/uo(\d)(;.*)$/$1$2/
- xform/ai(\d)(;.*)$/$1$2/
- xform/[iu]ang(\d)(;.*)$/$1$2/
- xform/ang(\d)(;.*)$/$1$2/
- xform/ie(\d)(;.*)$/$1$2/
- xform/ian(\d)(;.*)$/$1$2/
- xform/i?ong(\d)(;.*)$/$1$2/
- xform/er(\d)(;.*)$/$1$2/
- xform/iu(\d)(;.*)$/$1$2/
- xform/ei(\d)(;.*)$/$1$2/
- xform/uan(\d)(;.*)$/$1$2/
- xform/ing(\d)(;.*)$/$1$2/ #注意这里的◯用来暂时替换分号
- xform/ou(\d)(;.*)$/$1$2/
- xform/[iu]a(\d)(;.*)$/$1$2/
- xform/iao(\d)(;.*)$/$1$2/
- xform/ue(\d)(;.*)$/$1$2/
- xform/ui(\d)(;.*)$/$1$2/
- xform/ve(\d)(;.*)$/$1$2/
- xform/un(\d)(;.*)$/$1$2/
- xform/ao(\d)(;.*)$/$1$2/
- xform/an(\d)(;.*)$/$1$2/
- xform/^zh/Ⓤ/
- xform/^sh/Ⓘ/
- xform/^ch/Ⓐ/
@@ -1574,30 +1573,30 @@ pro:
- xform/^n(\d)/en$1/
- xform/^m(\d)(;.*)/me$1$2/
- xform/^([aoe].*)(\d)(;.*)$/Ⓞ$1$2$3/
- xform/^(\w+?)ei(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)er(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iu(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uo(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uan(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[iu]a(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)iao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)in(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)uai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ou(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)un(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[uv]e(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ui(\d)(;.*)$/$1$2$3/
- xform/ei(\d)(;.*)$/$1$2/
- xform/ian(\d)(;.*)$/$1$2/
- xform/er(\d)(;.*)$/$1$2/
- xform/iu(\d)(;.*)$/$1$2/
- xform/[iu]ang(\d)(;.*)$/$1$2/
- xform/ing(\d)(;.*)$/$1$2/
- xform/uo(\d)(;.*)$/$1$2/
- xform/uan(\d)(;.*)$/$1$2/
- xform/i?ong(\d)(;.*)$/$1$2/
- xform/[iu]a(\d)(;.*)$/$1$2/
- xform/en(\d)(;.*)$/$1$2/
- xform/eng(\d)(;.*)$/Ⓖ$$1$2/
- xform/ang(\d)(;.*)$/$1$2/
- xform/an(\d)(;.*)$/$1$2/
- xform/iao(\d)(;.*)$/$1$2/
- xform/ao(\d)(;.*)$/$1$2/
- xform/in(\d)(;.*)$/$1$2/
- xform/uai(\d)(;.*)$/$1$2/
- xform/ai(\d)(;.*)$/$1$2/
- xform/ie(\d)(;.*)$/$1$2/
- xform/ou(\d)(;.*)$/$1$2/
- xform/un(\d)(;.*)$/$1$2/
- xform/[uv]e(\d)(;.*)$/$1$2/
- xform/ui(\d)(;.*)$/$1$2/
- xform/^zh/Ⓐ/
- xform/^ch/Ⓔ/
- xform/^sh/Ⓥ/
@@ -1712,28 +1711,31 @@ pro:
- derive/^([jqxy])u(\d)(;.*)$/$1v$2$3/
- derive/^([aoe])([ioun])(\d)(;.*)$/$1$1$2$3$4/
- xform/^([aoe])(ng)?(\d)(;.*)$/$1$1$2$3$4/
- xform/^(\w+?)[iu]a(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[vu]an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)en(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ie(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)(iu|uai)(\d)(;.*)$/$1Ⓨ$3$4/
- xform/^(\w+?)uo(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ou(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)i?ong(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ian(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)an(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)(iang|uang)(\d)(;.*)$/$1Ⓝ$3$4/
- xform/^(\w+?)iao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ang(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)eng(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ing(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ai(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)(in|er)(\d)(;.*)$/$1Ⓛ$3$4/
- xform/^(\w+?)[vu]n(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)[vu]e(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)ao(\d)(;.*)$/$1$2$3/
- xform/^(\w+?)(v|ui)(\d)(;.*)$/$1Ⓥ$3$4/
- xform/^(\w+?)ei(\d)(;.*)$/$1$2$3/
- xform/[iu]a(\d)(;.*)$/$1$2/
- xform/[vu]an(\d)(;.*)$/$1$2/
- xform/en(\d)(;.*)$/$1$2/
- xform/ie(\d)(;.*)$/$1$2/
- xform/iu(\d)(;.*)$/Ⓨ$1$2/
- xform/uai(\d)(;.*)$/$1$2/
- xform/uo(\d)(;.*)$/$1$2/
- xform/ou(\d)(;.*)$/$1$2/
- xform/i?ong(\d)(;.*)$/$1$2/
- xform/ian(\d)(;.*)$/$1$2/
- xform/an(\d)(;.*)$/$1$2/
- xform/[iu]ang(\d)(;.*)$/$1$2/
- xform/iao(\d)(;.*)$/$1$2/
- xform/ang(\d)(;.*)$/$1$2/
- xform/eng(\d)(;.*)$/$1$2/
- xform/ing(\d)(;.*)$/$1$2/
- xform/ai(\d)(;.*)$/$1$2/
- xform/in(\d)(;.*)$/$1$2/
- xform/er(\d)(;.*)$/$1$2/
- xform/[vu]n(\d)(;.*)$/$1$2/
- xform/[vu]e(\d)(;.*)$/$1$2/
- xform/ao(\d)(;.*)$/$1$2/
- xform/v(\d)(;.*)$/Ⓥ$1$2/
- xform/ui(\d)(;.*)$/Ⓥ$1$2/
- xform/ei(\d)(;.*)$/Ⓑ$1$2/
- xform/^zh/Ⓥ/
- xform/^ch/Ⓘ/
- xform/^sh/Ⓤ/
@@ -1767,6 +1769,24 @@ pro:
- derive|^(.*?)(\d?);.*?,(\w)(\w).*$|$1$3$4o| # 双拼\+2位辅助码\+o主要用来应对小企鹅这类输入法没法使用符号的场景但同时有些辅助码会出现异常ui uio>uiuio手机小企鹅使用时开启
- erase/^(.+);(.+)$/ # 删除原始编码加速检索
- xform/◯/;/ #对于微软双拼、搜狗双拼,前面将分号保护了起来,现在放出来让其发挥作用
# 变体1转第5位大写 (ab1Cd)
- derive|^(..)(\d)([a-z])([a-z]?)$|$1$2\u$3$4|
# 变体2转第5位大写 (ab1cD)
- derive|^(..)(\d)([a-z])([a-z]?)$|$1$2$3\u$4|
# 变体3后两字母都转大写 (ab1CD)
- derive|^(..)(\d)([a-z])([a-z]?)$|$1$2\u$3\u$4|
# 变体1转第3位大写 (abC1d)
- derive|^(..)([a-z])(\d?)([a-z]?)$|$1\u$2$3$4|
# 变体2转第5位大写 (abc1D)
- derive|^(..)([a-z])(\d?)([a-z]?)$|$1$2$3\u$4|
# 变体3两字母都转大写 (abC1D)
- derive|^(..)([a-z])(\d?)([a-z]?)$|$1\u$2$3\u$4|
# 变体1转第3位大写 (abCd1)
- derive|^(..)([a-z])([a-z])(\d?)$|$1\u$2$3$4|
# 变体2转第4位大写 (abcD1)
- derive|^(..)([a-z])([a-z])(\d?)$|$1$2\u$3$4|
# 变体3两字母都转大写 (abCD1)
- derive|^(..)([a-z])([a-z])(\d?)$|$1\u$2\u$3$4|
间接辅助: ########################################位于词库第三个分号后
__append: