rime中州韵小狼毫 汉语拼音输入方案

word中,我们可以轻易的给汉字加上拼音,如下👇:
在word中汉字加拼音.gif
但是,如何单独的输入拼音呢?例如输入 pīn yīn, 再如 zhōng guō。今天我们分享一个使用rime中州韵小狼毫须鼠管输入法配置的输入汉语拼音的输入方案。功能简单,但十分好用。

先睹为快

pīnyīn输入方案可以快捷的输入带有声调的汉语拼音,输出直观,选词快捷,录入体验优良。
20240113013722
20240113013902_rec_

pinyin.schema.yaml

pinyin.schema.yaml 是我们的输入方案的方案文档,我们在 用户文件夹 下创建一个 txt 文档,然后改名为 pinyin.schema.yaml,pinyin.schema.yaml文档内容如下👇:

__build_info:
  rime_version: 1.5.3
  timestamps:
    default: 1626914460
    default.custom: 1651399897
    easy_en.custom: 0
    easy_en.schema: 1491118644
    key_bindings: 1561218646
    key_bindings.custom: 0
    punctuation: 1561218646
    punctuation.custom: 0
switches:
  - name: ascii_mode  # 默认为中文输出模式
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape  # 字符默认半角输出
    reset: 0
    states: [ 半角, 全角 ]
  - name: ascii_punct  # 默认使用中文标点
    reset: 0
    states: [ 。,, ., ]
  - name: debug  # 默认debug开关为关闭状态
    reset: 0
    states: [Off, 🐞]
engine:
  processors:
    - ascii_composer
    - key_binder
    - speller
    - recognizer
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - matcher
    - ascii_segmentor
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
key_binder:
  import_preset: default
recognizer:
  import_preset: default
speller:
  alphabet: "zyxwvutsrqponmlkjihgfedcba"
  delimiter: " "
schema:
  author:
    - "dyy <douyaoyuan@126.com>"
  description: "pīn yīn 输入"
  name: "pīn yīn"
  schema_id: pinyin
  version: 0.0

在上述脚本配置中,我们的schema节点中配置了以下内容:

  • schema_idpinyin;这个schema_id将会在下文的default.custom.yaml中用到
  • namepīn yīn;这个name的值pīn yīn将会出现在方案选单

pinyin.custom.yaml

一如既往,方案名.custom.yaml是对应方案文档的补丁文档,这个pinyin.custom.yaml文档中配置了用户的个性化的配置项目,此处pinyin.custom.yaml文档的配置如下👇:

patch:
  translator/enable_user_dict: false				# false:自动造词及动态词频功能失效;true:启用自动造词和动态词频
  style/inline_preedit: false						# 是否在输入行内进行预测生成,true 表示不单独显示输入字符
  engine/translators:
    - lua_translator@pinyin_translator				# 添加 pinyin_translator lua 翻译器
  engine/filters:									# 设置以下filter
    - simplifier
    - lua_filter@pinyin_Filter						# 这个过滤器用于给拼音候选词组增加一个尾部空格
    - uniquifier									# 过滤重复候选项,依赖 simplifier
  switches/+: #增加以下开关
    - name: space					# 一个标志开头,用来控制是否在拼音选项组词后自动加一个空格
      reset: 0
      states: [,空格]

在以上配置中,我们为pinyin输入方案指定了以下关键配置:

  • 翻译器lua_translator@pinyin_translator:这个pinyin_translator的脚本文档将在下文中介绍。
  • 滤镜lua_filter@pinyin_Filter:这个pinyin_Filter的脚本文档将在下文中介绍
  • 开关space:这个开关的作用是用来控制是否在拼音词组中加入一个空格,以提高输入效率

default.custom.yaml

上文中我们定义了新的输入方案 pinyin,我们需要在 default.custom.yaml 中的方案选单中配置该输入方案,以便我们可以选择使用pinyin输入方案。default.custom.yaml中的配置如下👇:

