osfans / trime

同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android
http://osfans.github.io/trime/
GNU General Public License v3.0
3.08k stars 372 forks source link

如何做非 Mode Switch 的中英文键盘状态记忆? #1028

Closed isPoto closed 5 months ago

isPoto commented 1 year ago

我开发的皮肤有多个主键盘布局,但 letter 键盘似乎只能有一个。

并且我皮肤中英文键盘均有各自独立的标点符号

也因此,只有 default 键盘能用 mode switch 切换中英文到 letter,而其他布局就没法用 mode switch 做到 default 一样的效果:只是单纯地转中英输法,并不是真正切换中英文键盘。

所以我没有用 mode switch ,而是中英文键盘直接切换。

但这也有一个问题,就是无法记忆中英文键盘状态。比如英文键盘,切换 app 后弹出的是中文键盘。但我的预期结果是英文键盘下,切换 app 弹出的也是英文键盘

因为没有用 mode switch ,所以也不能用 reset ascii mode 来记忆中英文键盘状态

这种情况下,该怎么做键盘状态记忆?

controlledentropy commented 1 year ago

我记得好像同文无障碍的同文风就是中英文都使用了两套单独的自定义布局。但我是为了稳定,新打造的滑动输入方案就基于trime默认风格来自定义了,也遇到了类似的情况,letter只能用默认的方案,对个别键位的自定义动了比较基本的配置而不是在单个布局中重新定义,为了不别扭就动了一些全局配置。不过也还好,需求已经基本覆盖了。

兄台提了好问题!另外问一下,您现在也在使用最新版么?性能表现如何?我现在感觉性能问题很大,开始出现丢按键和滑动闪退。。但新版确实已经在滑动操作上有了很大进步,可以日用了....

shitlime commented 1 year ago

我开发的皮肤有多个主键盘布局,但 letter 键盘似乎只能有一个。

并且我皮肤中英文键盘均有各自独立的标点符号

也因此,只有 default 键盘能用 mode switch 切换中英文到 letter,而其他布局就没法用 mode switch 做到 default 一样的效果:只是单纯地转中英输法,并不是真正切换中英文键盘。

所以我没有用 mode switch ,而是中英文键盘直接切换。

但这也有一个问题,就是无法记忆中英文键盘状态。比如英文键盘,切换 app 后弹出的是中文键盘。但我的预期结果是英文键盘下,切换 app 弹出的也是英文键盘

因为没有用 mode switch ,所以也不能用 reset ascii mode 来记忆中英文键盘状态

这种情况下,该怎么做键盘状态记忆?

关于这个问题,我前段时间也遇到了,翻阅了源码后,发现是有解决方法的。 解决方式: 在中文模式和英文模式的键盘中,都加入 reset_ascii_mode: true 配置项。

详细问题可以看我的相关笔记

isPoto commented 1 year ago

我开发的皮肤有多个主键盘布局,但 letter 键盘似乎只能有一个。 并且我皮肤中英文键盘均有各自独立的标点符号 也因此,只有 default 键盘能用 mode switch 切换中英文到 letter,而其他布局就没法用 mode switch 做到 default 一样的效果:只是单纯地转中英输法,并不是真正切换中英文键盘。 所以我没有用 mode switch ,而是中英文键盘直接切换。 但这也有一个问题,就是无法记忆中英文键盘状态。比如英文键盘,切换 app 后弹出的是中文键盘。但我的预期结果是英文键盘下,切换 app 弹出的也是英文键盘 因为没有用 mode switch ,所以也不能用 reset ascii mode 来记忆中英文键盘状态 这种情况下,该怎么做键盘状态记忆?

关于这个问题,我前段时间也遇到了,翻阅了源码后,发现是有解决方法的。 解决方式: 在中文模式和英文模式的键盘中,都加入 reset_ascii_mode: true 配置项。

详细问题可以看我的相关笔记

我把所有键盘都加上这句,还是一样。英文键盘切换应用后仍变中文键盘。其中 default 是 lock true,letter 是 lock false

controlledentropy commented 1 year ago

这种情况下,该怎么做键盘状态记忆?

关于这个问题,我前段时间也遇到了,翻阅了源码后,发现是有解决方法的。 解决方式: 在中文模式和英文模式的键盘中,都加入 reset_ascii_mode: true 配置项。 详细问题可以看我的相关笔记

