一些代码片段 - tumuyan/trime-without-CMake GitHub Wiki

候选栏事件

点击候选栏存在这样的两难问题:

  1. 旧版本触摸候选词直接上屏,当lua_selector算法需要上屏的内容与候选栏显示的内容有差异时,会导致lua selector失效。
  2. 在pr #472 中,定位到了问题点,并且修改点击候选栏的事件为模拟数字键。
    而这又带来了新的问题:部分方案使用数字做码元,这会导致方案无法上屏。(其实我认为这样的方案是有问题的,小狼毫由于不支持触摸,根本无法使用这种方案)
    另一个问题是符号候选,输入"/"点击相应候选,是无法正常上屏的(我认为这其实是symbol.yaml的缺陷,"/"就不应该绑定其他符号)。

但是无论如何,已经是事实。考虑到兼容问题,暂定增加开关解决问题。在此记录一些代码片段。

问题点定位:
https://github.com/tumuyan/trime-without-CMake/blob/dcf27ea218eee23f21a3b5f0acf85d8bc1d0f936/app/src/main/java/com/osfans/trime/ime/core/Trime.java#L1255

一些没什么用的代码:


    else if (Rime.selectCandidate(i)) {
      if(Rime.getCommit()) {
        String text = Rime.getCommitText();
        if (text != null && text.length() > 20) {
          if (i == 10) handleKey(KeyEvent.KEYCODE_0, 0);
          else if (i >= 1 && i < 10) sendDownUpKeyEvents(KeyEvent.KEYCODE_SPACE, 0);
          else{
            commitText(Rime.getCommitText());
            updateComposing();
          }
          return;
        }
      }
      commitText(Rime.getCommitText());
      updateComposing();
    }


  private boolean commitByNumKey(int i) {
    if (i < 1 || i > 10) return false;
    if (i == 10) handleKey(KeyEvent.KEYCODE_0, 0);
    handleKey(KeyEvent.KEYCODE_1 + i, 0);
    return true;
  }

⚠️ **GitHub.com Fallback** ⚠️