Skip to content

誤觸非字根鍵的行為 #42

@hungte

Description

@hungte

(quoting report from users)
打字時,若誤觸非字根鍵,在其他輸入法如 gcin 是:
1、直接出誤觸的鍵
2、組字不受干擾,繼續進行

香草則是把所有非字根當 error 不出字

但在jscin卻會變成
1、直接出誤觸的字元
2、前面打的字元以字根的形式殘留在編輯區
3、再輸入下一個鍵位變成「全新的首字根」

原因:其實JsCIN 設計上也是跟其它輸入法一樣的,但是 ChromeOS 目前有一個機制是如果組字區(Composition)有內容時,當 JsCIN 回應系統說這是一個非字根鍵 (出誤觸鍵),ChromeOS 會強制觸發一個 Reset 事件,再加上改成 Manifest V3 之後,所有更改畫面的動作都變成非同步的,所以目前我們找不到任何一個方法可以在觸發 Reset 時清理畫面上的編輯區的方法。這也就是為何 onReset 一發生,字根就直接跑進編輯區。

可能的解法有:

  1. 誤觸鍵一律當錯誤處理 (比照OpenVanilla)
  2. 誤觸鍵用 commit 方式出字
  3. 把所有按鍵處理改成非同步

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions