SessionCtl // Again stop handling nulled NSEvents.
This commit is contained in:
parent
43774247c1
commit
4947f49043
|
@ -21,9 +21,16 @@ public extension SessionCtl {
|
|||
/// - event: 裝置操作輸入事件,可能會是 nil。
|
||||
/// - sender: 呼叫了該函式的客體(無須使用)。
|
||||
/// - Returns: 回「`true`」以將該按鍵已攔截處理的訊息傳遞給 IMK;回「`false`」則放行、不作處理。
|
||||
@objc(handleEvent:client:) override func handle(_ event: NSEvent!, client sender: Any!) -> Bool {
|
||||
@objc(handleEvent:client:) override func handle(_ event: NSEvent?, client sender: Any?) -> Bool {
|
||||
_ = sender // 防止格式整理工具毀掉與此對應的參數。
|
||||
|
||||
// 就這傳入的 NSEvent 都還有可能是 nil,Apple InputMethodKit 團隊到底在搞三小。
|
||||
// 只針對特定類型的 client() 進行處理。
|
||||
guard let event = event, sender is IMKTextInput else {
|
||||
resetInputHandler(forceComposerCleanup: true)
|
||||
return false
|
||||
}
|
||||
|
||||
// MARK: 前置處理
|
||||
|
||||
// 雖然在 recognizedEvents 當中有過定義,但這裡還是再多施加一道保險。
|
||||
|
@ -35,13 +42,6 @@ public extension SessionCtl {
|
|||
return handle(event, client: client)
|
||||
}
|
||||
|
||||
// 就這傳入的 NSEvent 都還有可能是 nil,Apple InputMethodKit 團隊到底在搞三小。
|
||||
// 只針對特定類型的 client() 進行處理。
|
||||
guard let event = event, sender is IMKTextInput else {
|
||||
resetInputHandler(forceComposerCleanup: true)
|
||||
return false
|
||||
}
|
||||
|
||||
// Caps Lock 通知與切換處理,要求至少 macOS 12 Monterey。
|
||||
if #available(macOS 12, *) {
|
||||
if event.type == .flagsChanged, event.keyCode == KeyCode.kCapsLock.rawValue {
|
||||
|
|
Loading…
Reference in New Issue