Repo // Optimizing IMKCandidates experiences with SCPC mode.

This commit is contained in:
ShikiSuen 2022-08-17 19:12:50 +08:00
parent ca98961e45
commit a5b061e2fc
2 changed files with 31 additions and 8 deletions

View File

@ -235,6 +235,25 @@ class ctlInputMethod: IMKInputController {
ctlCandidateCurrent.interpretKeyEvents([newEvent]) ctlCandidateCurrent.interpretKeyEvents([newEvent])
return true return true
} }
if let newChar = ctlCandidateIMK.defaultIMKSelectionKey[event.keyCode], input.isShiftHold,
isAssociatedPhrasesState
{
let newEvent = NSEvent.keyEvent(
with: event.type,
location: event.locationInWindow,
modifierFlags: [],
timestamp: event.timestamp,
windowNumber: event.windowNumber,
context: nil,
characters: newChar,
charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? event.characters ?? "",
isARepeat: event.isARepeat,
keyCode: event.keyCode
)
ctlCandidateCurrent.perform(Selector(("handleKeyboardEvent:")), with: newEvent)
}
ctlCandidateCurrent.interpretKeyEvents([event]) ctlCandidateCurrent.interpretKeyEvents([event])
return true return true
} }

View File

@ -11,7 +11,7 @@ import InputMethodKit
public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol { public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
public var currentLayout: CandidateLayout = .horizontal public var currentLayout: CandidateLayout = .horizontal
private let defaultIMKSelectionKey: [UInt16: String] = [ public static let defaultIMKSelectionKey: [UInt16: String] = [
18: "1", 19: "2", 20: "3", 21: "4", 23: "5", 22: "6", 26: "7", 28: "8", 25: "9", 18: "1", 19: "2", 20: "3", 21: "4", 23: "5", 22: "6", 26: "7", 28: "8", 25: "9",
] ]
public weak var delegate: ctlCandidateDelegate? { public weak var delegate: ctlCandidateDelegate? {
@ -241,7 +241,6 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
// //
// Objective-C nil // Objective-C nil
guard !eventArray.isEmpty else { return } guard !eventArray.isEmpty else { return }
var eventArray = eventArray
let event = eventArray[0] let event = eventArray[0]
let input = InputSignal(event: event) let input = InputSignal(event: event)
guard let delegate = delegate else { return } guard let delegate = delegate else { return }
@ -279,7 +278,7 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
} }
} }
} else { } else {
if let newChar = defaultIMKSelectionKey[event.keyCode] { if let newChar = ctlCandidateIMK.defaultIMKSelectionKey[event.keyCode] {
/// KeyCode NSEvent Character /// KeyCode NSEvent Character
/// IMK /// IMK
let newEvent = NSEvent.keyEvent( let newEvent = NSEvent.keyEvent(
@ -295,12 +294,17 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
keyCode: event.keyCode keyCode: event.keyCode
) )
if let newEvent = newEvent { if let newEvent = newEvent {
/// NSEvent if mgrPrefs.useSCPCTypingMode, delegate.isAssociatedPhrasesState {
eventArray = Array(eventArray.dropFirst(0)) // input.isShiftHold ctlInputMethod.handle()
eventArray.insert(newEvent, at: 0) if !input.isShiftHold {
_ = delegate.sharedEventHandler(event)
return
}
} else {
perform(Selector(("handleKeyboardEvent:")), with: newEvent)
return
}
} }
perform(Selector(("handleKeyboardEvent:")), with: newEvent)
return
} }
if mgrPrefs.useSCPCTypingMode { if mgrPrefs.useSCPCTypingMode {