Added settings window.

This commit is contained in:
2025-01-03 16:05:03 -08:00
parent d6e097506a
commit 83bb184fe3
13 changed files with 1162 additions and 129 deletions
+42
View File
@@ -0,0 +1,42 @@
import AppKit
import Carbon
import OSLog
protocol KeyDetectorButtonDelegate: AnyObject {
func keyWasSet(to keyCode: Int)
}
final class KeyDetectorButton: NSButton {
var defaultKey: Int?
weak var delegate: KeyDetectorButtonDelegate?
override var acceptsFirstResponder: Bool { true }
// This removes default bahavior from NSButton, thus allowing mouse up
// events.
override func mouseDown(with event: NSEvent) {}
override func mouseUp(with event: NSEvent) {
self.window?.makeFirstResponder(self)
}
override func keyDown(with event: NSEvent) {
if event.keyCode == kVK_Escape || event.keyCode == kVK_Return {
} else if event.keyCode == kVK_Delete {
if let key = defaultKey,
let character = keyName(virtualKeyCode: UInt16(key))
{
title = character
}
} else {
if let character =
keyName(virtualKeyCode: UInt16(event.keyCode))
{
title = character
}
delegate?.keyWasSet(to: Int(event.keyCode))
}
self.window?.makeFirstResponder(nil)
}
}