From a53f96ee2ff85fc9091087ff0d9f10512eef09aa Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Tue, 20 Jun 2023 17:19:49 +0800 Subject: [PATCH] InputHandler // Bind areCandidateKeysShiftPressed(). --- Source/Modules/InputHandler_HandleCandidate.swift | 8 ++++++-- Source/Modules/InputHandler_TriageInput.swift | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/Modules/InputHandler_HandleCandidate.swift b/Source/Modules/InputHandler_HandleCandidate.swift index c5971b1e..22d4ed3d 100644 --- a/Source/Modules/InputHandler_HandleCandidate.swift +++ b/Source/Modules/InputHandler_HandleCandidate.swift @@ -151,8 +151,12 @@ extension InputHandler { } var index: Int? - let matched: String = [.ofAssociates].contains(state.type) - ? input.inputTextIgnoringModifiers ?? "" : input.text + var shaltShiftHold = [.ofAssociates].contains(state.type) + if [.ofInputting].contains(state.type) { + let cassetteShift = currentLM.areCassetteCandidateKeysShiftPressed + shaltShiftHold = shaltShiftHold || cassetteShift + } + let matched: String = shaltShiftHold ? input.inputTextIgnoringModifiers ?? "" : input.text checkSelectionKey: for keyPair in delegate.selectionKeys.enumerated() { guard matched.lowercased() == keyPair.element.lowercased() else { continue } index = Int(keyPair.offset) diff --git a/Source/Modules/InputHandler_TriageInput.swift b/Source/Modules/InputHandler_TriageInput.swift index c7a75484..5a594255 100644 --- a/Source/Modules/InputHandler_TriageInput.swift +++ b/Source/Modules/InputHandler_TriageInput.swift @@ -148,12 +148,14 @@ extension InputHandler { return handleHaninKeyboardSymbolModeToggle() } + // 處理 `%symboldef` 選字行為。 if handleCassetteSymbolTable(input: input) { return true } + // 處理 `%quick` 選字行為。 + var handleQuickCandidate = true + if currentLM.areCassetteCandidateKeysShiftPressed { handleQuickCandidate = input.isShiftHold } let hasQuickCandidates: Bool = state.type == .ofInputting && state.isCandidateContainer - - // 處理 `%quick` 選字行為(有摁住 Shift)。 - guard !(hasQuickCandidates && handleCandidate(input: input)) else { return true } + guard !(hasQuickCandidates && handleQuickCandidate && handleCandidate(input: input)) else { return true } // 注音按鍵輸入與漢音鍵盤符號輸入處理。 if isHaninKeyboardSymbolMode, [[], .shift].contains(input.modifierFlags) {