ctlIME // Propagate application of setKeyLayout().

This commit is contained in:
ShikiSuen 2022-03-26 17:36:06 +08:00
parent 10b1d0c50b
commit cc2bee931b
1 changed files with 8 additions and 5 deletions

View File

@ -153,8 +153,8 @@ class ctlInputMethod: IMKInputController {
override func activateServer(_ client: Any!) { override func activateServer(_ client: Any!) {
UserDefaults.standard.synchronize() UserDefaults.standard.synchronize()
// Override the keyboard layout. Use US if not set. // Override the keyboard layout to the basic one.
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.basisKeyboardLayout) setKeyLayout(isfunctionKeyboardLayout: false)
// reset the state // reset the state
currentCandidateClient = nil currentCandidateClient = nil
@ -181,14 +181,17 @@ class ctlInputMethod: IMKInputController {
newInputMode = InputMode.imeModeNULL newInputMode = InputMode.imeModeNULL
} }
mgrLangModel.loadDataModel(newInputMode) mgrLangModel.loadDataModel(newInputMode)
// Remember to override the keyboard layout again -- treat this as an activate event.
setKeyLayout(isfunctionKeyboardLayout: false)
if keyHandler.inputMode != newInputMode { if keyHandler.inputMode != newInputMode {
UserDefaults.standard.synchronize() UserDefaults.standard.synchronize()
// Remember to override the keyboard layout again -- treat this as an activate event.
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.basisKeyboardLayout)
keyHandler.clear() keyHandler.clear()
keyHandler.inputMode = newInputMode keyHandler.inputMode = newInputMode
self.handle(state: .Empty(), client: client) self.handle(state: .Empty(), client: client)
} }
// //
ctlInputMethod.currentKeyHandler.inputMode = keyHandler.inputMode ctlInputMethod.currentKeyHandler.inputMode = keyHandler.inputMode
} }
@ -208,7 +211,7 @@ class ctlInputMethod: IMKInputController {
// event.type == .flagsChanged return false // event.type == .flagsChanged return false
// NSInternalInconsistencyException // NSInternalInconsistencyException
if event.type == .flagsChanged { if event.type == .flagsChanged {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: getKeyLayoutFlagsCondition(event) ? mgrPrefs.functionKeyboardLayout : mgrPrefs.basisKeyboardLayout) setKeyLayout(isfunctionKeyboardLayout: getKeyLayoutFlagsCondition(event))
return false return false
} }
} }