InputHandler // Still use Shift key under certain candidate context.

This commit is contained in:
ShikiSuen 2023-06-20 19:17:57 +08:00
parent 78ce8aef1d
commit d98e17afaa
2 changed files with 23 additions and 14 deletions

View File

@ -8,6 +8,7 @@
/// InputHandler.HandleInput()
import AppKit
import Shared
import Tekkon
@ -16,10 +17,31 @@ extension InputHandler {
/// - Parameter input:
/// - Returns: IMK
func handleComposition(input: InputSignalProtocol) -> Bool? {
guard let delegate = delegate else { return nil }
//
guard !input.text.isEmpty, input.charCode.isPrintable else { return nil }
if isCodePointInputMode { return handleCodePointComposition(input: input) }
if prefs.cassetteEnabled { return handleCassetteComposition(input: input) }
if prefs.cassetteEnabled {
// `%quick`
var handleQuickCandidate = true
if currentLM.areCassetteCandidateKeysShiftPressed { handleQuickCandidate = input.isShiftHold }
let hasQuickCandidates: Bool = delegate.state.type == .ofInputting && delegate.state.isCandidateContainer
// `%symboldef`
if handleCassetteSymbolTable(input: input) {
return true
} else if hasQuickCandidates, input.text != currentLM.cassetteWildcardKey,
let itim = input.inputTextIgnoringModifiers,
let newEv = (input as? NSEvent)?.reinitiate(characters: itim)
{
// `%quick` `%symboldef`
guard !(handleQuickCandidate && handleCandidate(input: newEv)) else { return true }
} else {
// `%quick`
guard !(hasQuickCandidates && handleQuickCandidate && handleCandidate(input: input)) else { return true }
}
return handleCassetteComposition(input: input)
}
return handlePhonabetComposition(input: input)
}

View File

@ -138,8 +138,6 @@ extension InputHandler {
return true
}
// -----
//
haninSymbolInput: if prefs.classicHaninKeyboardSymbolModeShortcutEnabled {
guard let x = input.inputTextIgnoringModifiers,
@ -148,15 +146,6 @@ 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
guard !(hasQuickCandidates && handleQuickCandidate && handleCandidate(input: input)) else { return true }
//
if isHaninKeyboardSymbolMode, [[], .shift].contains(input.modifierFlags) {
return handleHaninKeyboardSymbolModeInput(input: input)
@ -164,8 +153,6 @@ extension InputHandler {
return compositionHandled
}
// -----
//
if callCandidateState(input: input) { return true }