functoreality / rime-flypy-zrmfast

打字不翻页——Rime 输入法 双拼+辅助码方案
GNU Lesser General Public License v3.0
124 stars 21 forks source link

能否实现连续辅助码选字 #4

Open lyslys888 opened 2 years ago

lyslys888 commented 2 years ago

就是比如输入一个词的双拼后,不用回退光标到第一个字,按tab,输入的辅助码就是用来筛选第一个字的,按空格输入第一个字后,再继续输入的辅助码自动就是筛选第二个字的,依次类推,直到选完所有的字输入完成

lyslys888 commented 2 years ago

当然现在已经非常牛了,先赞一个。 另外就是不知为何,ab拆字模式在我的安卓手机上不可用,输入ab后没有提示部件组字模式,也无法进行拆字输入。但是在ipad上就可以

functoreality commented 2 years ago

关于写完双拼后追加辅助码,目前能实现的方案是用 Tab 逐个追加。比如想输入“林纳斯”,可以敲 lbnasi<Tab>a<Tab>s<Tab>q。 打开 flypy_zrmfast.custom.yaml,在 key_binder/bindings/+: 下追加这一行(注意缩进):

- { when: composing, accept: Tab, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' }

第二个问题,我的安卓设备上 ab 拆字能正常工作,现在也不太好判断你的问题可能出在哪。或许可以试试重新部署?不行的话,检查一下方案的 schema 和 custom 文件,有没有和拆字有关的修改?

lyslys888 commented 2 years ago

关于写完双拼后追加辅助码,目前能实现的方案是用 Tab 逐个追加。比如想输入“林纳斯”,可以敲 lbnasi<Tab>a<Tab>s<Tab>q。 打开 flypy_zrmfast.custom.yaml,在 key_binder/bindings/+: 下追加这一行(注意缩进):

- { when: composing, accept: Tab, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' }

第二个问题,我的安卓设备上 ab 拆字能正常工作,现在也不太好判断你的问题可能出在哪。或许可以试试重新部署?不行的话,检查一下方案的 schema 和 custom 文件,有没有和拆字有关的修改?

谢谢详细解答,第二个问题看来是个例问题,我再排查排查,再次感谢

lyslys888 commented 2 years ago

关于写完双拼后追加辅助码,目前能实现的方案是用 Tab 逐个追加。比如想输入“林纳斯”,可以敲 lbnasi<Tab>a<Tab>s<Tab>q。 打开 flypy_zrmfast.custom.yaml,在 key_binder/bindings/+: 下追加这一行(注意缩进):

- { when: composing, accept: Tab, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' }

第二个问题,我的安卓设备上 ab 拆字能正常工作,现在也不太好判断你的问题可能出在哪。或许可以试试重新部署?不行的话,检查一下方案的 schema 和 custom 文件,有没有和拆字有关的修改?

还是有问题,以 输入“林纳斯” 来说,输入 lbnasi ,再输入 Tab a后,光标并不是停在lb后面,而是停在了na后面,不知啥情况,我是安卓上试验的 ,如果输入史诗uiui来说,输入uiui,再输入 Tab k 光标也不是在第一个ui后面,而是在第二个ui后面,总之就是感觉这个功能还是有些bug,对于输入辅助码时,光标位置的控制还有些问题 再次感谢

functoreality commented 2 years ago

以 输入“林纳斯” 来说,输入 lbnasi ,再输入 Tab a后,光标并不是停在lb后面,而是停在了na后面

找到原因了。电脑版 Rime 默认是 ←→ 键移动光标,↑↓ 键移动候选,用 PageUp,PageDown 翻页。Trime 考虑到手机上候选是横排显示而非竖排显示,就改成了默认 ←→ 键移动候选,↑↓ 和 PageUp,PageDown 都用来翻页,移动光标就不太容易了。 将 Trime 方向键功能改成和电脑版一致可以解决这个问题。在 trime.custom.yaml 里加上这一句:

style/horizontal: false

或者如果不嫌麻烦的话,也可以在第一次按 Tab 之前先按 HomeControl+a(Trime 默认的虚拟键盘中长按 a 也行)把光标移动到开头。

lyslys888 commented 2 years ago

以 输入“林纳斯” 来说,输入 lbnasi ,再输入 Tab a后,光标并不是停在lb后面,而是停在了na后面

找到原因了。电脑版 Rime 默认是 ←→ 键移动光标,↑↓ 键移动候选,用 PageUp,PageDown 翻页。Trime 考虑到手机上候选是横排显示而非竖排显示,就改成了默认 ←→ 键移动候选,↑↓ 和 PageUp,PageDown 都用来翻页,移动光标就不太容易了。 将 Trime 方向键功能改成和电脑版一致可以解决这个问题。在 trime.custom.yaml 里加上这一句:

style/horizontal: false

或者如果不嫌麻烦的话,也可以在第一次按 Tab 之前先按 HomeControl+a(Trime 默认的虚拟键盘中长按 a 也行)把光标移动到开头。

厉害,就是这个问题,非常感谢

lyslys888 commented 2 years ago

以 输入“林纳斯” 来说,输入 lbnasi ,再输入 Tab a后,光标并不是停在lb后面,而是停在了na后面

找到原因了。电脑版 Rime 默认是 ←→ 键移动光标,↑↓ 键移动候选,用 PageUp,PageDown 翻页。Trime 考虑到手机上候选是横排显示而非竖排显示,就改成了默认 ←→ 键移动候选,↑↓ 和 PageUp,PageDown 都用来翻页,移动光标就不太容易了。 将 Trime 方向键功能改成和电脑版一致可以解决这个问题。在 trime.custom.yaml 里加上这一句:

style/horizontal: false

或者如果不嫌麻烦的话,也可以在第一次按 Tab 之前先按 HomeControl+a(Trime 默认的虚拟键盘中长按 a 也行)把光标移动到开头。

另外,顺便请教下,IOS版同文输入法,是不支持输入候选时进行移动光标么,谢谢

functoreality commented 2 years ago

IOS版同文输入法,是不支持输入候选时进行移动光标么

手头上没有 iOS 设备,所以这个问题我也不太清楚。记得 iOS 系统的 Rime 前端好像叫 iRime 而不是同文?如果虚拟键盘有相应按键,或者系统允许第三方输入法使用外接键盘的话,也许可以直接试试输入候选的时候按一下方向键,看看效果如何。 如果只是说这个补充辅助码的功能的话,可能需要检查一下软件的后端是否是 librime 1.6.0 或以上版本(版本号在用户目录 installation.yaml 文件的 rime_version 项可以看到),send_sequence 命令好像是在这个版本中正式引入的。部分 1.5.3 版本可能也支持这个功能,再老的估计就不行了。

lyslys888 commented 2 years ago

IOS版同文输入法,是不支持输入候选时进行移动光标么

手头上没有 iOS 设备,所以这个问题我也不太清楚。记得 iOS 系统的 Rime 前端好像叫 iRime 而不是同文?如果虚拟键盘有相应按键,或者系统允许第三方输入法使用外接键盘的话,也许可以直接试试输入候选的时候按一下方向键,看看效果如何。 如果只是说这个补充辅助码的功能的话,可能需要检查一下软件的后端是否是 librime 1.6.0 或以上版本(版本号在用户目录 installation.yaml 文件的 rime_version 项可以看到),send_sequence 命令好像是在这个版本中正式引入的。部分 1.5.3 版本可能也支持这个功能,再老的估计就不行了。

谢谢

lyslys888 commented 1 year ago

又发现一个电脑端小狼毫的问题,辅助码用的小鹤的,我想打母胎单身,输入mutddjuf 发现没有这个词, 然后输入tab开始过滤, 第一个TAB: 定位到mu后面,输入v选择母 第二个TAB:此时光标并没有定位到td后面,而是定位到了tdd后面,不知道是什么原因 我在安卓手机rime上一样的配置是正常的,第二个TAB会定位到td后面

lyslys888 commented 1 year ago

@functoreality

functoreality commented 1 year ago

这种情况感觉有点奇怪,我手上没有 Windows 设备所以也没测试,至少在 Linux 和安卓设备上都是正常的。要不试试不是敲 Tab,而是手动接连按这些按键 {Right}{Right}{Shift+Left}{Right}{Right}[(在 flypy_zrmfast.custom.yaml 里可以看到实际上 Tab 键的功能就是通过模拟这串按键序列来实现的),看看光标会怎么移动?

lyslys888 commented 1 year ago

这种情况感觉有点奇怪,我手上没有 Windows 设备所以也没测试,至少在 Linux 和安卓设备上都是正常的。要不试试不是敲 Tab,而是手动接连按这些按键 {Right}{Right}{Shift+Left}{Right}{Right}[(在 flypy_zrmfast.custom.yaml 里可以看到实际上 Tab 键的功能就是通过模拟这串按键序列来实现的),看看光标会怎么移动?

我发现是直接辅助码的问题,我把直接辅助码关闭,可以正确定位光标 了。 但是又有个问题,输入mutddjuf ,按TAB,会定位到mu后,但是还需要手动输入[ ,然后 再输入V,才会过滤出母

functoreality commented 1 year ago

但是又有个问题,输入mutddjuf ,按TAB,会定位到mu后,但是还需要手动输入[ ,然后 再输入V,才会过滤出母

出现这种情况也比较奇怪,可以看一下 flypy_zrmfast.custom.yaml 里追加辅助码按键序列的定义,最后有没有补上 [?或者重新部署一下,有没有报错什么的? (另外仓库里追加辅助码默认对应的是 ` 而不是 Tab,如果你是按的仓库内容更新了 Rime 设置的话可以看一下是不是这里的问题)

xzzdys commented 1 year ago

我也遇到了相似的问题,我在 flypy_zrmfast.custom.yaml 中设定的是 - { when: composing, accept: Tab, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' } ,结果是按Tab键后只会跳转到对应位置而不会自动输入[ 直接按这一系列按键是 可以的 我使用的是windows,自然码双拼,我还试图把这行映射copy到flypy2zrm,也无效 不知道前面的有没有解决

xzzdys commented 1 year ago

我看到了您在贴吧的回复,说如果rime核心版本小于1.6可能有问题,就去看了自己的版本是1.5.3,这大概就是问题所在了。 但是我是从小狼毫的官网下载的,最新版就是这个内核,官网的更新日志最后一次更新已经是19年了。。。 新版的官方下载渠道是在哪里啊?

还有一个小问题,latex模式有没有完整的输入表可以查询呢?

functoreality commented 1 year ago

我看到了您在贴吧的回复,说如果rime核心版本小于1.6可能有问题,就去看了自己的版本是1.5.3,这大概就是问题所在了。 但是我是从小狼毫的官网下载的,最新版就是这个内核,官网的更新日志最后一次更新已经是19年了。。。 新版的官方下载渠道是在哪里啊?

还有一个小问题,latex模式有没有完整的输入表可以查询呢?

我自己几乎不用 Windows,librime 版本问题也没有试着自己解决过。不过看别人写的 这篇介绍 里面是这么说的,也许可以试试:

小狼毫主版本长年未更新,使用 rime 输入法的核心库 librime 替换小狼毫程序文件夹中的 rime.dll 可更新输入法。如果输入法中使用了 Rime.lua 的动态输出功能,与核心库可能会冲突,不要更换 rime.dll。

不过按它的说法不排除这样升级会影响 LaTeX 输入功能,如果发现影响了那或许就先把 dll 文件换回来,之后再找找有没有其他办法吧。

至于 LaTeX 的输入表可以直接在 rime.lua 里看到。本来我也没指望自己预设的这些映射对所有人都适用,实际使用中应该是需要改成符合自己习惯的版本的,所以干脆直接让用户看代码了,代码应该也不难理解。

h3lp404 commented 1 year ago

相同的配置,这个问题在IOS端Irime是正常的,win端dev0.14.3.99版本也是正常的,唯独在mac端有问题,版本是最新的0.16.2,直接辅助码关了也不行😂

functoreality commented 1 year ago

相同的配置,这个问题在IOS端Irime是正常的,win端dev0.14.3.99版本也是正常的,唯独在mac端有问题,版本是最新的0.16.2,直接辅助码关了也不行joy

你说的问题,具体有什么表现呢?比如,如果手动按 {Right}{Right}{Shift+Left}{Right}{Right} 这一串按键,光标能否移动到相应的位置? 原来的 Rime 是用左右键移动光标,上下键移动候选;据我从其他人那里听到的消息,最近更新的 Mac 版本可能改成了用左右键移动候选,没有能直接移动光标的键了。可以看看是不是这里的问题。 如果是的话,我不太清楚新的鼠须管有没有提供设置项,允许把方向键的功能改回来(我似乎没有在更新的文档里找到这部分的内容)。要是没有这个设置项,那这个问题可能还暂时不太好解决。

h3lp404 commented 1 year ago

相同的配置,这个问题在IOS端Irime是正常的,win端dev0.14.3.99版本也是正常的,唯独在mac端有问题,版本是最新的0.16.2,直接辅助码关了也不行joy

你说的问题,具体有什么表现呢?比如,如果手动按 {Right}{Right}{Shift+Left}{Right}{Right} 这一串按键,光标能否移动到相应的位置? 原来的 Rime 是用左右键移动光标,上下键移动候选;据我从其他人那里听到的消息,最近更新的 Mac 版本可能改成了用左右键移动候选,没有能直接移动光标的键了。可以看看是不是这里的问题。 如果是的话,我不太清楚新的鼠须管有没有提供设置项,允许把方向键的功能改回来(我似乎没有在更新的文档里找到这部分的内容)。要是没有这个设置项,那这个问题可能还暂时不太好解决。

方向键键是可以移动的,比如:我打wh bk bk,左方向键按一下就移动到wh后面了,右方向键只能移动一个字母,比如打wh bk bk(王冰冰)后先按左方向键光标回到wh 后面加了辅码what bk bk ,在按右方向键,现在光标在what b^k bk,第一个bk的中间。如果在第一次按左方向键后按tab,大多数情况正常回到位置,光标位置在what bk^ bk,在第一个bk后并插入[ 符号。 如果直接按tab键,有候选词(比如打wo ui uw[我是谁])的情况下,光标会不移动,会直接在最后插入辅码引导成 wo ui uw [ 这样的,如果没有候选词(比如wh bk bk),则光标会在第一个bk后面,不会出现在wh后面

h3lp404 commented 1 year ago

相同的配置,这个问题在IOS端Irime是正常的,win端dev0.14.3.99版本也是正常的,唯独在mac端有问题,版本是最新的0.16.2,直接辅助码关了也不行joy

你说的问题,具体有什么表现呢?比如,如果手动按 {Right}{Right}{Shift+Left}{Right}{Right} 这一串按键,光标能否移动到相应的位置? 原来的 Rime 是用左右键移动光标,上下键移动候选;据我从其他人那里听到的消息,最近更新的 Mac 版本可能改成了用左右键移动候选,没有能直接移动光标的键了。可以看看是不是这里的问题。 如果是的话,我不太清楚新的鼠须管有没有提供设置项,允许把方向键的功能改回来(我似乎没有在更新的文档里找到这部分的内容)。要是没有这个设置项,那这个问题可能还暂时不太好解决。

加入style/horizontal: false这个就可以了😂,但是输入框就不能设置横版了

h3lp404 commented 1 year ago

相同的配置,这个问题在IOS端Irime是正常的,win端dev0.14.3.99版本也是正常的,唯独在mac端有问题,版本是最新的0.16.2,直接辅助码关了也不行joy

你说的问题,具体有什么表现呢?比如,如果手动按 {Right}{Right}{Shift+Left}{Right}{Right} 这一串按键,光标能否移动到相应的位置? 原来的 Rime 是用左右键移动光标,上下键移动候选;据我从其他人那里听到的消息,最近更新的 Mac 版本可能改成了用左右键移动候选,没有能直接移动光标的键了。可以看看是不是这里的问题。 如果是的话,我不太清楚新的鼠须管有没有提供设置项,允许把方向键的功能改回来(我似乎没有在更新的文档里找到这部分的内容)。要是没有这个设置项,那这个问题可能还暂时不太好解决。

如果是横排显示(设置为style/horizontal: true),输入内容后,直接按Shift+Right(右方向键),就可以实现加辅助码的效果,请问下引导辅码tab键的那行代码可以修改吗?怎么改?我可以试下

functoreality commented 1 year ago

如果是横排显示(设置为style/horizontal: true),输入内容后,直接按Shift+Right(右方向键),就可以实现加辅助码的效果,请问下引导辅码tab键的那行代码可以修改吗?怎么改?我可以试下

如果可以的话,把原来的这行(不是引导辅码那行)

- { when: composing, accept: grave, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' }

改成这样就行(如果要用 Tab 键就把 grave 改掉):

- { when: composing, accept: grave, send_sequence: '{Shift+Right}[' }

不过在我这里遇到的问题是,如果有三个字或更多,为第二个字加辅助码会出问题(第一个字是正常的)。不知道是不是改成横排显示以后 Rime 把这个问题解决了。

h3lp404 commented 1 year ago

如果是横排显示(设置为style/horizontal: true),输入内容后,直接按Shift+Right(右方向键),就可以实现加辅助码的效果,请问下引导辅码tab键的那行代码可以修改吗?怎么改?我可以试下

如果可以的话,把原来的这行(不是引导辅码那行)

- { when: composing, accept: grave, send_sequence: '{Right}{Right}{Shift+Left}{Right}{Right}[' }

改成这样就行(如果要用 Tab 键就把 grave 改掉):

- { when: composing, accept: grave, send_sequence: '{Shift+Right}[' }

不过在我这里遇到的问题是,如果有三个字或更多,为第二个字加辅助码会出问题(第一个字是正常的)。不知道是不是改成横排显示以后 Rime 把这个问题解决了。

修改后确实是如你所说,如果是两个字,tab后是正常的可以输入辅码😂,如果是多于两个字,那第一个字是正常的,第二次tab光标就回到最后一个字了,中间的跳过了😂。难受啊,Rime没有修复,还有其他办法吗?

functoreality commented 1 year ago

修改后确实是如你所说,如果是两个字,tab后是正常的可以输入辅码joy,如果是多于两个字,那第一个字是正常的,第二次tab光标就回到最后一个字了,中间的跳过了joy。难受啊,Rime没有修复,还有其他办法吗?

可能只能放弃操作的一致性了,加第一个辅助码的时候得特殊处理才行。把刚才的内容改成下面这样:

- { when: composing, accept: grave, send_sequence: '{Right}{Right}[' }

用的时候,加第一个辅助码之前得先按 Control+a(或者 Home 也行,看哪个顺手)再按 grave。之后的字只需要按 grave。 如果嫌(第一个辅助码)按两次键麻烦的话,也可以自己定义一个键来打包这两次操作。比如,额外添加了下面这行配置以后,加第一个辅助码只需要按一次 Control+1(也可以自己改成其他的键):

- { when: composing, accept: Control+1, send_sequence: '{Home}{Right}{Right}[' }
h3lp404 commented 1 year ago

修改后确实是如你所说,如果是两个字,tab后是正常的可以输入辅码joy,如果是多于两个字,那第一个字是正常的,第二次tab光标就回到最后一个字了,中间的跳过了joy。难受啊,Rime没有修复,还有其他办法吗?

可能只能放弃操作的一致性了,加第一个辅助码的时候得特殊处理才行。把刚才的内容改成下面这样:

- { when: composing, accept: grave, send_sequence: '{Right}{Right}[' }

用的时候,加第一个辅助码之前得先按 Control+a(或者 Home 也行,看哪个顺手)再按 grave。之后的字只需要按 grave。 如果嫌(第一个辅助码)按两次键麻烦的话,也可以自己定义一个键来打包这两次操作。比如,额外添加了下面这行配置以后,加第一个辅助码只需要按一次 Control+1(也可以自己改成其他的键):

- { when: composing, accept: Control+1, send_sequence: '{Home}{Right}{Right}[' }

好的,谢谢耐心解答,哈哈哈 ,我发现现在改为{Right}{Right}[ ,之后在第一个字输入辅码后,按空格确定第一个,在tab可以继续输入辅码,然后继续空格确定字,以此类推,就是每次都要空格确认,先用着吧,等一个解觉方案😂 希望在后续的版本中加入更多更能,比如;(分号)引导符号之类的,(输入分号后可以在每个按键上面分配特殊符号),比如;W 可以输出? ,这样的

functoreality commented 1 year ago

好的,谢谢耐心解答,哈哈哈 ,我发现现在改为{Right}{Right}[ ,之后在第一个字输入辅码后,按空格确定第一个,在tab可以继续输入辅码,然后继续空格确定字,以此类推,就是每次都要空格确认,先用着吧,等一个解觉方案joy 希望在后续的版本中加入更多更能,比如;(分号)引导符号之类的,(输入分号后可以在每个按键上面分配特殊符号),比如;W 可以输出? ,这样的

没太理解你说的分配特殊符号是个什么功能?Rime 的默认行为是按 /w 可以输入 ẃẁŵẇ 这些符号,按 /1 可以输入 一壹₁¹① 这些,不知道和你想要的功能是什么关系

h3lp404 commented 1 year ago

好的,谢谢耐心解答,哈哈哈 ,我发现现在改为{Right}{Right}[ ,之后在第一个字输入辅码后,按空格确定第一个,在tab可以继续输入辅码,然后继续空格确定字,以此类推,就是每次都要空格确认,先用着吧,等一个解觉方案joy 希望在后续的版本中加入更多更能,比如;(分号)引导符号之类的,(输入分号后可以在每个按键上面分配特殊符号),比如;W 可以输出? ,这样的

没太理解你说的分配特殊符号是个什么功能?Rime 的默认行为是按 /w 可以输入 ẃẁŵẇ 这些符号,按 /1 可以输入 一壹₁¹① 这些,不知道和你想要的功能是什么关系

其实就是比较简单的一个功能,开源小鹤的一个功能(https://github.com/amorphobia/openfly/blob/main/openfly.fast.symbols.dict.yaml),这个,我不晓得要怎么挂上现在的方案,我还是喜欢你的方案,方便快捷,又不累,基本就是我理想的输入方式👍