IMKCandidate // Translate key events to correct ones.

This commit is contained in:
ShikiSuen 2022-08-13 23:32:11 +08:00
parent 129ac56797
commit c217ec97b3
1 changed files with 23 additions and 1 deletions

View File

@ -11,7 +11,9 @@ import InputMethodKit
public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
public var currentLayout: CandidateLayout = .horizontal
private let defaultIMKSelectionKey: [UInt16: String] = [
18: "1", 19: "2", 20: "3", 21: "4", 23: "5", 22: "6", 26: "7", 28: "8", 25: "9",
]
public weak var delegate: ctlCandidateDelegate? {
didSet {
reloadData()
@ -239,6 +241,8 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
}
override public func interpretKeyEvents(_ eventArray: [NSEvent]) {
//
// Objective-C nil
guard !eventArray.isEmpty else { return }
let event = eventArray[0]
let input = InputSignal(event: event)
@ -276,6 +280,24 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
moveDown(self)
}
}
} else if let newChar = defaultIMKSelectionKey[event.keyCode] {
/// KeyCode NSEvent Character
let newEvent = NSEvent.keyEvent(
with: event.type,
location: event.locationInWindow,
modifierFlags: event.modifierFlags,
timestamp: event.timestamp,
windowNumber: event.windowNumber,
context: nil,
characters: newChar,
charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? event.characters ?? "",
isARepeat: event.isARepeat,
keyCode: event.keyCode
)
if let newEvent = newEvent {
/// NSEvent
super.interpretKeyEvents([newEvent])
}
} else {
super.interpretKeyEvents(eventArray)
}