mgrPrefs // +alphanumericalKeyboardLayout.

This commit is contained in:
ShikiSuen 2022-09-12 17:56:15 +08:00
parent 9d04808c5a
commit 5a16d6d638
1 changed files with 11 additions and 15 deletions

View File

@ -19,6 +19,7 @@ public enum UserDef: String, CaseIterable {
case kCheckUpdateAutomatically = "CheckUpdateAutomatically" case kCheckUpdateAutomatically = "CheckUpdateAutomatically"
case kMandarinParser = "MandarinParser" case kMandarinParser = "MandarinParser"
case kBasicKeyboardLayout = "BasicKeyboardLayout" case kBasicKeyboardLayout = "BasicKeyboardLayout"
case kAlphanumericalKeyboardLayout = "AlphanumericalKeyboardLayout"
case kShowPageButtonsInCandidateWindow = "ShowPageButtonsInCandidateWindow" case kShowPageButtonsInCandidateWindow = "ShowPageButtonsInCandidateWindow"
case kCandidateListTextSize = "CandidateListTextSize" case kCandidateListTextSize = "CandidateListTextSize"
case kAppleLanguages = "AppleLanguages" case kAppleLanguages = "AppleLanguages"
@ -86,6 +87,7 @@ private let kMaxCandidateListTextSize: CGFloat = 196
private let kDefaultKeys = "123456789" private let kDefaultKeys = "123456789"
private let kDefaultBasicKeyboardLayout = "com.apple.keylayout.ZhuyinBopomofo" private let kDefaultBasicKeyboardLayout = "com.apple.keylayout.ZhuyinBopomofo"
private let kDefaultAlphanumericalKeyboardLayout = "com.apple.keylayout.ABC"
// MARK: - UserDefaults extension. // MARK: - UserDefaults extension.
@ -385,6 +387,11 @@ public enum mgrPrefs {
) )
static var basicKeyboardLayout: String static var basicKeyboardLayout: String
@UserDefault(
key: UserDef.kAlphanumericalKeyboardLayout.rawValue, defaultValue: kDefaultAlphanumericalKeyboardLayout
)
static var alphanumericalKeyboardLayout: String
@UserDefault(key: UserDef.kShowPageButtonsInCandidateWindow.rawValue, defaultValue: true) @UserDefault(key: UserDef.kShowPageButtonsInCandidateWindow.rawValue, defaultValue: true)
static var showPageButtonsInCandidateWindow: Bool static var showPageButtonsInCandidateWindow: Bool
@ -756,23 +763,12 @@ extension mgrPrefs {
mandarinParser = 0 mandarinParser = 0
} }
// //
var inputSourceTIS: TISInputSource? { if TISInputSource.generate(from: mgrPrefs.basicKeyboardLayout) == nil {
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 mgrPrefs.basicKeyboardLayout = kDefaultBasicKeyboardLayout
} }
if TISInputSource.generate(from: mgrPrefs.alphanumericalKeyboardLayout) == nil {
mgrPrefs.alphanumericalKeyboardLayout = kDefaultAlphanumericalKeyboardLayout
}
// //
if ![0, 1, 2].contains(specifyIntonationKeyBehavior) { if ![0, 1, 2].contains(specifyIntonationKeyBehavior) {
specifyIntonationKeyBehavior = 0 specifyIntonationKeyBehavior = 0