Filesystem monitor and refactor.

This commit is contained in:
2025-02-06 17:03:16 -08:00
parent 6557993214
commit 5ed67e0cef
15 changed files with 777 additions and 481 deletions
+14 -32
View File
@@ -2,26 +2,16 @@ import Carbon
import OSLog
final class HotKeyManager {
fileprivate static let logger = Logger(
subsystem: Bundle.main.bundleIdentifier!,
//category: String(describing: HotKeyManager.self)
category: String(describing: AppDelegate.self)
)
static let shared = HotKeyManager()
private var eventType = EventTypeSpec(
eventClass: OSType(kEventClassKeyboard),
eventKind: UInt32(kEventHotKeyPressed))
private var eventType = EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyPressed))
private var eventHandlerRef: EventHandlerRef?
public var handler: EventHandlerUPP?
private var hotKeyRef: EventHotKeyRef?
private let hotKeyID: EventHotKeyID = EventHotKeyID(
signature: OSType("grap".fourCharCodeValue), id: 1)
private let hotKeyID: EventHotKeyID = EventHotKeyID(signature: OSType("grap".fourCharCodeValue), id: 1)
private init() {}
deinit {}
// TODO: Handle errors.
@@ -30,13 +20,11 @@ final class HotKeyManager {
disable()
}
let err = InstallEventHandler(
GetApplicationEventTarget(), handler, 1, &eventType,
nil, &eventHandlerRef)
let err = InstallEventHandler(GetApplicationEventTarget(), handler, 1, &eventType, nil, &eventHandlerRef)
if err == noErr {
Self.logger.debug("Installed event handler.")
print("Installed event handler.")
} else {
Self.logger.error("Failed to install event handler.")
print("Failed to install event handler.")
}
}
@@ -44,30 +32,25 @@ final class HotKeyManager {
guard eventHandlerRef != nil else { return }
let err = RemoveEventHandler(eventHandlerRef)
if err == noErr {
eventHandlerRef = nil // WARNING: Does it remove no matter
// what on error?
Self.logger.debug("Removed event handler.")
eventHandlerRef = nil // WARNING: Does it remove no matter what on error?
print("Removed event handler.")
} else {
Self.logger.error("Failed to remove event handler.")
print("Failed to remove event handler.")
}
}
// TODO: Handle errors.
// NOTE: Multiple modifiers should be ORed.
public func registerHotKey(key: Int, modifiers: Int) {
// GetEventDispatcherTarget
if hotKeyRef != nil {
unregisterHotKey()
}
let err = RegisterEventHotKey(
UInt32(key), UInt32(modifiers), hotKeyID,
GetApplicationEventTarget(), UInt32(kEventHotKeyNoOptions),
&hotKeyRef)
let err = RegisterEventHotKey(UInt32(key), UInt32(modifiers), hotKeyID, GetApplicationEventTarget(), UInt32(kEventHotKeyNoOptions), &hotKeyRef)
if err == noErr {
Self.logger.debug("Registered hot key.")
print("Registered hot key.")
} else {
Self.logger.error("Failed to register hot key.")
print("Failed to register hot key.")
}
}
@@ -76,11 +59,10 @@ final class HotKeyManager {
guard hotKeyRef != nil else { return }
let err = UnregisterEventHotKey(hotKeyRef)
if err == noErr {
hotKeyRef = nil // WARNING: Does it unregister no matter
// what on error?
Self.logger.debug("Successfully unregestered hot key.")
hotKeyRef = nil // WARNING: Does it unregister no matter what on error?
print("Successfully unregistered hot key.")
} else {
Self.logger.error("Failed to unregester hot key.")
print("Failed to unregistered hot key.")
}
}
}