我把所有键盘都加上这句,还是一样。英文键盘切换应用后仍变中文键盘。其中 default 是 lock true,letter 是 lock false

那我大胆猜测一下也许同文没有设想过提供多键盘默认状态变更,仅仅考虑了中英双语的键盘切换机制。如果用单独的键盘用做英文输入状态,大概只能循和数字符号表情键盘一样的机制和逻辑。或许就至多只能应对不同输入环境来自动切换这些键盘,而无法在下次滑入加载的时候记忆这些独立键盘的前台状态吧。

或许只能撸源码了 :(rz

shitlime commented 1 year ago

我开发的皮肤有多个主键盘布局,但 letter 键盘似乎只能有一个。 并且我皮肤中英文键盘均有各自独立的标点符号 也因此,只有 default 键盘能用 mode switch 切换中英文到 letter,而其他布局就没法用 mode switch 做到 default 一样的效果:只是单纯地转中英输法,并不是真正切换中英文键盘。 所以我没有用 mode switch ,而是中英文键盘直接切换。 但这也有一个问题,就是无法记忆中英文键盘状态。比如英文键盘,切换 app 后弹出的是中文键盘。但我的预期结果是英文键盘下,切换 app 弹出的也是英文键盘 因为没有用 mode switch ,所以也不能用 reset ascii mode 来记忆中英文键盘状态 这种情况下,该怎么做键盘状态记忆?

关于这个问题,我前段时间也遇到了,翻阅了源码后,发现是有解决方法的。 解决方式: 在中文模式和英文模式的键盘中,都加入 reset_ascii_mode: true 配置项。 详细问题可以看我的相关笔记

我把所有键盘都加上这句,还是一样。英文键盘切换应用后仍变中文键盘。其中 default 是 lock true,letter 是 lock false

两个都要lock true。你切换应用后英文键盘自动变中文键盘就是因为letter没有lock。lock就是记住键盘;而reset_ascii_mode只能控制是否重置为键盘默认的ascii_mode。默认的ascii mode你也需要正确配置,才能达到想要的效果。

isPoto commented 1 year ago

我开发的皮肤有多个主键盘布局,但 letter 键盘似乎只能有一个。 并且我皮肤中英文键盘均有各自独立的标点符号 也因此,只有 default 键盘能用 mode switch 切换中英文到 letter,而其他布局就没法用 mode switch 做到 default 一样的效果:只是单纯地转中英输法,并不是真正切换中英文键盘。 所以我没有用 mode switch ,而是中英文键盘直接切换。 但这也有一个问题,就是无法记忆中英文键盘状态。比如英文键盘,切换 app 后弹出的是中文键盘。但我的预期结果是英文键盘下,切换 app 弹出的也是英文键盘 因为没有用 mode switch ,所以也不能用 reset ascii mode 来记忆中英文键盘状态 这种情况下,该怎么做键盘状态记忆?

关于这个问题,我前段时间也遇到了,翻阅了源码后,发现是有解决方法的。 解决方式: 在中文模式和英文模式的键盘中,都加入 reset_ascii_mode: true 配置项。 详细问题可以看我的相关笔记

我把所有键盘都加上这句,还是一样。英文键盘切换应用后仍变中文键盘。其中 default 是 lock true,letter 是 lock false

两个都要lock true。你切换应用后英文键盘自动变中文键盘就是因为letter没有lock。lock就是记住键盘;而reset_ascii_mode只能控制是否重置为键盘默认的ascii_mode。默认的ascii mode你也需要正确配置,才能达到想要的效果。

default 和 letter 均有 lock true 和 reset ascii mode true。但切换应用后依然是自动变中文键盘,且会出现奇怪的「英文键盘打中文」

image

image

英文键盘切换应用后就会出现「英文键盘打中文」 image

因为我有做自适应键盘,可以从标点符号看出是中文还是英文键盘。

这是我的中文键盘: Screenshot_20230701-160554

这是我的英文键盘: Screenshot_20230701-160604

shitlime commented 1 year ago

不应该啊,这是什么版本的? 还有切换中/英文键盘的方式是让应用自动切换还是手动按钮切换?