feat: configure a persistent global launcher shortcut
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import AppKit
|
||||
import ConjureKit
|
||||
import Testing
|
||||
|
||||
@Test
|
||||
func shortcutRequiresAnActivationModifierAndNormalizesEventFlags() {
|
||||
#expect(KeyboardShortcut(keyCode: 0, modifiers: []) == nil)
|
||||
#expect(KeyboardShortcut(keyCode: 0, modifiers: .shift) == nil)
|
||||
#expect(KeyboardShortcut(keyCode: 0, modifiers: [.shift, .function, .capsLock]) == nil)
|
||||
let activationModifiers: [NSEvent.ModifierFlags] = [.command, .option, .control]
|
||||
for modifier in activationModifiers {
|
||||
let shortcut = KeyboardShortcut(
|
||||
keyCode: 0, modifiers: [modifier, .shift, .capsLock, .function, .numericPad]
|
||||
)
|
||||
#expect(shortcut?.modifiers == [modifier, .shift])
|
||||
#expect(shortcut?.keyCode == 0)
|
||||
}
|
||||
#expect(KeyboardShortcut.commandSpace == KeyboardShortcut(keyCode: 49, modifiers: .command))
|
||||
}
|
||||
|
||||
@Test
|
||||
func shortcutRejectsModifierOnlyMediaAndUndefinedKeyCodes() {
|
||||
let rejected: [UInt16] = [52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 68, 70, 72, 73, 74, 77, 89, 108, 112, 127, .max]
|
||||
for code in rejected {
|
||||
#expect(KeyboardShortcut(keyCode: code, modifiers: .command) == nil)
|
||||
}
|
||||
let accepted: [UInt16] = [0, 10, 36, 49, 53, 64, 65, 67, 69, 71, 75, 76, 78, 88, 90, 95, 96, 102, 104, 107, 110, 126]
|
||||
for code in accepted {
|
||||
#expect(KeyboardShortcut(keyCode: code, modifiers: [.control, .option]) != nil)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user