当前位置: 首页 > web >正文

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

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

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

-- 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] thenlocal 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])endreturn 1 -- 表示按键已处理endreturn 2 -- 未处理,交给其他处理器
endreturn 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下测试通过。花了我一两个月的摸索才算成功😀。

http://www.xdnf.cn/news/19329.html

相关文章:

  • 抖音热榜展示页面
  • Android 权限申请现代化指南
  • MySQL 在 CentOS 上的安装与配置文件路径详解
  • 2025-08-18面试题(nginx,mysql,zabbix为主)
  • LeetCode 2540.最小公共值
  • 1.7 Rendering模块
  • 数据结构 03(线性:单链表)
  • web渗透之RCE漏洞
  • Java中使用JSONUtil处理JSON数据:从前端到后端的完美转换
  • [Mysql数据库] 知识点总结7
  • 06.《STP 基础原理与配置详解》
  • DFS 回溯 【各种题型+对应LeetCode习题练习】
  • 突发,支付宝发布公告
  • 一体化步进伺服电机在汽车线束焊接设备中的应用案例
  • LZ4 解压工具(WPF / .NET 8)说明书
  • 【金仓数据库产品体验官】KingbaseES-ORACLE兼容版快速体验
  • 深入理解drv_spi.c后,完全正向亲手移植rt-thread的drv_spi.c驱动 (基于stm32h750 artpi)
  • Java函数式编程之【流(Stream)性能优化】
  • WPF和WinFrom区别
  • 计算机毕设 java 阿歹果园养鸡场管理系统 基于 SSM 框架的果园养鸡场全流程管理系统设计与实现 Java+MySQL 的养殖生产与进销存一体化平台开发
  • 汽车专卖店管理系统的设计与实现(代码+数据库+LW)
  • Langflow核心技术学习笔记
  • 探索 XGBoost 与 LightGBM 的差异:哪个更适合你的项目?
  • 基于TCN-BiLSTM-SelfAttention神经网络的多输入单输出回归预测【MATLAB】
  • 力扣(LeetCode) ——645. 错误的集合(C语言)
  • 整体设计 的语言设计:通用模型语言的标准模板语言的规格模式语言(搜狗汪仔答问)
  • GooglePlay提审问题记录
  • 国家统计局数据分析01——机器学习
  • wpf之附加属性
  • Odoo与Django 的区别是什么?