小狼毫输入法中让数字键盘上的数字键不再选择候选词而是与原始输入一起直接上屏

使用搜狗输入法的双拼时,输入"womf"然后按下主键盘上的数字1,会选择排名第一的候选词上屏(大概率是"我们"),输入"womf"然后按下数字键盘上的数字1,不会选择候选词,而是将输入文本变成"womf1",上屏的也将是"womf1"。小狼毫输入法默认则不是这样动作的,输入"womf"后,无论按下主键盘还是数字键盘上的数字,都会选择候选词上屏,而不会是原始输入加上数字键对应的数字上屏。

我看到github上rime输入法讨论区有人提问有没有办法让小狼毫输入法表现出搜狗输入法那样的行为,该问题已经很长时间了,但是没有有效的回答。查看小狼毫的文档,也没有涉及如何配置可以让主键盘与数字键盘上的数字按键表现出不同行为模式的内容,但是小狼毫输入法lua插件可以通过key_event:repr()获取按键名称,从而区分当前按下的数字键是主键盘上的数字键还是数字键盘上的数字键,这就为通过lua脚本实现按下数字键盘上的数字键时不选择候选词上屏而是将原始输入码与数字直接上屏创造了条件。编辑如下lua脚本(可以将文件名命名为kp_num_processor.lua),创建一个processor:

Lua 复制代码
-- kp_num_processor.lua
local function processor(key_event, env)
    local key_code = key_event:repr() -- 获取按键名称
    -- 定义数字键盘数字键的映射
    local numpad_keys = {
        ["KP_0"] = "0",
        ["KP_1"] = "1",
        ["KP_2"] = "2",
        ["KP_3"] = "3",
        ["KP_4"] = "4",
        ["KP_5"] = "5",
        ["KP_6"] = "6",
        ["KP_7"] = "7",
        ["KP_8"] = "8",
        ["KP_9"] = "9"
    }

    -- 检查是否是数字键盘数字键
    if numpad_keys[key_code] then
        local context = env.engine.context -- 获取输入上下文
        local input_text = context.input -- 获取当前输入的原始码
        if input_text and input_text ~= "" then
            -- 如果有输入的原始码,拼接原始码和数字并提交
            env.engine:commit_text(input_text .. numpad_keys[key_code])
            context:clear() -- 清空输入缓冲区
        else
            -- 如果没有原始码,只提交数字
            env.engine:commit_text(numpad_keys[key_code])
        end
        return 1 -- 表示按键已处理
    end

    return 2 -- 未处理,交给其他处理器
end

return processor

然后在使用的输入法方案配置文件中配置使用该processor,例如我使用的微软双拼方案,就在double_pinyin_mspy.schema.yaml的"engine/processors"结点的第一行增加一个processor:

-- ......前面的配置内容省略

engine:

processors:

  • lua_processor@*kp_num_processor

  • lua_processor@*select_character # 以词定字

  • ascii_composer

-- ......后续配置内容省略

然后重新部署,就可以愉快的输入了。

本文内容在小狼毫输入法0.17.9下测试通过。花了我一两个月的摸索才算成功😀。

相关推荐
HackerTom10 个月前
iOS用rime且导入自制输入方案
ios·iphone·rime
机器学习之心2 年前
多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测
attention·cnn-lstm·多变量时间序列预测·rime·multihead·多头注意力机制
izwmain2 年前
Debian Linux安装配置ibus rime中文输入法
linux·debian·rime·输入法·ibus·fcitx·中文输入
机器学习之心2 年前
回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测
cnn-svm·rime-cnn-svm·rime·霜冰优化算法优化·卷积神经网络-支持向量机·多变量回归预测