From 5a16d6d638dd8ffec83eafe1b7b7ac134a62c320 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Mon, 12 Sep 2022 17:56:15 +0800 Subject: [PATCH] mgrPrefs // +alphanumericalKeyboardLayout. --- Source/Modules/IMEModules/mgrPrefs.swift | 26 ++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Source/Modules/IMEModules/mgrPrefs.swift b/Source/Modules/IMEModules/mgrPrefs.swift index b311d12e..72afc32b 100644 --- a/Source/Modules/IMEModules/mgrPrefs.swift +++ b/Source/Modules/IMEModules/mgrPrefs.swift @@ -19,6 +19,7 @@ public enum UserDef: String, CaseIterable { case kCheckUpdateAutomatically = "CheckUpdateAutomatically" case kMandarinParser = "MandarinParser" case kBasicKeyboardLayout = "BasicKeyboardLayout" + case kAlphanumericalKeyboardLayout = "AlphanumericalKeyboardLayout" case kShowPageButtonsInCandidateWindow = "ShowPageButtonsInCandidateWindow" case kCandidateListTextSize = "CandidateListTextSize" case kAppleLanguages = "AppleLanguages" @@ -86,6 +87,7 @@ private let kMaxCandidateListTextSize: CGFloat = 196 private let kDefaultKeys = "123456789" private let kDefaultBasicKeyboardLayout = "com.apple.keylayout.ZhuyinBopomofo" +private let kDefaultAlphanumericalKeyboardLayout = "com.apple.keylayout.ABC" // MARK: - UserDefaults extension. @@ -385,6 +387,11 @@ public enum mgrPrefs { ) static var basicKeyboardLayout: String + @UserDefault( + key: UserDef.kAlphanumericalKeyboardLayout.rawValue, defaultValue: kDefaultAlphanumericalKeyboardLayout + ) + static var alphanumericalKeyboardLayout: String + @UserDefault(key: UserDef.kShowPageButtonsInCandidateWindow.rawValue, defaultValue: true) static var showPageButtonsInCandidateWindow: Bool @@ -756,23 +763,12 @@ extension mgrPrefs { mandarinParser = 0 } // 基礎鍵盤排列選項糾錯。 - var inputSourceTIS: TISInputSource? { - var result: TISInputSource? - let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource] - let matchedTISString = mgrPrefs.basicKeyboardLayout - for source in list { - guard let ptrCat = TISGetInputSourceProperty(source, kTISPropertyInputSourceCategory) else { continue } - let category = Unmanaged.fromOpaque(ptrCat).takeUnretainedValue() - guard category == kTISCategoryKeyboardInputSource else { continue } - guard let ptrSourceID = TISGetInputSourceProperty(source, kTISPropertyInputSourceID) else { continue } - let sourceID = String(Unmanaged.fromOpaque(ptrSourceID).takeUnretainedValue()) - if sourceID == matchedTISString { result = source } - } - return result - } - if inputSourceTIS == nil { + if TISInputSource.generate(from: mgrPrefs.basicKeyboardLayout) == nil { mgrPrefs.basicKeyboardLayout = kDefaultBasicKeyboardLayout } + if TISInputSource.generate(from: mgrPrefs.alphanumericalKeyboardLayout) == nil { + mgrPrefs.alphanumericalKeyboardLayout = kDefaultAlphanumericalKeyboardLayout + } // 其它多元選項參數自動糾錯。 if ![0, 1, 2].contains(specifyIntonationKeyBehavior) { specifyIntonationKeyBehavior = 0