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

滑动输入底层的修改建议 #867

Open xlucn opened 1 year ago

xlucn commented 1 year ago

Is your feature request related to a problem? Please describe. 目前有很多issue(#281,#534,#553,#781)等都表示了对滑动输入的用户体验不满意。其中一些被关闭,但实际问题还在,如我评论中录屏的表现部分还存在。

Describe the solution you'd like 借鉴Unexpected-Keyboard方案(彼此都是GPLv3应该没问题吧)

https://github.com/Julow/Unexpected-Keyboard/blob/2e598a4d476fde86484cb551c4be77dc5298e7b0/srcs/juloo.keyboard2/Keyboard2View.java#L148 https://github.com/Julow/Unexpected-Keyboard/blob/2e598a4d476fde86484cb551c4be77dc5298e7b0/srcs/juloo.keyboard2/Pointers.java#L149

大家可以尝试一下这款键盘。我总结的他们所用方案如下(根据使用体验,因为我不很确定看懂了代码):

  1. 一旦点触某个按键,在松开前,只考虑该按键本身、滑动事件和长按事件。可称之为锁定
  2. 在长按等待时间结束前,根据(目前位置-初始点按位置)计算滑动方向。若滑动距离超出相应阈值,根据方向确定即将触发的按键;否则即将触发按键本身
  3. 若在长按时间阈值结束前松开,触发上述按键;若经过该时间阈值仍未松开,开始自动重复上述按键

一些解读:

我觉得第3点有冲突的话,可以不考虑。重要的是第1、2点,该方案很简洁,同时保证了高自由度和良好的用户体验,完全是trime可以借鉴可学习的。

Describe alternatives you've considered

Additional context 本人不是开发者,以上是根据我的一点调查和亲身体验,提出的诚恳建议。如果不够专业、不够实际、不好实现,也请不要直接否决或者直接dup关掉,麻烦各位开发者从专业角度再做讨论。即便没有时间去实现代码,讨论本身也是有益的。

WhiredPlanck commented 1 year ago

关掉只是因为想让大家重新提 ...... 以前的讨论又多又乱。目前还没时间研究滑动输入,先记下了