mgrPrefs // Fix odd preference data passed by defaults.write.

This commit is contained in:
ShikiSuen 2022-08-23 21:57:07 +08:00
parent 1029fdf6dc
commit 12df688f48
1 changed files with 51 additions and 1 deletions

View File

@ -80,6 +80,8 @@ private let kMaxCandidateListTextSize: CGFloat = 196
private let kDefaultKeys = "123456789" private let kDefaultKeys = "123456789"
private let kDefaultBasicKeyboardLayout = "com.apple.keylayout.ZhuyinBopomofo"
// MARK: - UserDefaults extension. // MARK: - UserDefaults extension.
extension UserDefaults { extension UserDefaults {
@ -362,7 +364,7 @@ public enum mgrPrefs {
} }
@UserDefault( @UserDefault(
key: UserDef.kBasicKeyboardLayout.rawValue, defaultValue: "com.apple.keylayout.ZhuyinBopomofo" key: UserDef.kBasicKeyboardLayout.rawValue, defaultValue: kDefaultBasicKeyboardLayout
) )
static var basicKeyboardLayout: String static var basicKeyboardLayout: String
@ -709,6 +711,54 @@ extension mgrPrefs {
mgrPrefs.disableShiftTogglingAlphanumericalMode = false mgrPrefs.disableShiftTogglingAlphanumericalMode = false
mgrPrefs.togglingAlphanumericalModeWithLShift = false mgrPrefs.togglingAlphanumericalModeWithLShift = false
} }
//
var filteredAppleLanguages = Set<String>()
appleLanguages.forEach {
if IME.arrSupportedLocales.contains($0) {
filteredAppleLanguages.insert($0)
}
}
if !filteredAppleLanguages.isEmpty {
appleLanguages = Array(filteredAppleLanguages)
} else {
UserDefaults.standard.removeObject(forKey: UserDef.kAppleLanguages.rawValue)
}
//
var isMandarinParserOptionValid = false
MandarinParser.allCases.forEach {
if $0.rawValue == mandarinParser { isMandarinParserOptionValid = true }
}
if !isMandarinParserOptionValid {
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<CFString>.fromOpaque(ptrCat).takeUnretainedValue()
guard category == kTISCategoryKeyboardInputSource else { continue }
guard let ptrSourceID = TISGetInputSourceProperty(source, kTISPropertyInputSourceID) else { continue }
let sourceID = String(Unmanaged<CFString>.fromOpaque(ptrSourceID).takeUnretainedValue())
if sourceID == matchedTISString { result = source }
}
return result
}
if inputSourceTIS == nil {
mgrPrefs.basicKeyboardLayout = kDefaultBasicKeyboardLayout
}
//
if ![0, 1, 2].contains(specifyIntonationKeyBehavior) {
specifyIntonationKeyBehavior = 0
}
if ![0, 1, 2].contains(specifyShiftBackSpaceKeyBehavior) {
specifyShiftBackSpaceKeyBehavior = 0
}
if ![0, 1, 2].contains(upperCaseLetterKeyBehavior) {
upperCaseLetterKeyBehavior = 0
}
} }
} }