chore:新的根节点

This commit is contained in:
amzxyz
2026-01-21 17:43:36 +08:00
commit 274c2e8d00
94 changed files with 3245054 additions and 0 deletions

137
lua/quick_symbol_text.lua Normal file
View File

@@ -0,0 +1,137 @@
-- 欢迎使用万象拼音方案quick_symbol_text
-- @amzxyz
-- https://github.com/amzxyz/rime_wanxiang
-- 触发:由 schema.yaml -> quick_symbol_text/trigger 加载(默认 ^([a-z])/$
-- a/、b/ ... 单字母触发预设编码自动上屏;值可设为 "repeat" 实现重复上屏上一条提交内容
-- custom>schema>lua 合并键值(仅合并单字母 a-z 键)
local wanxiang = require("wanxiang")
-- 读取 symkey
local function load_mapping_from_config(config)
local symbol_map = {}
local ok_map, map = pcall(function() return config:get_map("quick_symbol_text/symkey") end)
if not ok_map or not map then return symbol_map end
local ok_keys, keys = pcall(function() return map:keys() end)
if not ok_keys or not keys then return symbol_map end
for _, key in ipairs(keys) do
local v = config:get_string("quick_symbol_text/symkey/" .. key)
if v ~= nil then
symbol_map[string.lower(tostring(key))] = v
end
end
return symbol_map
end
-- 读取 trigger
local function load_trigger_from_config(config)
local default_pat = "^([a-z])/$"
if not config then return default_pat end
local ok, s = pcall(function() return config:get_string("quick_symbol_text/trigger") end)
if ok and type(s) == "string" and #s > 0 then return s end
return default_pat
end
-- 默认单字母映射
local default_mapping = {
q = "",
w = "",
e = "",
r = "",
t = "~",
y = "·",
u = "",
i = "",
o = "",
p = "",
a = "",
s = "……",
d = "",
f = "",
g = "",
h = "",
j = "",
k = "",
l = "",
z = "",
x = "",
c = "",
v = "——",
b = "%",
n = "",
m = "",
}
local function init(env)
local config = env.engine.schema.config
env.single_symbol_pattern = load_trigger_from_config(config)
-- 默认表
env.mapping = {}
for k, v in pairs(default_mapping) do
if #k == 1 and k:match("^[a-z]$") then env.mapping[k] = v end
end
-- 覆盖(仅单字母)
local custom = load_mapping_from_config(config)
for k, v in pairs(custom) do
local key = tostring(k):lower()
if #key == 1 and key:match("^[a-z]$") then
env.mapping[key] = v -- ""=禁用;"repeat"=特殊语义
end
end
env.last_commit_text = "欢迎使用万象拼音!"
-- 记录上屏文本(供 repeat
env.quick_symbol_text_commit_notifier =
env.engine.context.commit_notifier:connect(function(ctx)
local t = ctx:get_commit_text()
if t ~= "" then env.last_commit_text = t end
end)
-- 命中触发则上屏并清空
env.quick_symbol_text_update_notifier =
env.engine.context.update_notifier:connect(function(context)
local input = context.input or ""
local key = string.match(input, env.single_symbol_pattern)
if not key then return end
key = string.lower(key)
local symbol = env.mapping[key]
if symbol == nil or symbol == "" then return end -- 未配置/禁用
if type(symbol) == "string" and symbol:lower() == "repeat" then
if env.last_commit_text ~= "" then
env.engine:commit_text(env.last_commit_text)
context:clear()
end
else
env.engine:commit_text(symbol)
context:clear()
end
end)
end
local function fini(env)
if env.quick_symbol_text_commit_notifier then
env.quick_symbol_text_commit_notifier:disconnect()
env.quick_symbol_text_commit_notifier = nil
end
if env.quick_symbol_text_update_notifier then
env.quick_symbol_text_update_notifier:disconnect()
env.quick_symbol_text_update_notifier = nil
end
end
-- 命中时吃键,避免后续流程处理
local function processor(key_event, env)
local input = env.engine.context.input or ""
local key = string.match(input, env.single_symbol_pattern)
if key then
key = string.lower(key)
local symbol = env.mapping[key]
if symbol ~= nil and symbol ~= "" then
return wanxiang.RIME_PROCESS_RESULTS.kAccepted
end
end
return wanxiang.RIME_PROCESS_RESULTS.kNoop
end
return { init = init, fini = fini, func = processor }