IMKCandidates // Override correct keyLayout for IMKCandidate.

This commit is contained in:
ShikiSuen 2022-08-13 17:49:49 +08:00
parent eab6402e31
commit 4b0a0e516a
1 changed files with 23 additions and 0 deletions

View File

@ -70,6 +70,9 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
super.init(server: theServer, panelType: kIMKScrollingGridCandidatePanel)
specifyLayout(layout)
visible = false
// guard let currentTISInputSource = currentTISInputSource else { return } //
// setSelectionKeys([18, 19, 20, 21, 23, 22, 26, 28, 25]) //
// setSelectionKeysKeylayout(currentTISInputSource) //
}
@available(*, unavailable)
@ -237,3 +240,23 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
}
}
}
// MARK: - Generate TISInputSource Object
/// "com.apple.keylayout.ABC" TISInputSource
/// 西
/// IME.swift
var currentTISInputSource: TISInputSource? {
var result: TISInputSource?
let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource]
let matchedTISString = "com.apple.keylayout.ABC"
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
}