Giter Club home page Giter Club logo

openfly's Introduction

开源小鹤

配方: ℞ openfly

词库开源的小鹤音形 Rime 输入方案

现状

由于小鹤官方的词库是「闭源」的,并且在禁止反编译的情况下难以导出,我已经放弃小鹤音形,转而使用星空键道(入门推荐这个第三方教程),词库版本就无限期停留在 v9.9m。但这个仓库不会归档,因此有任何词库上、lua 代码上的更新,欢迎提出拉取请求。如果有公认的更好的分叉仓库,我会更新 README 引流过去。

问题和资源

小鹤音形的使用相关

请参考小鹤入门小鹤论坛,也欢迎在讨论页面参与讨论。

Rime 引擎的配置相关

请参考 Rime 官方帮助页面, 以及网上也能搜索到许多教程。如果还是有问题,也可以在讨论页面提出。

本配方使用了较新版本的 librime 的特性,Windows 用户请升级到小狼毫 0.15.0 或以上版本。

本配方相关

请先参考本文,如果是本文没有提到的使用上的问题,可以在讨论页面提出;如果怀疑是程序错误、词库错误、配置错误等,可以在议题页面提出;如果想要贡献代码或修改词库,也可以提交拉取请求

安装

最新版本

东风破 安装口令:

# 默认版本,词典分为多个文件
$ bash rime-install amorphobia/openfly
# 词典合并版本,除用户词典以外,合并为一个文件
$ bash rime-install amorphobia/openfly@merged_dict

更新口令(在安装口令后加 :update, 可以不覆盖 openfly.user.dict.yamlopenfly.user.top.dict.yaml 两个文件):

# 默认版本
$ bash rime-install amorphobia/openfly:update
# 词典合并版本
$ bash rime-install amorphobia/openfly@merged_dict:update

特定版本

东风破 安装口令:

$ bash rime-install amorphobia/openfly@<tag>

注意:

  • 版本列表
  • v9.9j 版本不支持自动复制 lua 脚本,需手动复制

手动安装

  1. 将所需文件复制(或软链)到 Rime 的用户目录

  2. lua 目录中的所有 *.lua 文件复制(或软链)到 Rime 的用户目录中的 lua 目录下,若无此目录需要新建

  3. defult.custom.yaml 里启用此方案,然后重新部署

词典分类

  • 首选字词 openfly.primary.dict.yaml
  • 次选字 openfly.secondary.char.dict.yaml
  • 次选词 openfly.secondary.word.dict.yaml
  • 表外字 openfly.off-table.dict.yaml
  • 符号编码 openfly.symbols.dict.yaml
  • 快符号 openfly.fast.symbols.dict.yaml
  • 直通车 部分实现,见直通车部分
  • 随心所欲 openfly.whimsicality.dict.yaml
  • 隐藏全码 未直接收录,反查词典是基于全码首选的单字和隐藏全码的单字生成
  • 二重简码 openfly.secondary.short.code.dict.yaml, 默认开启,可在 openfly.dict.yaml 里注释掉以关闭
  • 内嵌提示 官方未单独显示此词库 openfly.embedded.hint.dict.yaml

直通车

官方版 Rime 挂载配方已通过 lua_translator 实现时间和日期的输入,本配方稍作修改,使其与官方安装版输出一致。

四个小鹤的网址放在 openfly.web.dict.yaml 里,与官方安装版不同的是,网址是作为上屏词组输出,而非直接运行浏览器打开。

直通车中打开外部程序的命令通过 lua_processor 实现。由于 Lua 中 os.execute 的限制,在 Windows 中运行命令时会闪现一个命令提示符窗口。

已实现的快捷指令(括号内标注已实现平台):

  • oav 打开 Rime 程序目录 (Windows/macOS)
  • ocm 打开命令提示符或终端 (Windows/macOS)
  • odn 文件管理器 (Windows/macOS)
  • oec Excel (Windows/macOS)
  • ogj 高级设置,即打开 Rime 用户目录 (Windows/macOS)
  • oht 画图软件 (Windows)
  • ojs 计算器 (Windows/macOS)
  • owd Word (Windows/macOS)

删词功能

6ee1bac 起,支持在用户词典中加入编码来删除词库中(包括内嵌编码提示词库)的词条,使用方式是在用户词典 openfly.user.dict.yamlopenfly.user.top.dict.yaml 中添加如下格式的词条

词语`[删]	编码

其实在任意一个词典里添加都可以,不过建议不修改配方中的词典,这也是为什么推出删词功能的原因——删词的时候可以不修改配方中的词典,避免更新的时候改动被覆盖。

需要注意的是,词语后的撇号是键盘上数字 1 左边的符号;撇号后面的“删”字前后有半角的方括号,和编码之间是制表符而不是空格。

例如,想要删除“鹤 eh”这个不规则的编码,可以在用户词典里加上:

鹤`[删]	eh

如此一来,“鹤”字就只能通过 hedn 这个编码打出,而 eh 就可以放入你想要的词了。

候选展开

