feat: add configurable global keyboard shortcut

This commit is contained in:
Carsten Abele 2026-04-07 19:40:19 +02:00
parent d6a6d24054
commit 69f2bbe52e

View file

@ -0,0 +1,31 @@
import Cocoa
final class GlobalShortcut {
private var monitor: Any?
var onTrigger: (() -> Void)?
func register(keyCode: UInt16, modifiers: UInt) {
unregister()
guard keyCode != 0 || modifiers != 0 else { return }
let requiredFlags = NSEvent.ModifierFlags(rawValue: modifiers)
monitor = NSEvent.addGlobalMonitorForEvents(matching: .keyDown) { [weak self] event in
let mask: NSEvent.ModifierFlags = [.command, .option, .control, .shift]
if event.keyCode == keyCode && event.modifierFlags.intersection(mask) == requiredFlags {
self?.onTrigger?()
}
}
}
func unregister() {
if let monitor {
NSEvent.removeMonitor(monitor)
}
monitor = nil
}
deinit {
unregister()
}
}