patch:
  ascii_composer/switch_key:
    Caps_Lock: commit_code  # 候选状态下,按 Caps_Lock 后编码上屏
    Control_L: noop  # 左 ctrl 键无使用效果
    Control_R: noop  # 右 ctrl 键无使用效果
    Eisu_toggle: clear  # 按 Esc 键,清除候选编码,退出候选框
    Shift_L: commit_code  # 候选状态下,按 左 Shift 后,编码上屏
    Shift_R: commit_code  # 候选状态下,按 右 Shift 后,编码上屏
  ascii_composer:
    good_old_caps_lock: true  # true 通过 caps lock 键切换入英文模式后,保持大写输入状态
  engine/filters:
    - simplifier  # 引入简体拼音输入法过滤器
    - uniquifier  # 过滤重复候选项,依赖 simplifier
  key_binder/bindings:
    - {accept: semicolon, send: 2, when: has_menu}  # 使用 ; 键选择第 2 候选词
    - {accept: apostrophe, send: 3, when: has_menu}  # 使用 . 键选择第 3 候选词
    - {accept: bracketleft, send: Page_Up, when: paging}  # 使用 PageUp 键向上翻页
    - {accept: bracketright, send: Page_Down, when: has_menu}  # 使用 PageDown 键向下翻页
  menu/page_size: 10  # 存在候选词选项时,每一页显示的候选词数量,最大是 10
  recognizer/patterns/punct: "^/([0-9]0?|[A-Za-z]+)$"  # 标点符号识别模式
  schema_list:
    - {schema: wubi_pinyin}			# 五笔・拼音 输入方案
    - {schema: easy_en}				# 英文输入方案
    - {schema: pinyin}				# 拼音输入
  switcher:
    abbreviate_options: true  # 功能选项显示为简写模式
    caption: "〔方案选单〕"  # 选项菜单的名字
    fold_options: true  # 功能选项折叠显示
    hotkeys: [F8]  # 使用 F8 键调出 方案选单

👆以上配置中,请注音观察schema_list节点下最后一个schema的内容。

rime.lua

pinyin 输入方案中我们使用到了lua_translatorlua_filter,我们在rime.lua中增加一个translator翻译器和一个filter滤镜,rime.lua中的配置如下👇:

help_translator = require("help")
inputShow_translator = require("inputShow")
inputShow_Filter = require("inputShow_Filter")
Upper_Filter = require("Upper_Filter")
dic_4w_Filter = require("dic_4w_Filter")
phraseReplace_Filter = require("phraseReplace_Filter")
pinyinAdding_Filter = require("pinyinAdding_Filter")
dateTime_Filter = require("dateTime_filter")
dynamicPhrase_Filter = require("dynamicPhrase_Filter")
phraseExt_Filter = require("phraseExt_Filter")
phraseComment_Filter = require("phraseComment_Filter")
pinyin_translator = require("pinyin_translator")
pinyin_Filter = require("pinyin_Filter")

👆以上lua脚本中,注意观察最后两行内容。

💣注意:
以上所述default.custom.yamlpinyin.custom.yamlpinyin.schema.yamlrime.lua 四个文档,应该位于 用户文件夹 下,如下👇:
Snipaste_2024-01-13_00-02-55

pinyin_translator.lua

pinyin_translator.lua 是一个lua脚本,脚本实现了rime引擎的lua_translator翻译器接口;pinyin_translator.lua脚本实现了用户输入编码向拼音词组翻译的功能。pinyin_translator.lua脚本内容如下👇:

--lua语言中的注释用“--”
--[[
pinyin_translator.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
这是一个lua translator 翻译器,负责将用户输入的拼音生成带有声调的拼音,例如 pīn yīn
]]

local logEnable, log = pcall(require, "runLog")
if logEnable then
	log.writeLog('')
	log.writeLog('log from pinyin_translator.lua')
end

