pingshunhuangalex / rime-keydo

键指星海,道化万物。
https://pingshunhuangalex.gitbook.io/rime-xkjd/
GNU General Public License v3.0
31 stars 2 forks source link

在最新的mac squirrel下好像无法正常使用 #5

Closed klchen0112 closed 1 year ago

klchen0112 commented 1 year ago

我的配置 https://github.com/klchen0112/RIME_JD 。同一配置在Windows下能够正常使用,在mac 0.16.2版本下无法输入phrases 里面的内容,比如了解一下,还会出现无法正常 deploy等情况

pingshunhuangalex commented 1 year ago

因为需要隐藏候选栏以及实现一些其它的功能,Keydo在Mac上用的是魔改的Rime(官方的Squirrel很多Weasel的功能没有实现):https://github.com/LEOYoon-Tsaw/squirrel/releases

我这边试了Mac上没有问题的,应该就是一些选项官方的Squirrel无法读取,所以无法部署。

klchen0112 commented 1 year ago

因为需要隐藏候选栏以及实现一些其它的功能,Keydo在Mac上用的是魔改的Rime(官方的Squirrel很多Weasel的功能没有实现):https://github.com/LEOYoon-Tsaw/squirrel/releases

我这边试了Mac上没有问题的,应该就是一些选项官方的Squirrel无法读取,所以无法部署。

我下载了修改后的版本,直接 clone 本仓库。在打一些比如 可恶 kewj 并不代表 bbdb。在输入最后一个字母后,输出并吧包含汉字。比如 kewj 会得到上屏结果j。 ( 我使用的系统版本是 Ventura 13.2.1 Apple Silicon。版本为17.1的squirrel fork

pingshunhuangalex commented 1 year ago

能录个视频嘛?描述有点难以理解。 另外就是不要运行Rime升级,因为这又会将魔改版覆盖为官方版本。

klchen0112 commented 1 year ago

大概是这样 Untitled

pingshunhuangalex commented 1 year ago

我把我Mac上的Rime完全卸载又重新试了还是无法复现 也是用的0.17.1的squirrel fork和最新的Keydo 唯一和你不一样的地方是我是Monterey 12.6.3 M1 Pro (Apple Silicon)

我这边只能问一下你卸载的时候是不是把Rime路径下的东西都清理干净了,还有就是你有没有对Keydo做过改动。如果还是不行的话也许是OS问题(可能性不大)。

klchen0112 commented 1 year ago

我把我Mac上的Rime完全卸载又重新试了还是无法复现 也是用的0.17.1的squirrel fork和最新的Keydo 唯一和你不一样的地方是我是Monterey 12.6.3 M1 Pro (Apple Silicon)

我这边只能问一下你卸载的时候是不是把Rime路径下的东西都清理干净了,还有就是你有没有对Keydo做过改动。如果还是不行的话也许是OS问题(可能性不大)。

安装这个卸载了 https://github.com/rime/home/wiki/FAQ ,Rime 配置是直接clone的本仓库,没有任何修改。也测试了Squirrel Traditional,都有同样的问题

pingshunhuangalex commented 1 year ago

感觉是顶功的问题,可以试试看安装官方的键道看看是不是有同样的问题。 如果还是有同样的问题,那说明确实是Rime对Ventura的适配出现了问题,反之就还是你的配置问题。

klchen0112 commented 1 year ago

感觉是顶功的问题,可以试试看安装官方的键道看看是不是有同样的问题。 如果还是有同样的问题,那说明确实是Rime对Ventura的适配出现了问题,反之就还是你的配置问题。

我之前就是用的官方的,感觉是适配问题.

pingshunhuangalex commented 1 year ago

可以给魔改Rime的作者留个言,他那边更新比较快,修复的可能性更大点

klchen0112 commented 1 year ago

感觉不一定是rime的问题?

下面是error日誌

Log file created at: 2023/03/27 19:16:43
Running on machine: klchendeMacBook-Pro-305.local
Running duration (h:mm:ss): 0:00:00
Log line format: [IWEF]yyyymmdd hh:mm:ss.uuuuuu threadid file:line] msg
E20230327 19:16:43.947525 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:44.191922 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:44.405148 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.322077 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.741493 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.754269 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.785517 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.809063 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.823235 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.840554 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.855877 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.876046 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.886770 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.904289 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.920962 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.937839 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.955057 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.971827 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:48.989200 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.005214 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.025460 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.039235 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.052954 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.071197 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.088438 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:16:49.104542 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:26.537724 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:41.559511 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:41.975733 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:41.988786 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.009285 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.026384 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.045040 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.064141 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.071873 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.089399 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.105976 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.123095 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.140527 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:17:42.159196 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:27:20.539887 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:27:20.708038 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:27:26.830991 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:28:31.689535 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:28:31.999629 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:28:32.182273 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:28:32.360451 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:28:32.541736 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:34:17.623765 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:34:49.704725 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:34:58.373894 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:36:06.201862 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:39:43.793093 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:39:44.053130 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:39:44.226334 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:39:44.387084 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:39:44.551367 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)
E20230327 19:43:13.447579 34689 lua_gears.cc:184] LuaProcessor::ProcessKeyEvent of keydo_select_processor error(2): /Users/chenkailong/Library/Rime/lua/helpers.lua:10: bad argument #1 to 'char' (value out of range)

下面是warning日誌

Log file created at: 2023/03/27 19:54:18
Running on machine: klchendeMacBook-Pro-305.local
Running duration (h:mm:ss): 0:00:00
Log line format: [IWEF]yyyymmdd hh:mm:ss.uuuuuu threadid file:line] msg
W20230327 19:54:18.226799 237754 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230327 19:54:18.227794 237754 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230327 19:54:18.227974 237754 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230327 19:54:18.228013 237754 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230327 19:54:18.228121 237754 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/keydo.custom.yaml'.
W20230327 19:54:18.232700 237754 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/punctuation.custom.yaml'.
W20230327 19:54:18.234090 237754 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/key_bindings.custom.yaml'.
W20230327 19:54:18.235975 237754 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/keydo.punct.custom.yaml'.
W20230327 19:54:59.255760 238208 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230327 19:54:59.255806 238208 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230327 19:54:59.255888 238208 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230327 19:54:59.255915 238208 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230327 19:54:59.258776 238208 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/punctuation.custom.yaml'.
W20230327 19:54:59.261036 238208 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/key_bindings.custom.yaml'.
W20230327 19:54:59.263610 238208 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/keydo.punct.custom.yaml'.
pingshunhuangalex commented 1 year ago

