TISInputSourceExtension // Simplify rawTISInputSources().

This commit is contained in:
ShikiSuen 2023-07-21 00:02:24 +08:00
parent 1205ed7ed4
commit c42237bb2e
1 changed files with 5 additions and 14 deletions

View File

@ -123,21 +123,12 @@ public extension TISInputSource {
static func rawTISInputSources(onlyASCII: Bool = false) -> [String: TISInputSource] { static func rawTISInputSources(onlyASCII: Bool = false) -> [String: TISInputSource] {
// CFDictionary // CFDictionary
// //
let conditions = CFDictionaryCreateMutable(nil, 2, nil, nil) let dicConditions: [CFString: Any] = !onlyASCII ? [:] : [
if onlyASCII { kTISPropertyInputSourceType: kTISTypeKeyboardLayout as CFString,
// kTISPropertyInputSourceIsASCIICapable: kCFBooleanTrue as CFBoolean,
CFDictionaryAddValue( ]
conditions, unsafeBitCast(kTISPropertyInputSourceType, to: UnsafeRawPointer.self),
unsafeBitCast(kTISTypeKeyboardLayout, to: UnsafeRawPointer.self)
)
// ASCII
CFDictionaryAddValue(
conditions, unsafeBitCast(kTISPropertyInputSourceIsASCIICapable, to: UnsafeRawPointer.self),
unsafeBitCast(kCFBooleanTrue, to: UnsafeRawPointer.self)
)
}
// //
var result = TISCreateInputSourceList(conditions, true).takeRetainedValue() as? [TISInputSource] ?? .init() var result = TISCreateInputSourceList(dicConditions as CFDictionary, true).takeRetainedValue() as? [TISInputSource] ?? .init()
if onlyASCII { if onlyASCII {
result = result.filter { $0.scriptCode == 0 } result = result.filter { $0.scriptCode == 0 }
} }