local a = {'ā','á','ǎ','à','a'}
local o = {'ō','ó','ǒ','ò','o'}
local e = {'ē','é','ě','è','e'}
local i = {'ī','í','ǐ','ì','i'}
local u = {'ū','ú','ǔ','ù','u'}
local v = {'ǖ','ǘ','ǚ','ǜ','ü'}
local jv = {'jū','jú','jǔ','jù','ju'}
local qv = {'qū','qú','qǔ','qù','qu'}
local xv = {'xū','xú','xǔ','xù','xu'}
local iu = {'iū','iú','iǔ','iù','iu'}
local ui = {'uī','uí','uǐ','uì','ui'}

local aoeListDict = {['a']=a,
					['o']=o,
					['e']=e,
					['i']=i,
					['u']=u,
					['v']=v,
					['jv']=jv,
					['qv']=qv,
					['xv']=xv,
					['iu']=iu,
					['ui']=ui}

local aoeList = {'a','o','e','ui','iu','i','u','jv','qv','xv','v'}

function translator(input, seg)
	-- 遍历检查韵母, 找到对应的 aoeKey 值
	local aoeKey = ''
	for j,aoeK in ipairs(aoeList) do
		if nil ~= string.match(input,'.*'..aoeK..'.*') then
			aoeKey = aoeK
			break
		end
	end
	
	local inputStr = input
	-- 如果没有 aoeKey,则在input后面加入一个 a,以提供有效的拼音选项
	if '' == aoeKey then
		aoeKey = 'a'
		inputStr = input ..'a'
	end
	
	--这个 aoeK 存在于 input 中,则将 input 中第一个 aoeK 替换成对应的注音字符,然后抛出作为选项
	local aoeL = aoeListDict[aoeKey]
	for j,aoe in ipairs(aoeL) do
		yield(Candidate("pinyin", seg.start, seg._end,string.gsub(inputStr,aoeKey,aoe,1),''))
		if 4 == j and false then
		-- 如果这是第四个选项(四声),则填充5个None选项,目的是为了使轻声出现在序号为 0 的位置, 如果你希望这样,请将判定中的 false 改为true
			for kk=5,9 do
				yield(Candidate("pinyin", seg.start, seg._end,'None'..tostring(kk),''))
			end
		end
		
		if 4 == j and true then
		--是否输出轻声选项,如果不想输出轻声选项(如果拼音中不包含 v,轻声可以通过 Enter 键直接将字母上屏即可),请保持判断条件为true
			if string.find(inputStr,'v') < 1 then
			--如果确实没有 v 的存在,则可以跳过轻声选项
				break
			end
		end
	end
end

return translator

pinyin_Filter.lua

pinyin_Filter.lua是一个lua脚本定义的lua_filter滤镜。pinyin_Filter.lua所定义的滤镜的功能是根据space开关的状态,决策是否向候选词组中加入空格。pinyin_Filter.lua脚本的内容如下👇:

-- pinyin_Filter.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
--[[
这个过滤器的主要作用是,在拼音候选词组的尾部,增加一个空格
]]

local logEnable, log = pcall(require, "runLog")
if logEnable then
	log.writeLog('')
	log.writeLog('log from pinyin_Filter.lua')
end

local function pinyin_Filter(input, env)
	--获取选项space(空格)开关状态
	local spaceSwitchFlg = env.engine.context:get_option("space") or false
	
	for cand in input:iter() do
		if spaceSwitchFlg then
			yield(Candidate("word", cand.start, cand._end, cand.text..' ', cand.comment))
		else
			yield(cand)
		end
	end
end

return pinyin_Filter

💣注意:
👆上述pinyin_translator.luapinyin_Filter.lua两个脚本文档,均应该位于 用户文件夹下的lua文件夹内,如下👇:
20240113012751

配置文档

👆以上所述配置文档,你可以在 rime中州韵小狼毫须鼠管输入法 汉语拼音输入方案配置包.zip 下载取用。

如果你可以访问gitHub,你也可以在 dyyRime 中找到完全版本的配置包。

效果欣赏