所以想问你是不是安装官方的键道也有这个问题。 感觉要么是词库里有invalid的项,要么就是你键盘的什么键卡住了?

klchen0112 commented 1 year ago

使用我自身的配置,其他未做修改.我配置中用的是官方配置,打上述字符均没有问题

https://github.com/klchen0112/RIME_JD/commit/f409e6066298379c385925a007618d552b7cc057

pingshunhuangalex commented 1 year ago

能不能试试看不使用你自己的配置,直接克隆我的仓库看看有没有一样的问题嘛? 因为我不知道你具体怎么把Keydo和你的配置融合在一起,也许哪里逻辑有冲突

klchen0112 commented 1 year ago

测试了也是同样的问题 我尝试去掉所有其他lua,只保留topup,也会有同样的问题

# 输入方案引擎
engine:
  processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
    - ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
    - recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
    - key_binder # 绑定按键并赋予功能(或重新定义按键本身)
    - lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
    # - lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
    - speller # 将输入编码根据拼写运算规则编辑输入区
    - punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
    - selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
    - navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
    - express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
  segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
    - ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
    - matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
    - abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
    - punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
    - fallback_segmentor # 标记其他未识别段落
  translators: # 转换器 -> 将划分好的编码段转换为对应候选项
    - punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
    # - history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
    # - table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
    # - lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
    # - lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
  filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
    - uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
    # - lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
    # - reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码

能不能试试看不使用你自己的配置,直接克隆我的仓库看看有没有一样的问题嘛? 因为我不知道你具体怎么把Keydo和你的配置融合在一起,也许哪里逻辑有冲突

pingshunhuangalex commented 1 year ago

重新部署了嘛?感觉完全不合理啊 本来错误也是lua_processor@keydo_select_processor里出来的 你都已经完全去掉了 应该没有出错的理由了啊 感觉就是部署其实失败了 也许哪里报错了

klchen0112 commented 1 year ago

一个无关错误

W20230327 20:50:05.673460 307308 entry_collector.cc:202] duplicate word definition '尛': [mliuiu].
W20230327 20:50:05.673496 307308 entry_collector.cc:202] duplicate word definition '槑': [mwovo].
W20230327 20:50:05.673504 307308 entry_collector.cc:202] duplicate word definition '槑': [mwovov].
W20230327 20:50:05.673559 307308 entry_collector.cc:202] duplicate word definition '蚍': [pkiava].
W20230327 20:50:05.673712 307308 entry_collector.cc:202] duplicate word definition '鼍': [tloo].
W20230327 20:50:05.673719 307308 entry_collector.cc:202] duplicate word definition '鼍': [tloooi].
W20230327 20:50:05.673803 307308 entry_collector.cc:202] duplicate word definition '敩': [xcoouv].
klchen0112 commented 1 year ago

注释掉 rime.lua 中 keydo_select_processor 以及schema中的,还有 keydo.dict的中的 keydo.chars_extra 发生了崩溃问题

klchen0112 commented 1 year ago

重新部署了嘛?感觉完全不合理啊 本来错误也是lua_processor@keydo_select_processor里出来的 你都已经完全去掉了 应该没有出错的理由了啊 感觉就是部署其实失败了 也许哪里报错了

感觉是keydo的schema问题,我这样修改就行了,感觉是 translator 中少了个 table_translator? 或者是 char_lookup冲突了?

# 键道·我流默认设置
# encoding: utf-8

# 输入方案概要
schema:
  schema_id: keydo # 方案识别名称(用于代码引用)
  name: 键道·我流 # 方案显示名称(用于方案切换)
  version: "1.0" # 版本号
  author: # 方案作者(在Rime中勾选方案时会予以显示)
    - 奠基者 - 大牛(吅吅大山)
    - 求道者 - SPHS
  description: | # 方案描述(在Rime中勾选方案时会予以显示)
    「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。

    该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。

# 候选项菜单
menu:
  page_size: 2 # 候选项显示个数

# 模式切换开关
switches:
  - name: ascii_mode # 中英文切换(默认中文)
    reset: 0
    states: ["中", "英"]
  - name: full_shape # 全角半角切换(默认半角)
    reset: 0
    states: ["半角", "全角"]
  - name: extended_charset # CJK字符集切换(默认全字符集)
    reset: 1
    states: ["常用", "扩展"]

# 输入方案引擎
engine:
  processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
    - ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
    - recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
    - key_binder # 绑定按键并赋予功能(或重新定义按键本身)
    - lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
    # - lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
    - speller # 将输入编码根据拼写运算规则编辑输入区
    - punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
    - selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
    - navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
    - express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
  segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
    - ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
    - matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
    - abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
    - punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
    - fallback_segmentor # 标记其他未识别段落
  translators: # 转换器 -> 将划分好的编码段转换为对应候选项
    - punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
    - history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
    # - table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
    - table_translator
    # - lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
    # - lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
  filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
    - uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
    # - lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
    # - reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码

