1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 03:50:08 +02:00
Files
app/phpmon/Vendor/HotKey/HotKey.swift
2022-03-18 18:21:55 +01:00

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)
}
}