原版小鹤音形基于多多输入法,可以使用命令生成特殊的候选,选择之后并非上屏词语,而是展开新的输入。比如输入 ofb, 显示的候选是「d(标点)、,。」,但选择之后输入码变成了 ofbd, 候选也变成了相应的。

626d100 起,本配方使用 lua 脚本实现了这个功能。

候选格式

用于展开的候选与普通候选一样,由词组、tab 和编码组成,其中词组分为两个部分,第一部分是展开后的编码,用 $ 标识出,第二部分用于候选展开前的显示,与第一部分用 ` 隔开。例如

$ofbd`d(标点)、,。	ofb

其中 $ofbd 是展开后的编码,选中这个候选就如同输入了 ofbdd(标点)、,。 是展开前的提示,而与之用 tab 隔开的 ofb 则是输入码。

已知限制

  1. 由于 librime-lua 的一个程序错误,直到 00c999b 之后,才能正确地判断一个 Composition 是否为空,因此对于较旧的版本,候选展开不起作用,会直接上屏。请升级 rime 引擎到 1.7.2 或以上。
  2. 二重简码的切换开关暂时无法使用。目前 librime 最新的版本为 1.7.3,发布于2021年2月12日;二重简码切换开关依赖于 librime-lua 的 88ba821,代码合并于2021年3月5日。如果要将其打开,一个暂时的方案是在 switches 里加上一个名为 openfly_enable_2nd_short 的开关,设其值为 1,见此例;有能力的可以使用最新的代码编译 librime 及其插件。

许可和授权条款

小鹤音形官方词库和原始配置文件

小鹤音形输入法最终用户许可协议

其他整理词库和配置文件

BY-NC

程序代码部分

MIT

openfly's People

Contributors

amorphobia avatar ksqsf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

openfly's Issues

(上游词库)部分编码可更优化

以下词组均为四码有重码,但可以分配一个词组至前三码的情况,这是上游词库的问题,暂时不在此修复

纷纷/反反复复 - ffff
改日/古道热肠 - gdri
更不/狗改不了吃屎 - ggbu
光滑/告老还乡 - glhx
滚开/狗眼看人低 - gykd

windows上启用lua process的话会崩溃

手动把需要的文件移动到用户目录,并且在rime.lua中加上补丁,启动后打字按上屏就会卡死,过一会之后就只能输英文了,似乎是崩溃了。但是把processor中的lua processor禁用掉后,就能正常打字了,当然短语的命令都没有了。

Windows10 上屏时会崩溃

weasel版本:0.14.3
schema中注释掉lua_processor@openfly_shortcut_processor可正常上屏

崩溃时的日志
image

openfly_hint_filter 过滤掉次选问题

挂载上开源小鹤后,发现多数次选没有了,检查了开启的编码文件和方案文件后,发现如果启用 lua_filter@openfly_hint_filter,似乎会把单字有次选的次选编码过滤掉。

生成反查二进制文件

目前反查使用的是官方的挂载二进制文件 "flypydz", 限制是今后词库与官方存在差异的时候,可能会有词查不到。