# 布局配置,方便其它配置进行调取
layout:
  topup: # 顶功规则
    phonetics_code: "bcdefghjklmnpqrstwxyz" # 音码集合
    stroke_code: "aiouv" # 形码集合
    topup_this: "bcdefghjklmnpqrstwxyz" # 顶功对象编码集,通常为音码
    topup_with: "aiouv;" # 顶功触发编码集合,通常为形码
  algebra: # 核心拼写运算规则
    - derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/ # ssb(...) -> `sb(...)
    - derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/ # ssb(...) -> s`b(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/ # ssb(...) / `sb(...) / ``b(...) -> ss`(...) / `s`(...) / ```(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/ # ssb?(...) / `sb?(...) / ``b?(...) / ```?(...) -> ssb`(...) / `sb`(...) / ``b`(...) / ````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/ # ssbb?(...) / `sbb?(...) / ``bb?(...) / ```b?(...) / ````?(...) -> ssbb`(...) / `sbb`(...) / ``bb`(...) / ```b`(...) / `````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/ # ssbbb?(...) / `sbbb?(...) / ``bbb?(...) / ```bb?(...) / ````b?(...) / `````?(...) -> ssbbb`(...) / `sbbb`(...) / ``bbb`(...) / ```bb`(...) / ````b`(...) / ``````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/ # ssbbbb?(...) / `sbbbb?(...) / ``bbbb?(...) / ```bbb?(...) / ````bb?(...) / `````b?(...) / ``````?(...) -> ssbbbb`(...) / `sbbbb`(...) / ``bbbb`(...) / ```bbb`(...) / ````bb`(...) / `````b`(...) / ```````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/ # ssbbbbb? / `sbbbbb? / ``bbbbb? / ```bbbb? / ````bbb? / `````bb? / ``````b? / ```````? -> ssbbbbb` / `sbbbbb` / ``bbbbb` / ```bbbb` / ````bbb` / `````bb` / ``````b` / ````````
    - derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/ # ss(b...) / ss(`...) -> ``(b...) / ``(`...)

# 判断是否顶功与顶功的内容
topup:
  __include: "layout/topup" # 导入顶功规则
  min_length: 4 # 编码自动上屏的最小长度(无顶功触发编码)
  max_length: 6 # 编码自动上屏的最大长度(全码)
  auto_clear: true # 顶功如遇空码时,是否清空输入区
  topup_command: true # 首码为顶功触发编码时,是否禁用顶功逻辑

# 截取特定结构的编码传递给下个逻辑块(避免某些按键直接上屏/清空输入区字符串)
recognizer:
  patterns: # 配合`segmentor`的`prefix`和`suffix`完成段落划分与标记
    calculator: "^=[^;']+$" # 计算器
    # char_lookup: "[a-z`]*`+[a-z`]*" # 编码反查

# 根据拼写运算规则编辑输入区
speller:
  algebra: # 核心拼写运算规则(编译后会写入`build`文件夹中的`prism`文件)
    __include: "layout/algebra" # 导入拼写运算规则
  auto_select: true # 是否开启无重码时自动上屏(仅在编码吻合时判断)
  alphabet: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的按键
  initials: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的首位按键(引导键)

# 将特定字符映射为标点符号或文字处理句读键、数字键
punctuator:
  import_preset: keydo.punct # 导入标点符号配置

# 将划分好的编码段转换为对应候选项
translator:
  dictionary: keydo # 指定转换器所使用的词库
  enable_charset_filter: false # 是否开启字符集过滤
  enable_completion: true # 是否提前显示尚未输入完整编码的字
  enable_encoder: false # 是否开启自动造词
  enable_sentence: false # 是否开启自动造句
  enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
  encode_commit_history: false # 是否对已上屛的词进行自动成词
  max_phrase_length: 6 # 最大自动成词词长

# 储存或调取历史输入候选项
repeat_history:
  input: / # 历史模式引导键
  size: 100 # 历史输入候选项储存量
  initial_quality: 10000 # 转换结果优先级

# 通过编码查询词库(基于输入方案本身)
# char_lookup:
#   dictionary: keydo # 指定编码查询所使用的词库
#   tags: [char_lookup] # 指定编码查询所对应的标识
#   overwrite_comment: true # 是否允许覆写编码提示
#   enable_charset_filter: false # 是否开启字符集过滤
#   enable_completion: true # 是否提前显示尚未输入完整编码的字
#   enable_encoder: false # 是否开启自动造词
#   enable_sentence: false # 是否开启自动造句
#   enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
#   encode_commit_history: false # 是否对已上屛的词进行自动成词
#   comment_format: # 指定编码提示格式
#     - xform/^~[a-z;]+// # 移除以`~`为前缀的逐码提示
klchen0112 commented 1 year ago

keydo_select_processor 还是有问题,编译后的配置如下,能使用,但是没有候选了

__build_info:
  rime_version: 1.8.5
  timestamps:
    default: 1676564577
    default.custom: 1679920251
    key_bindings: 1676564577
    key_bindings.custom: 0
    keydo.custom: 0
    keydo.punct: 1679920251
    keydo.punct.custom: 0
    keydo.schema: 1679923566
    punctuation: 1676564577
    punctuation.custom: 0
engine:
  filters:
    - uniquifier
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - "lua_processor@topup_processor"
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - "history_translator@repeat_history"
    - table_translator
    - "lua_translator@keydo_date_time_translator"
    - "lua_translator@number_translator"
layout:
  algebra:
    - "derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/"
    - "derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/"
    - "derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/"
  topup:
    phonetics_code: bcdefghjklmnpqrstwxyz
    stroke_code: aiouv
    topup_this: bcdefghjklmnpqrstwxyz
    topup_with: "aiouv;"
menu:
  page_size: 2