当你完成了以上的所有设置时,你需要重新部署你的rime,然后通过F4/F8调出方案选单,你应该可以看到pīnyīn输入方案,如下👇:
20240113013129
选择pīnyīn输入方案后,就可以愉快的开始体验拼音输入了。

如果希望输入的拼音后面自动加上一个空格,可以将space开关打开,如下👇:
20240113014327

小结

本文分享了一中在rime中州韵小狼毫须鼠管输入法中配置pīn yīn输入方案的方法,从而实现了汉语拼音的快速录入,并且根据需要,可以在录入词组后自动加上空格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/315775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPS - 表格虚线变成实线解决方案(Office 同上)

1、选中表格区域&#xff0c;在表格中选中需要调整为实线的表格区域 2、点击设置单元格格式&#xff0c;鼠标进行右击并点击设置单元格格式选项 3、选择实线&#xff0c;在单元格格式下的边框&#xff0c;调整到实线 4、设置为实线&#xff0c;即可将表格的虚线设置为实线

(ros2)gazebo颜色设置

在gazebo当中不用再设置颜色了&#xff0c;因为完全可以使用urdf的设置 <robot name"base" xmlns:xacro"http://wiki.ros.org/wiki/xacro"><xacro:property name"PI" value"3.1415926"/><!--定义一个变量PI&#xff0…

研发日记,Matlab/Simulink避坑指南(三)——向上取整Bug

文章目录 前言 背景 问题 排查 解决 总结 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南&#xff08;一&#xff09;——Data Store Memory模块执行时序Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 背景 在一个嵌入式软…

vi/vim 编辑器 --基本命令

1 vi/vim编辑器介绍 vi 是visual interface 的简称&#xff0c;是Linux中最经典的文本编辑器 vim是vi的加强版。兼容了vi的所有指令&#xff0c;不仅能编辑文本&#xff0c;而且具有shell程序编辑的功能&#xff0c;可以通过不同颜色的字体辨别语法的正确性&#xff0c;极大…

七麦数据js逆向(补环境版)

本文目标地址如下&#xff0c;使用base64解码获得 aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9tYXJrZXRSYW5rL21hcmtldC82L2NhdGVnb3J5LzUvY29sbGVjdGlvbi9hbGwvZGF0ZS8yMDI0LTAxLTEy 本文逆向破解分为扣代码版和补环境版&#xff0c;扣代码版请看专栏另一篇文章 废话不多说了&#…

Docker 安装以及加速器配置

通常我们因为安装docker出现许多错误&#xff0c;使用解压版安装方便快捷&#xff0c;并且增加加速器的配置&#xff0c;以及可视化界面的配置&#xff0c;让我们的成长更近了一步 1. 虚拟机网络配置 虚拟机使用nat模式&#xff0c;配置ens33如下&#xff1a; TYPEEthernet P…

15 个适用于 Windows 的 PDF 解锁工具大全

PDF&#xff08;便携式文件格式&#xff09;是一种文件格式&#xff0c;用于呈现和交换任何独立于任何软件、硬件或操作系统的可靠访问的文档。Adobe 发明了它&#xff0c;但现在它是由国际标准化组织 (ISO) 维护的开放标准。因此&#xff0c;您现在必须了解这些 PDF 解锁工具。…

微软等开源评估ChatGPT、Phi、Llma等,统一测试平台

微软亚洲研究院、中国科学院自动化研究所、中国科学技术大学和卡内基梅隆大学联合开源了&#xff0c;用于评估、分析大语言模型的统一测试平台——PromptBench。 Prompt Bench支持目前主流的开源、闭源大语言模型&#xff0c;例如&#xff0c;ChatGPT、GPT-4、Phi、Llma1/2、G…

PagedAttention: from interface to kernal

1 Overview PagedAttention灵感来自于操作系统中虚拟内存和分页的经典思想&#xff0c;它可以允许在非连续空间立存储连续的KV张量。具体来说&#xff0c;PagedAttention把每个序列的KV缓存进行了分块&#xff0c;每个块包含固定长度的token&#xff0c;而在计算attention时可…

