KeyHandler // Allow overriding previous key intonation if valid.

This commit is contained in:
ShikiSuen 2022-08-23 13:00:14 +08:00
parent 79b3651ad4
commit 655e4d58f5
1 changed files with 26 additions and 0 deletions

View File

@ -33,6 +33,32 @@ extension KeyHandler {
// keyConsumedByReading // keyConsumedByReading
// composer.receiveKey() String UniChar // composer.receiveKey() String UniChar
if !skipPhoneticHandling && composer.inputValidityCheck(key: input.charCode) { if !skipPhoneticHandling && composer.inputValidityCheck(key: input.charCode) {
// macOS 調
//
proc: if [0, 1].contains(mgrPrefs.specifyIntonationKeyBehavior), composer.isEmpty, !input.isSpace {
// prevReading 調調
guard let prevReading = previousParsableReading, isIntonationKey(input) else { break proc }
var theComposer = composer
prevReading.0.charComponents.forEach { theComposer.receiveKey(fromPhonabet: $0) }
// 調調
let oldIntonation: Tekkon.Phonabet = theComposer.intonation
theComposer.receiveKey(fromCharCode: input.charCode)
if theComposer.intonation == oldIntonation, mgrPrefs.specifyIntonationKeyBehavior == 1 { break proc }
theComposer.intonation.clear()
//
let temporaryReadingKey = theComposer.getComposition()
if currentLM.hasUnigramsFor(key: theComposer.getComposition()) {
compositor.dropKey(direction: .rear)
walk() // Walk walk
composer = theComposer
// buildInputtingState調 buildInputtingState
} else {
IME.prtDebugIntel("4B0DD2D4語彙庫內無「\(temporaryReadingKey)」的匹配記錄,放棄覆寫游標身後的內容。")
errorCallback()
return true
}
}
composer.receiveKey(fromCharCode: input.charCode) composer.receiveKey(fromCharCode: input.charCode)
keyConsumedByReading = true keyConsumedByReading = true