punctuator:
  full_shape:
    " ": {commit: " "}
    "!": {commit: "!"}
    "\"": {pair: ["“", "”"]}
    "#": ["#", "#", "⌘", "№"]
    "$": ["$", "¥", "€", "£", "¥", "¢", "¤", "₩"]
    "%": ["%", "%", "°", "℃", "℉", "‰", "‱"]
    "&": ["&", "&"]
    "'": {pair: ["‘", "’"]}
    "(": ["(", "("]
    ")": [")", ")"]
    "*": ["*", "*", "·", "・", "×", "※", "❂", "⁂", "☮", "❖", "☯", "☣"]
    "+": ["+", "+"]
    ",": {commit: ","}
    "-": ["-", "-"]
    .: {commit: "。"}
    "/": ["/", "/", "÷"]
    ":": {commit: ":"}
    ";": {commit: ";"}
    "<": ["<", "《", "〈", "«", "‹"]
    "=": ["=", "=", "々", "〃"]
    ">": [">", "》", "〉", "»", "›"]
    "?": {commit: "?"}
    "@": ["@", "@", "☯", "©", "®", "℗"]
    "[": ["[", "「", "【", "〔", "["]
    "\\": ["\\", "、", "\"]
    "]": ["]", "」", "】", "〕", "]"]
    "^": {commit: "……"}
    _: [_, "——"]
    "`": ["`", "‵", "‶", "‷", "′", "″", "‴", "⁗"]
    "{": ["{", "『", "〖", "{"]
    "|": ["|", "·", "・", "|", "§", "¦", "‖"]
    "}": ["}", "』", "〗", "}"]
    "~": ["~", "~", "˜", "≈", "≋", "≃", "≅", "≇", "∽", "⋍", "≌", "﹏", "﹋", "﹌"]
  half_shape:
    "!": {commit: "!"}
    "\"": {pair: ["“", "”"]}
    "#": "#"
    "$": {commit: "¥"}
    "%": "%"
    "&": "&"
    "'": {pair: ["‘", "’"]}
    "(": "("
    ")": ")"
    "*": "*"
    "+": "+"
    ",": {commit: ","}
    "-": "-"
    .: {commit: "。"}
    "/": "/"
    ":": {commit: ":"}
    ";": {commit: ";"}
    "<": {commit: "《"}
    "=": "="
    ">": {commit: "》"}
    "?": {commit: "?"}
    "@": "@"
    "[": {commit: "“"}
    "\\": {commit: "、"}
    "]": {commit: "”"}
    "^": {commit: "……"}
    _: {commit: "——"}
    "`": "`"
    "{": {commit: "‘"}
    "|": {commit: "·"}
    "}": {commit: "’"}
    "~": {commit: "~"}
  import_preset: keydo.punct
recognizer:
  patterns:
    calculator: "^=[^;']+$"
repeat_history:
  initial_quality: 10000
  input: "/"
  size: 100
schema:
  author:
    - "奠基者 - 大牛(吅吅大山)"
    - "求道者 - SPHS"
  description: |
    「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。

    该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。

  name: "键道·我流"
  schema_id: keydo
  version: 1.0
speller:
  algebra:
    - "derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/"
    - "derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/"
    - "derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/"
    - "derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/"
  alphabet: "abcdefghijklmnopqrstuvwxyz;/=`"
  auto_select: true
  initials: "abcdefghijklmnopqrstuvwxyz;/=`"
switches:
  - name: ascii_mode
    reset: 0
    states: ["中", "英"]
  - name: full_shape
    reset: 0
    states: ["半角", "全角"]
  - name: extended_charset
    reset: 1
    states: ["常用", "扩展"]
topup:
  auto_clear: true
  max_length: 6
  min_length: 4
  phonetics_code: bcdefghjklmnpqrstwxyz
  stroke_code: aiouv
  topup_command: true
  topup_this: bcdefghjklmnpqrstwxyz
  topup_with: "aiouv;"
translator:
  dictionary: keydo
  enable_charset_filter: false
  enable_completion: true
  enable_encoder: false
  enable_sentence: false
  enable_user_dict: false
  encode_commit_history: false
  max_phrase_length: 6
klchen0112 commented 1 year ago

去掉所有有关keydo_select_processor,char_lookup,keydo_cand_filter

pingshunhuangalex commented 1 year ago

太多了snippet了 我看不出你具体改了哪里 不知道为什么我没这个问题 但是你有 可以用但是没有候选项是因为Keydo本来就是隐藏候选项的啊?

klchen0112 commented 1 year ago

可以使用文本比较工具比较下 https://www.jq22.com/textDifference 没有写过方案,但是用同一个词典做反查是不是太好?官方的好像是分开了单个词库

image image image
# 键道·我流默认设置
# encoding: utf-8

# 输入方案概要
schema:
  schema_id: keydo # 方案识别名称(用于代码引用)
  name: 键道·我流 # 方案显示名称(用于方案切换)
  version: "1.0" # 版本号
  author: # 方案作者(在Rime中勾选方案时会予以显示)
    - 奠基者 - 大牛(吅吅大山)
    - 求道者 - SPHS
  description: | # 方案描述(在Rime中勾选方案时会予以显示)
    「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。

    该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。

# 候选项菜单
menu:
  page_size: 2 # 候选项显示个数

# 模式切换开关
switches:
  - name: ascii_mode # 中英文切换(默认中文)
    reset: 0
    states: ["中", "英"]
  - name: full_shape # 全角半角切换(默认半角)
    reset: 0
    states: ["半角", "全角"]
  - name: extended_charset # CJK字符集切换(默认全字符集)
    reset: 1
    states: ["常用", "扩展"]

# 输入方案引擎
engine:
  processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
    - ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
    - recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
    - key_binder # 绑定按键并赋予功能(或重新定义按键本身)
    - lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
    # - lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
    - speller # 将输入编码根据拼写运算规则编辑输入区
    - punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
    - selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
    - navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
    - express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
  segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
    - ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
    - matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
    - abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
    - punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
    - fallback_segmentor # 标记其他未识别段落
  translators: # 转换器 -> 将划分好的编码段转换为对应候选项
    - punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
    - history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
    # - table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
    - table_translator
    - lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
    - lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
  filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
    - uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
    # - lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
    # - reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码

# 布局配置,方便其它配置进行调取
layout:
  topup: # 顶功规则
    phonetics_code: "bcdefghjklmnpqrstwxyz" # 音码集合
    stroke_code: "aiouv" # 形码集合
    topup_this: "bcdefghjklmnpqrstwxyz" # 顶功对象编码集,通常为音码
    topup_with: "aiouv;" # 顶功触发编码集合,通常为形码
  algebra: # 核心拼写运算规则
    - derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/ # ssb(...) -> `sb(...)
    - derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/ # ssb(...) -> s`b(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/ # ssb(...) / `sb(...) / ``b(...) -> ss`(...) / `s`(...) / ```(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/ # ssb?(...) / `sb?(...) / ``b?(...) / ```?(...) -> ssb`(...) / `sb`(...) / ``b`(...) / ````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/ # ssbb?(...) / `sbb?(...) / ``bb?(...) / ```b?(...) / ````?(...) -> ssbb`(...) / `sbb`(...) / ``bb`(...) / ```b`(...) / `````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/ # ssbbb?(...) / `sbbb?(...) / ``bbb?(...) / ```bb?(...) / ````b?(...) / `````?(...) -> ssbbb`(...) / `sbbb`(...) / ``bbb`(...) / ```bb`(...) / ````b`(...) / ``````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/ # ssbbbb?(...) / `sbbbb?(...) / ``bbbb?(...) / ```bbb?(...) / ````bb?(...) / `````b?(...) / ``````?(...) -> ssbbbb`(...) / `sbbbb`(...) / ``bbbb`(...) / ```bbb`(...) / ````bb`(...) / `````b`(...) / ```````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/ # ssbbbbb? / `sbbbbb? / ``bbbbb? / ```bbbb? / ````bbb? / `````bb? / ``````b? / ```````? -> ssbbbbb` / `sbbbbb` / ``bbbbb` / ```bbbb` / ````bbb` / `````bb` / ``````b` / ````````
    - derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/ # ss(b...) / ss(`...) -> ``(b...) / ``(`...)

# 判断是否顶功与顶功的内容
topup:
  __include: "layout/topup" # 导入顶功规则
  min_length: 4 # 编码自动上屏的最小长度(无顶功触发编码)
  max_length: 6 # 编码自动上屏的最大长度(全码)
  auto_clear: true # 顶功如遇空码时,是否清空输入区
  topup_command: true # 首码为顶功触发编码时,是否禁用顶功逻辑

# 截取特定结构的编码传递给下个逻辑块(避免某些按键直接上屏/清空输入区字符串)
recognizer:
  patterns: # 配合`segmentor`的`prefix`和`suffix`完成段落划分与标记
    calculator: "^=[^;']+$" # 计算器
    # char_lookup: "[a-z`]*`+[a-z`]*" # 编码反查

# 根据拼写运算规则编辑输入区
speller:
  algebra: # 核心拼写运算规则(编译后会写入`build`文件夹中的`prism`文件)
    __include: "layout/algebra" # 导入拼写运算规则
  auto_select: true # 是否开启无重码时自动上屏(仅在编码吻合时判断)
  alphabet: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的按键
  initials: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的首位按键(引导键)

# 将特定字符映射为标点符号或文字处理句读键、数字键
punctuator:
  import_preset: keydo.punct # 导入标点符号配置

# 将划分好的编码段转换为对应候选项
translator:
  dictionary: keydo # 指定转换器所使用的词库
  enable_charset_filter: false # 是否开启字符集过滤
  enable_completion: true # 是否提前显示尚未输入完整编码的字
  enable_encoder: false # 是否开启自动造词
  enable_sentence: false # 是否开启自动造句
  enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
  encode_commit_history: false # 是否对已上屛的词进行自动成词
  max_phrase_length: 6 # 最大自动成词词长

# 储存或调取历史输入候选项
repeat_history:
  input: / # 历史模式引导键
  size: 100 # 历史输入候选项储存量
  initial_quality: 10000 # 转换结果优先级

# 通过编码查询词库(基于输入方案本身)
# char_lookup:
#   dictionary: keydo # 指定编码查询所使用的词库
#   tags: [char_lookup] # 指定编码查询所对应的标识
#   overwrite_comment: true # 是否允许覆写编码提示
#   enable_charset_filter: false # 是否开启字符集过滤
#   enable_completion: true # 是否提前显示尚未输入完整编码的字
#   enable_encoder: false # 是否开启自动造词
#   enable_sentence: false # 是否开启自动造句
#   enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
#   encode_commit_history: false # 是否对已上屛的词进行自动成词
#   comment_format: # 指定编码提示格式
#     - xform/^~[a-z;]+// # 移除以`~`为前缀的逐码提示
pingshunhuangalex commented 1 year ago

官方怎么分开的?应该和有几个词库没什么关系的。你可以试试看把词库替换成官方的词库看看问题是不是还继续存在 你把反查注释掉以后修复问题了嘛? 我刚才又重新重置然后克隆了一下仓库,还是没法复现你的问题。 很好奇你的键盘是不是会发送什么特殊的字符一类的或者卡出什么NULL一类的edge case

klchen0112 commented 1 year ago

官方怎么分开的?应该和有几个词库没什么关系的。你可以试试看把词库替换成官方的词库看看问题是不是还继续存在 你把反查注释掉以后修复问题了嘛? 我刚才又重新重置然后克隆了一下仓库,还是没法复现你的问题。 很好奇你的键盘是不是会发送什么特殊的字符一类的或者卡出什么NULL一类的edge case

可以排除词库问题. 我在去除keydo_select_processor也能复现上面问题.感觉可能还是反查模块导致输入了些奇怪的字符?

pingshunhuangalex commented 1 year ago

但是我还没重写过反查模块啊 所以Keydo的反查应该和官方键道是一样的 这个问题是你进行反查(`)的时候才触发的嘛?

klchen0112 commented 1 year ago

我参照官方的修改了下 translator filter process ,也是会出现一样的问题.很奇怪

image

另外 keydo 编译的时候有 warning

Log file created at: 2023/03/28 13:04:29
Running on machine: klchendeMacBook-Pro-305.local
Running duration (h:mm:ss): 0:00:00
Log line format: [IWEF]yyyymmdd hh:mm:ss.uuuuuu threadid file:line] msg
W20230328 13:04:29.125339 259590 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/build/squirrel.yaml'.
W20230328 13:04:29.127990 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/punctuation.custom.yaml'.
W20230328 13:04:29.129096 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/key_bindings.custom.yaml'.
W20230328 13:04:29.133154 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/build/keydo.schema.yaml'.
W20230328 13:04:29.134533 259602 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230328 13:04:29.134583 259602 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230328 13:04:29.134650 259602 config_compiler.cc:529] circular dependencies detected in keydo.schema:
W20230328 13:04:29.134673 259602 config_compiler.cc:367] accessing blocking node with unresolved dependencies: keydo.schema:
W20230328 13:04:29.134749 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/keydo.custom.yaml'.
W20230328 13:04:29.136325 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/punctuation.custom.yaml'.
W20230328 13:04:29.137217 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/key_bindings.custom.yaml'.
W20230328 13:04:29.138381 259602 config_data.cc:68] nonexistent config file '/Users/chenkailong/Library/Rime/keydo.punct.custom.yaml'.
pingshunhuangalex commented 1 year ago

config_data.cc是Rime里的文件,不是方案里的 我看了一下我自己的电脑用到现在都没有生成warning或者error 感觉是你独有的环境导致了一些问题,但是我也没有很好的办法了 可以试着去键道群里问问,毕竟你说官方的反查你也有问题

klchen0112 commented 1 year ago

感觉还是很奇怪,我再去掉 keydo_cand_filter 才能正常使用.我先这么用着好了,这个bug也太难找了,🙏

# 键道·我流默认设置
# encoding: utf-8

# 输入方案概要
schema:
  schema_id: keydo # 方案识别名称(用于代码引用)
  name: 键道·我流 # 方案显示名称(用于方案切换)
  version: "1.0" # 版本号
  author: # 方案作者(在Rime中勾选方案时会予以显示)
    - 奠基者 - 大牛(吅吅大山)
    - 求道者 - SPHS
  description: | # 方案描述(在Rime中勾选方案时会予以显示)
    「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。

    该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。

# 候选项菜单
menu:
  page_size: 2 # 候选项显示个数

# 模式切换开关
switches:
  - name: ascii_mode # 中英文切换(默认中文)
    reset: 0
    states: ["中", "英"]
  - name: full_shape # 全角半角切换(默认半角)
    reset: 0
    states: ["半角", "全角"]
  - name: extended_charset # CJK字符集切换(默认全字符集)
    reset: 1
    states: ["常用", "扩展"]

# 输入方案引擎
engine:
  processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
    - ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
    - recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
    - key_binder # 绑定按键并赋予功能(或重新定义按键本身)
    - lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
    # - lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
    - speller # 将输入编码根据拼写运算规则编辑输入区
    - punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
    - selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
    - navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
    - express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
  segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
    - ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
    - matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
    - abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
    - punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
    - fallback_segmentor # 标记其他未识别段落
  translators: # 转换器 -> 将划分好的编码段转换为对应候选项
    - punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
    - history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
    # - table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
    - table_translator
    - lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
    - lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
  filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
    - uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
    # - lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
    # - reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码

# 布局配置,方便其它配置进行调取
layout:
  topup: # 顶功规则
    phonetics_code: "bcdefghjklmnpqrstwxyz" # 音码集合
    stroke_code: "aiouv" # 形码集合
    topup_this: "bcdefghjklmnpqrstwxyz" # 顶功对象编码集,通常为音码
    topup_with: "aiouv;" # 顶功触发编码集合,通常为形码
  algebra: # 核心拼写运算规则
    - derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/ # ssb(...) -> `sb(...)
    - derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/ # ssb(...) -> s`b(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/ # ssb(...) / `sb(...) / ``b(...) -> ss`(...) / `s`(...) / ```(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/ # ssb?(...) / `sb?(...) / ``b?(...) / ```?(...) -> ssb`(...) / `sb`(...) / ``b`(...) / ````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/ # ssbb?(...) / `sbb?(...) / ``bb?(...) / ```b?(...) / ````?(...) -> ssbb`(...) / `sbb`(...) / ``bb`(...) / ```b`(...) / `````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/ # ssbbb?(...) / `sbbb?(...) / ``bbb?(...) / ```bb?(...) / ````b?(...) / `````?(...) -> ssbbb`(...) / `sbbb`(...) / ``bbb`(...) / ```bb`(...) / ````b`(...) / ``````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/ # ssbbbb?(...) / `sbbbb?(...) / ``bbbb?(...) / ```bbb?(...) / ````bb?(...) / `````b?(...) / ``````?(...) -> ssbbbb`(...) / `sbbbb`(...) / ``bbbb`(...) / ```bbb`(...) / ````bb`(...) / `````b`(...) / ```````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/ # ssbbbbb? / `sbbbbb? / ``bbbbb? / ```bbbb? / ````bbb? / `````bb? / ``````b? / ```````? -> ssbbbbb` / `sbbbbb` / ``bbbbb` / ```bbbb` / ````bbb` / `````bb` / ``````b` / ````````
    - derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/ # ss(b...) / ss(`...) -> ``(b...) / ``(`...)

# 判断是否顶功与顶功的内容
topup:
  __include: "layout/topup" # 导入顶功规则
  min_length: 4 # 编码自动上屏的最小长度(无顶功触发编码)
  max_length: 6 # 编码自动上屏的最大长度(全码)
  auto_clear: true # 顶功如遇空码时,是否清空输入区
  topup_command: true # 首码为顶功触发编码时,是否禁用顶功逻辑

# 截取特定结构的编码传递给下个逻辑块(避免某些按键直接上屏/清空输入区字符串)
recognizer:
  patterns: # 配合`segmentor`的`prefix`和`suffix`完成段落划分与标记
    calculator: "^=[^;']+$" # 计算器
    # char_lookup: "[a-z`]*`+[a-z`]*" # 编码反查

# 根据拼写运算规则编辑输入区
speller:
  algebra: # 核心拼写运算规则(编译后会写入`build`文件夹中的`prism`文件)
    __include: "layout/algebra" # 导入拼写运算规则
  auto_select: true # 是否开启无重码时自动上屏(仅在编码吻合时判断)
  alphabet: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的按键
  initials: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的首位按键(引导键)

# 将特定字符映射为标点符号或文字处理句读键、数字键
punctuator:
  import_preset: keydo.punct # 导入标点符号配置

# 将划分好的编码段转换为对应候选项
translator:
  dictionary: keydo # 指定转换器所使用的词库
  enable_charset_filter: false # 是否开启字符集过滤
  enable_completion: true # 是否提前显示尚未输入完整编码的字
  enable_encoder: false # 是否开启自动造词
  enable_sentence: false # 是否开启自动造句
  enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
  encode_commit_history: false # 是否对已上屛的词进行自动成词
  max_phrase_length: 6 # 最大自动成词词长

# 储存或调取历史输入候选项
repeat_history:
  input: / # 历史模式引导键
  size: 100 # 历史输入候选项储存量
  initial_quality: 10000 # 转换结果优先级

# 通过编码查询词库(基于输入方案本身)
# char_lookup:
#   dictionary: keydo # 指定编码查询所使用的词库
#   tags: [char_lookup] # 指定编码查询所对应的标识
#   overwrite_comment: true # 是否允许覆写编码提示
#   enable_charset_filter: false # 是否开启字符集过滤
#   enable_completion: true # 是否提前显示尚未输入完整编码的字
#   enable_encoder: false # 是否开启自动造词
#   enable_sentence: false # 是否开启自动造句
#   enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
#   encode_commit_history: false # 是否对已上屛的词进行自动成词
#   comment_format: # 指定编码提示格式
#     - xform/^~[a-z;]+// # 移除以`~`为前缀的逐码提示
pingshunhuangalex commented 1 year ago

你看看编译的文件夹里有没有build/keydo.reverse.bin文件 感觉可能反查的词典没有编译成功?

klchen0112 commented 1 year ago

我当前的配置,感觉是keydo_cand_filter可能会引入一些别的字符?其它均开启了,并按照星空键道的schema修改了。不开启keydo_cand_filter就不会有问题

# 键道·我流默认设置
# encoding: utf-8

# 输入方案概要
schema:
  schema_id: keydo # 方案识别名称(用于代码引用)
  name: 键道·我流 # 方案显示名称(用于方案切换)
  version: "1.0" # 版本号
  author: # 方案作者(在Rime中勾选方案时会予以显示)
    - 奠基者 - 大牛(吅吅大山)
    - 求道者 - SPHS
  description: | # 方案描述(在Rime中勾选方案时会予以显示)
    「键道·我流」是一款脱胎于「星空键道」的音形码顶功输入方案。

    该方案基于Colemak-DH Matrix布局,并对简码及词库进行了大幅优化。

# 候选项菜单
menu:
  page_size: 2 # 候选项显示个数

# 模式切换开关
switches:
  - name: ascii_mode # 中英文切换(默认中文)
    reset: 0
    states: ["中", "英"]
  - name: full_shape # 全角半角切换(默认半角)
    reset: 0
    states: ["半角", "全角"]
  - name: extended_charset # CJK字符集切换(默认全字符集)
    reset: 1
    states: ["常用", "扩展"]

# 输入方案引擎
engine:
  processors: # 处理器 -> 响应按键并按照预设的规则依次进行编码处理
    - ascii_composer # 与`ascii_segmentor`搭配,处理英文模式下的输入编码
    - recognizer # 与matcher搭配,处理特定结构的编码(计算器、编码反查等)
    - key_binder # 绑定按键并赋予功能(或重新定义按键本身)
    - lua_processor@topup_processor # 顶功处理器 -> 判断是否顶功与顶功的内容(顶功逻辑应优先于`speller`逻辑)
    - lua_processor@keydo_select_processor # 选择处理器 -> 使特定按键可以选择特定候选项(单引号、斜杠等)
    - speller # 将输入编码根据拼写运算规则编辑输入区
    - punctuator # 与`punct_segmentor`搭配,将特定按键映射为标点符号(逗号、句号等)
    - selector # 将特定按键映射为选择键(数字键、上/下方向键、`PageUp`/`PageDown`等)
    - navigator # 使特定按键可以移动输入区中的光标(左/右方向键等)
    - express_editor # 将特定按键映射为编辑键(空格、回车、回退键等)
  segmentors: # 分段器 -> 将输入编码根据结构进行段落划分与标记
    - ascii_segmentor # 标记英文段落,使字母在英文模式下直接上屛
    - matcher # 与`recognizer`搭配,标记符合特定规则的段落(计算器、编码反查等)
    - abc_segmentor # 标记常规的文字段落(默认标识为`abc`)
    - punct_segmentor # 标记标点符号等句读段落(默认标识为`punct`)
    - fallback_segmentor # 标记其他未识别段落
  translators: # 转换器 -> 将划分好的编码段转换为对应候选项
    - punct_translator # 句读转换器 -> 根据标点符号配置将特定按键映射为标点符号
    - history_translator@repeat_history # 历史转换器 -> 储存或调取历史输入候选项
    # - table_translator@char_lookup # 码表转换器 -> 通过编码查询词库(基于输入方案本身)
    - table_translator
    - lua_translator@keydo_date_time_translator # 日期与时间转换器 -> 获取当前日期与时间
    - lua_translator@number_translator # 数字转换器 -> 将阿拉伯数字转换为对应汉字或进行运算
  filters: # 过滤器 -> 将转换好的候选项进行过滤(增删改查)
    - uniquifier # 去重过滤器 -> 过滤重复的候选项(历史模式中相邻两项可重复一次,即重复连续输入)
    # - lua_filter@keydo_cand_filter # 优化唯一项自动上屏以及历史模式中的候选项过滤与去重
    - reverse_lookup_filter@char_lookup # 反查过滤器 -> 用特定码表来反查词库中的编码

# 布局配置,方便其它配置进行调取
layout:
  topup: # 顶功规则
    phonetics_code: "bcdefghjklmnpqrstwxyz" # 音码集合
    stroke_code: "aiouv" # 形码集合
    topup_this: "bcdefghjklmnpqrstwxyz" # 顶功对象编码集,通常为音码
    topup_with: "aiouv;" # 顶功触发编码集合,通常为形码
  algebra: # 核心拼写运算规则
    - derive/^[bcdefghjklmnpqrstwxyz;]([bcdefghjklmnpqrstwxyz;][aiouv].*)$/`$1/ # ssb(...) -> `sb(...)
    - derive/^([bcdefghjklmnpqrstwxyz;])[bcdefghjklmnpqrstwxyz;]([aiouv].*)$/$1`$2/ # ssb(...) -> s`b(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2})[aiouv](.*)$/$1`$2/ # ssb(...) / `sb(...) / ``b(...) -> ss`(...) / `s`(...) / ```(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]).(.*)$/$1`$2/ # ssb?(...) / `sb?(...) / ``b?(...) / ```?(...) -> ssb`(...) / `sb`(...) / ``b`(...) / ````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{2}).(.*)$/$1`$2/ # ssbb?(...) / `sbb?(...) / ``bb?(...) / ```b?(...) / ````?(...) -> ssbb`(...) / `sbb`(...) / ``bb`(...) / ```b`(...) / `````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{3}).(.*)$/$1`$2/ # ssbbb?(...) / `sbbb?(...) / ``bbb?(...) / ```bb?(...) / ````b?(...) / `````?(...) -> ssbbb`(...) / `sbbb`(...) / ``bbb`(...) / ```bb`(...) / ````b`(...) / ``````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{4}).(.*)$/$1`$2/ # ssbbbb?(...) / `sbbbb?(...) / ``bbbb?(...) / ```bbb?(...) / ````bb?(...) / `````b?(...) / ``````?(...) -> ssbbbb`(...) / `sbbbb`(...) / ``bbbb`(...) / ```bbb`(...) / ````bb`(...) / `````b`(...) / ```````(...)
    - derive/^([bcdefghjklmnpqrstwxyz;`]{2}[aiouv`]{5}).$/$1`/ # ssbbbbb? / `sbbbbb? / ``bbbbb? / ```bbbb? / ````bbb? / `````bb? / ``````b? / ```````? -> ssbbbbb` / `sbbbbb` / ``bbbbb` / ```bbbb` / ````bbb` / `````bb` / ``````b` / ````````
    - derive/^[bcdefghjklmnpqrstwxyz;]{2}([aiouv`]*)$/``$1/ # ss(b...) / ss(`...) -> ``(b...) / ``(`...)

