ctlIME // Revised keyLayout conditioning.

This commit is contained in:
ShikiSuen 2022-03-26 11:47:00 +08:00
parent 052b014d12
commit 10b1d0c50b
1 changed files with 13 additions and 15 deletions

View File

@ -63,6 +63,11 @@ class ctlInputMethod: IMKInputController {
// MARK: - Keyboard Layout Specifier
func getKeyLayoutFlagsCondition(_ event: NSEvent!) -> Bool {
event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(NSEvent.ModifierFlags(rawValue: ~(NSEvent.ModifierFlags.shift.rawValue))) ||
(event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.shift) && mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey)
}
@objc func setKeyLayout(isfunctionKeyboardLayout: Bool = false) {
let client = client().self as IMKTextInput
client.overrideKeyboard(withKeyboardNamed: isfunctionKeyboardLayout ? mgrPrefs.functionKeyboardLayout : mgrPrefs.basisKeyboardLayout)
@ -197,22 +202,15 @@ class ctlInputMethod: IMKInputController {
override func handle(_ event: NSEvent!, client: Any!) -> Bool {
// flags使 KeyHandler
// flags
// event.type == .flagsChanged return false
// NSInternalInconsistencyException
if (mgrPrefs.functionKeyboardLayout != mgrPrefs.basisKeyboardLayout) && (event.type == .flagsChanged) {
if (event.modifierFlags == .capsLock ||
event.modifierFlags.contains(.command) ||
event.modifierFlags.contains(.option) ||
event.modifierFlags.contains(.control) ||
event.modifierFlags.contains(.function) ||
(event.modifierFlags.contains(.shift) && mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey)) {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.functionKeyboardLayout)
} else {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.basisKeyboardLayout)
if mgrPrefs.functionKeyboardLayout != mgrPrefs.basisKeyboardLayout {
// flags使 KeyHandler
// flags
// event.type == .flagsChanged return false
// NSInternalInconsistencyException
if event.type == .flagsChanged {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: getKeyLayoutFlagsCondition(event) ? mgrPrefs.functionKeyboardLayout : mgrPrefs.basisKeyboardLayout)
return false
}
return false
}
// Enter