File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ public final class MachPortEventController: MachPortEventPublisher {
1616 private var machPort : CFMachPort ?
1717 private var runLoopSource : CFRunLoopSource ?
1818 private var lhs : Bool = true
19+ private var currentMode : CFRunLoopMode = . commonModes
1920
2021 private let eventSourceId : CGEventSourceStateID
2122 private let signature : Int64
@@ -49,6 +50,7 @@ public final class MachPortEventController: MachPortEventPublisher {
4950 let machPort = try createMachPort ( )
5051 self . eventSource = try CGEventSource . create ( eventSourceId)
5152 self . machPort = machPort
53+ self . currentMode = mode
5254 self . runLoopSource = try CFRunLoopSource . create ( with: machPort)
5355
5456 CFRunLoopAddSource ( runLoop, runLoopSource, mode)
@@ -92,6 +94,10 @@ public final class MachPortEventController: MachPortEventPublisher {
9294
9395 private func callback( _ proxy: CGEventTapProxy , _ type: CGEventType ,
9496 _ cgEvent: CGEvent ) -> Unmanaged < CGEvent > ? {
97+ if type == . tapDisabledByTimeout || type == . tapDisabledByUserInput {
98+ try ? reload ( mode: currentMode)
99+ }
100+
95101 let result : Unmanaged < CGEvent > ? = Unmanaged . passUnretained ( cgEvent)
96102 if cgEvent. getIntegerValueField ( . eventSourceUserData) == signature {
97103 return result
You can’t perform that action at this time.
0 commit comments