# 判断是否顶功与顶功的内容
topup:
  __include: "layout/topup" # 导入顶功规则
  min_length: 4 # 编码自动上屏的最小长度(无顶功触发编码)
  max_length: 6 # 编码自动上屏的最大长度(全码)
  auto_clear: true # 顶功如遇空码时,是否清空输入区
  topup_command: true # 首码为顶功触发编码时,是否禁用顶功逻辑

# 截取特定结构的编码传递给下个逻辑块(避免某些按键直接上屏/清空输入区字符串)
recognizer:
  patterns: # 配合`segmentor`的`prefix`和`suffix`完成段落划分与标记
    calculator: "^=[^;']+$" # 计算器
    char_lookup: "[a-z`]*`+[a-z`]*" # 编码反查

# 根据拼写运算规则编辑输入区
speller:
  algebra: # 核心拼写运算规则(编译后会写入`build`文件夹中的`prism`文件)
    __include: "layout/algebra" # 导入拼写运算规则
  auto_select: true # 是否开启无重码时自动上屏(仅在编码吻合时判断)
  alphabet: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的按键
  initials: "abcdefghijklmnopqrstuvwxyz;/=`" # 待监听的首位按键(引导键)

# 将特定字符映射为标点符号或文字处理句读键、数字键
punctuator:
  import_preset: keydo.punct # 导入标点符号配置

