From c42237bb2e3aaa41d218543fd0af1a82316f3221 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 21 Jul 2023 00:02:24 +0800 Subject: [PATCH] TISInputSourceExtension // Simplify rawTISInputSources(). --- .../IMKUtils/TISInputSourceExtension.swift | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/Packages/vChewing_IMKUtils/Sources/IMKUtils/TISInputSourceExtension.swift b/Packages/vChewing_IMKUtils/Sources/IMKUtils/TISInputSourceExtension.swift index 2b867abb..a291076d 100644 --- a/Packages/vChewing_IMKUtils/Sources/IMKUtils/TISInputSourceExtension.swift +++ b/Packages/vChewing_IMKUtils/Sources/IMKUtils/TISInputSourceExtension.swift @@ -123,21 +123,12 @@ public extension TISInputSource { static func rawTISInputSources(onlyASCII: Bool = false) -> [String: TISInputSource] { // 為了指定檢索條件,先構築 CFDictionary 辭典。 // 第二項代指辭典容量。 - let conditions = CFDictionaryCreateMutable(nil, 2, nil, nil) - if onlyASCII { - // 第一條件:僅接收靜態鍵盤佈局結果。 - 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) - ) - } + let dicConditions: [CFString: Any] = !onlyASCII ? [:] : [ + kTISPropertyInputSourceType: kTISTypeKeyboardLayout as CFString, + kTISPropertyInputSourceIsASCIICapable: kCFBooleanTrue as CFBoolean, + ] // 返回鍵盤配列清單。 - var result = TISCreateInputSourceList(conditions, true).takeRetainedValue() as? [TISInputSource] ?? .init() + var result = TISCreateInputSourceList(dicConditions as CFDictionary, true).takeRetainedValue() as? [TISInputSource] ?? .init() if onlyASCII { result = result.filter { $0.scriptCode == 0 } }