目标是生成一个独立的反查二进制文件,并且和官方的反查方式一样,都是使用 ` 来代替未知编码。目前看来这样可能需要一个庞大的词库。

例如“湖”字的编码是 h u d o, 如果需要反查,词库里需要添加下列编码

h u d `
h u ` o
h u ` `
h ` d o
h ` d `
h ` ` o
h ` ` `
` u d o
` u d `
` u ` o
` u ` `
` ` d o
` ` d `
` ` ` o
` ` ` `

将会出现的问题就是,官方词库中,每个词条都有一个内含的排序,在反查中会影响词条出现的顺序,rime 词库本应使用词频来实现,但工作量相当大,因此词条会以在词典中的顺序出现,这一点和官方的挂载会一样。

Win系统建议使用冰凌输入法平台,兼容性超好!

冰凌输入法(平台)是极点、加加、多多、小小、搜狗、Rime等平台的最新最好替代,对各种码表和系统的兼容性非常好!
冰凌输入法(平台)釆用TSF输入法框架和COM编程规范开发,尤其与Windows10、11操作系统有较高的契合度和适应性,以UNICODE为编码内核,支持CJK字符集的所有汉字输入,支持桌面应用程序和应用商店应用程序。
内置五笔和拼音,可以在“系统词库管理”导入各种词库码表TXT,如自然码/小鹤音形、仓颉五代等等。只需写好码表头,很简单。
兼容多种输入习惯,支持特殊符号、日期时间、数字转换等便捷输入和按键、快捷键定义等功能。
支持单字输入和单字优先功能,提供自动调频、手动调频、手工置顶等调频方法。
词库开放,个性化词库定制,也为第三方词库挂接提供了接口。
纯码输入、混合输入、临时拼音、临时英文等多种文字输入方式。
便捷输入、联想输入、重复输入、顶字上屏等输入方法。
无插件、无广告、无弹窗、无捆绑、不*扰,免费。
ui

纯净小巧,安装包才2.4MB !!!
www.icesofts.com

在使用你的开源码表时遇到的问题

首先就是二简字跟二简词,不是直接显示的,你的md文件中说是默认开启的,但我必须要oei才能开启,这样就导致,每次在部署之后我都要开启oei,有什么方法解决呢。如果我要学会diy rime的配置,该如何入手

缺少部分内嵌提示

注意到以下情况:

  1. 小鹤音形的一码和二码不存在空码
  2. 部分三码存在空码,但接下来加上第四码可能就不是空码了

对于三码为空,四码有条目的情况,原版小鹤音形应该是使用了多多拼音生成器的命令 ddcmd 来实现编码提示。以词语“不知道”为例,三码 bvd 是空码,这时候输入此三码显示的是“不知道 c“,空格或数字1就能上屏”不知道“这个词,也可以完整输入 bvdc 来直接上屏;在小鹤音形官方发布的 Rime 挂载方案中,输入 bvd 显示的是“不知道”这个词本身,这是由于 Rime 框架的限制,无法简单实现显示候选和上屏不同。

另外,这个机制也保证了不需要开启全局的编码提示,例如编码 rrr 是空码,而 rrro (软弱) 和 rrrr (软软) 均有词组,这时候仅显示“软弱 o“作为候选;如果开启全局的编码提示,这两个词均会显示。

基于这个现象,可以确定的是,小鹤音形有一个隐藏的码表,用于提示这些四码词组。

Linux 系统上的一些问题

我在尝试将此输入配方打包至 AUR rime-openfly

遇到以下问题:

  1. 在 Linux 上无法使用两次输入分号来输入分号,需要将词库中分号的编码进行修改。
  2. 默认的用户置顶词库中的空格应该为制表符。
  3. 存在 Linux 平台无法使用的 Lua 脚本,配置项中需要手动移除,否则会刷错误日志。

对本仓库的修改如下:

diff --git a/openfly.fast.symbols.dict.yaml b/openfly.fast.symbols.dict.yaml
index 20430af..1609d6f 100644
--- a/openfly.fast.symbols.dict.yaml
+++ b/openfly.fast.symbols.dict.yaml
@@ -15,7 +15,7 @@ sort: by_weight
 use_preset_vocabulary: false
 ...
 :	;
-;	;
+;	;;
 !	;a
 》	;b
 ”	;c
diff --git a/openfly.schema.yaml b/openfly.schema.yaml
index c422969..f27c512 100644
--- a/openfly.schema.yaml
+++ b/openfly.schema.yaml
@@ -27,7 +27,7 @@ switches:
 
 engine:
   processors:
-    - lua_processor@openfly_shortcut_processor
+    # - lua_processor@openfly_shortcut_processor
     - ascii_composer
     - recognizer
     - key_binder
@@ -47,7 +47,7 @@ engine:
     - table_translator
     - lua_translator@openfly_date_translator
     - lua_translator@openfly_time_translator
-    - lua_translator@openfly_shortcut_translator
+    # - lua_translator@openfly_shortcut_translator
     - reverse_lookup_translator
     - history_translator@history
   filters:
diff --git a/openfly.user.top.dict.yaml b/openfly.user.top.dict.yaml
index 8677772..88a75ea 100644
--- a/openfly.user.top.dict.yaml
+++ b/openfly.user.top.dict.yaml
@@ -9,4 +9,4 @@ version: "v9.9m"
 sort: by_weight
 use_preset_vocabulary: false
 ...
-微博  wb
+微博	wb

请教一下关于rime lua的问题

个人出于兴趣开始上手rime,开始后才发现rime的文档是真心少啊,尤其关于lua部分的,网上只找到几个例子,对于env, context, config的描述文档根本没有,所以想请教同好,这个项目这么复杂的lua processor 你是参考什么文档编写的呢?恳盼回答,不胜感激!!!

特别喜欢您的快捷跳转,请问能否实现快捷跳转与hint里面的嵌套输入相结合

通常用于整理自己的网址、电话、地址等,和您hint里面的差不多,但是想要增加的是(举例):输入of会出现地址、网址、电话,而点开电话、地址可以直接输出,但是输入网址可以跳转到浏览器

另外,一些地方觉得可以稍稍改进一下:
1、希望可以以空格输出快捷跳转和嵌套输入,在iOS上可以手指点击输入
2、当快捷跳转和文字在一起的时候,点击文字也会进行跳转,希望可以改进一下,独立输出自己的内容
3、是否可以快捷跳转到快捷指令、终端命令等呢
4、在输入jjet得到的2个快捷跳转,也希望可以独立输出每一个跳转,和2的问题应该类似

感谢大佬这么好的lua,希望可以优化一下,感谢感谢

v9.9m 正式版发布

2021年3月6日 9.9m
①修正部分未采用unicode编码的部件字根
②根据规范梳理了一遍简繁表
③澍uud,䜣xbyj,叚xxv,否pibk→pibk*,禛vfpb*→vfpb
④一定、精彩、貌似、下次、传统、**,删全码
⑤同步安卓10.7.6版码表
*表示隐藏编码

次选字词名字错误

openfly.secondary.dict.yaml第8行多写了个.char,会使这个文件无效,应删掉这几个字符

name: openfly.secondary.char

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.