mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
51 lines
1.4 KiB
Swift
51 lines
1.4 KiB
Swift
import AppKit
|
|
import Carbon
|
|
|
|
public final class HotKey {
|
|
|
|
// MARK: - Types
|
|
|
|
public typealias Handler = () -> Void
|
|
|
|
// MARK: - Properties
|
|
|
|
let identifier = UUID()
|
|
|
|
public let keyCombo: KeyCombo
|
|
public var keyDownHandler: Handler?
|
|
public var keyUpHandler: Handler?
|
|
public var isPaused = false {
|
|
didSet {
|
|
if isPaused {
|
|
HotKeysController.unregister(self)
|
|
} else {
|
|
HotKeysController.register(self)
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - Initializers
|
|
|
|
public init(keyCombo: KeyCombo, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) {
|
|
self.keyCombo = keyCombo
|
|
self.keyDownHandler = keyDownHandler
|
|
self.keyUpHandler = keyUpHandler
|
|
|
|
HotKeysController.register(self)
|
|
}
|
|
|
|
public convenience init(carbonKeyCode: UInt32, carbonModifiers: UInt32, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) {
|
|
let keyCombo = KeyCombo(carbonKeyCode: carbonKeyCode, carbonModifiers: carbonModifiers)
|
|
self.init(keyCombo: keyCombo, keyDownHandler: keyDownHandler, keyUpHandler: keyUpHandler)
|
|
}
|
|
|
|
public convenience init(key: Key, modifiers: NSEvent.ModifierFlags, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) {
|
|
let keyCombo = KeyCombo(key: key, modifiers: modifiers)
|
|
self.init(keyCombo: keyCombo, keyDownHandler: keyDownHandler, keyUpHandler: keyUpHandler)
|
|
}
|
|
|
|
deinit {
|
|
HotKeysController.unregister(self)
|
|
}
|
|
}
|