# 将划分好的编码段转换为对应候选项
translator:
  dictionary: keydo # 指定转换器所使用的词库
  enable_charset_filter: false # 是否开启字符集过滤
  enable_completion: true # 是否提前显示尚未输入完整编码的字
  enable_encoder: false # 是否开启自动造词
  enable_sentence: false # 是否开启自动造句
  enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
  encode_commit_history: false # 是否对已上屛的词进行自动成词
  max_phrase_length: 6 # 最大自动成词词长

# 储存或调取历史输入候选项
repeat_history:
  input: / # 历史模式引导键
  size: 100 # 历史输入候选项储存量
  initial_quality: 10000 # 转换结果优先级

# 通过编码查询词库(基于输入方案本身)
char_lookup:
  dictionary: keydo # 指定编码查询所使用的词库
  tags: [char_lookup] # 指定编码查询所对应的标识
  overwrite_comment: true # 是否允许覆写编码提示
  enable_charset_filter: false # 是否开启字符集过滤
  enable_completion: true # 是否提前显示尚未输入完整编码的字
  enable_encoder: false # 是否开启自动造词
  enable_sentence: false # 是否开启自动造句
  enable_user_dict: false # 是否开启用户词库(用于记录动态字词频)
  encode_commit_history: false # 是否对已上屛的词进行自动成词
  comment_format: # 指定编码提示格式
    - xform/^~[a-z;]+// # 移除以`~`为前缀的逐码提示
pingshunhuangalex commented 1 year ago

我说的上面那个文件有吗? 太难判断了,我只是好奇为什么我这边没问题。还是就是你的环境具体和我有什么不一样的地方

klchen0112 commented 1 year ago

reverse有的。我使用的系统版本是 Ventura 13.3 Apple Silicon m1。版本为0.17.1的squirrel fork。按道理用不会有影响。我用了个快捷键执行工具 skhd ,还有用nix 作包管理器。但这些应该不会影响。键盘用的是HHKB连接蓝牙。

pingshunhuangalex commented 1 year ago

这个快捷键执行工具或者蓝牙不知道会不会干扰到按键信号 lua_filter@keydo_cand_filter肯定要table_translator@char_lookup打的tag的