diff --git a/Source/Modules/InputHandler_HandleCandidate.swift b/Source/Modules/InputHandler_HandleCandidate.swift index 9ac12335..a653b361 100644 --- a/Source/Modules/InputHandler_HandleCandidate.swift +++ b/Source/Modules/InputHandler_HandleCandidate.swift @@ -49,6 +49,12 @@ extension InputHandler { } } + // MARK: 簡碼候選時對 BackSpace 的特殊處理 + + if input.isBackSpace, prefs.cassetteEnabled, state.type == .ofInputting { + return handleBackSpace(input: input) + } + // MARK: 取消選字 (Cancel Candidate) let cancelCandidateKey = diff --git a/Source/Modules/InputHandler_HandleStates.swift b/Source/Modules/InputHandler_HandleStates.swift index 5c44f656..b64cffd8 100644 --- a/Source/Modules/InputHandler_HandleStates.swift +++ b/Source/Modules/InputHandler_HandleStates.swift @@ -503,7 +503,15 @@ extension InputHandler { } switch isConsideredEmptyForNow { - case false: delegate.switchState(generateStateOfInputting()) + case false: + var result = generateStateOfInputting() + // 針對 IMK 選字窗停用 `%quick` 特性,因為按鍵邏輯實在難以實作。 + if prefs.cassetteEnabled, !prefs.useIMKCandidateWindow, + let fetched = currentLM.cassetteQuickSetsFor(key: calligrapher) + { + result.candidates = fetched.map { (keyArray: [""], value: $0.description) } + } + delegate.switchState(result) case true: delegate.switchState(IMEState.ofAbortion()) } return true