Fabric2.2:在有系统通道的情况下搭建应用通道

写在最前 在使用Fabric-SDK-Go1.0.0操作Fabric网络时遇到了bug。Fabric-SDK-GO的当前版本没有办法在没有系统通道的情况下创建应用通道&#xff0c;而Fabric的最新几个版本允许在没有系统通道的情况下搭建应用通道。为了解决这个矛盾并使用Fabric-SDK-GO完成后续的项目开发&…

谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

问题原因 Unity应用(target SDK 34)上线到GooglePlay&#xff0c;有用户反馈fold5设备上&#xff08;Android14系统&#xff09;疯狂闪退&#xff0c;经测试&#xff0c;在小米手机Android14系统的版本复现成功了&#xff0c;奇怪的是apk直接安装没问题&#xff0c;而打包成aa…

MacOS环境下Kali Linux安装及使用指导

Kali Linux是一个开源的、基于Debian的Linux发行版&#xff0c;面向各种信息安全任务&#xff0c;如渗透测试、安全研究、计算机取证和逆向工程&#xff0c;是最先进的渗透测试发行版&#xff0c;它的前身是BackTrack。 1. 我们为什么要用Kali Linux 由于Kali Linux具有以下特…

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片&#xff0c;结果如下&#xff0c;报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题&#xff0c;名字太过于复杂&#xff0c;PicGo识别不出&#xff0c;一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

JavaScript基础03

1 - 循环 1.1 for循环 语法结构 for(初始化变量; 条件表达式; 操作表达式 ){//循环体 } 名称作用初始化变量通常被用于初始化一个计数器&#xff0c;该表达式可以使用 var 关键字声明新的变量&#xff0c;这个变量帮我们来记录次数。条件表达式用于确定每一次循环是否能被执行…

集简云动作管理平台上线:创建强大且可分享的AI助手(GPTs)

OpenAI的GPT Store于昨天上线&#xff0c;用户可以找到好用的GPTs&#xff0c;也可以将自己的GPTs分享到GPT Store中。未来&#xff08;预计今年1季度&#xff09;甚至可以从GPTs Store中获取利润分成。 要创建强大的GPTs离不开调用外部的软件工具&#xff0c;比如查询CRM/ERP软…

03.阿里Java开发手册——OOP规约

【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法&#xff0c;无谓增加编译器解析成本&#xff0c;直接用类名来访问即可。 【强制】所有的覆写方法&#xff0c;必须加Override 注解。 说明&#xff1a;getObject()与 get0bject()的问题。一个是字母的 O&#x…

小程序中滚动字幕

需求&#xff1a;在录像时需要在屏幕上提示字幕&#xff0c;整体匀速向上滚动 html部分&#xff1a; <view class"subtitles_main"><view style"font-size:34rpx;color: #fff;line-height: 60rpx;" animation"{{animation}}">人生的…

Unity2022.3打包Android后从AB包加载场景发现丢失大量脚本问题

问题 这两天遇到一个问题&#xff0c;在VR项目打包Android的时候&#xff0c;加载场景后&#xff0c;Timeline工作不正常&#xff0c;找不到原因。 现象 看到有很多警告&#xff0c;丢失脚本的Log。 因为场景本身也有一些丢失的脚本所以没在意&#xff0c;但是又不是所有脚本…

QEMU源码全解析 —— PCI设备模拟(7)

接前一篇文章&#xff1a; 上一回讲解了pci_edu_realize函数中的pci_register_bar函数&#xff0c;本回开始对于edu设备的MMIO读写函数进行解析。 操作系统与PCI设备交互的主要方式是PIO和MMIO。MMIO虽然是一段内存&#xff0c;但是其没有EPT映射&#xff0c;在虚拟机访问设备…

【开源】基于JAVA的数据可视化的智慧河南大屏

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…
最新文章