SpiceKey
Swift 编写的 macOS 全局快捷键。
安装
CocoaPods
pod 'SpiceKey'
Carthage
github "Kyome22/SpiceKey"
示例
示例应用程序包含在此项目中。
使用说明
- 注册快捷键
设置 ⌘ + A
快捷键。
let key = Key.a
let modifierFlags = ModifierFlags.cmd
let keyCombo = KeyCombination(key, modifierFlags)
let spiceKey = SpiceKey(keyCombo, keyDownHandler: {
// process (key down)
}) {
// process (key up)
}
spiceKey.register()
设置 长按 ⌘
快捷键。
// run after 1 sec
let longPressSpiceKey = SpiceKey(ModifierFlags.cmd, 1.0, modifierKeysLongPressHandler: {
// process
})
longPressSpiceKey?.register()
设置按住两侧的 ⌘
快捷键。
let bothSideSpiceKey = SpiceKey(ModifierFlag.command, bothModifierKeysPressHandler: {
// process
})
bothSideSpiceKey?.register()
- 从NSEvent中创建一个键和修饰符标志。
func example(event: NSEvent) {
let key = Key(keyCode: event.keyCode)
let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
let modifierFlags = ModifierFlags(flags: flags)
}
- 获取快捷键的描述。
let description = modifierFlags.string + key.string
// or
let description = keyCombination.string
- 取消注册快捷键。
spiceKey.unregister()
- 保存快捷键。
let spiceKeyData = SpiceKeyData(_ primaryKey: String,
_ keyCode: CGKeyCode, // Key.keyCode
_ control: Bool, // ModifierFlags.containsControl
_ option: Bool, // ModifierFlags.containsOption
_ shift: Bool, // ModifierFlags.containsShift
_ command: Bool, // ModifierFlags.containsCommand
_ spiceKey: SpiceKey)
// OR
// ler spiceKeyData = SpiceKeyData(_ primaryKey: String,
// _ keyCode: CGKeyCode,
// _ modifierFlags: ModifierFlags,
// _ spiceKey: SpiceKey)
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: spiceKeyData,
requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: "spiceKeyData")
} catch {
Swift.print(error)
}
- 加载快捷键。
guard let data = userDefaults.data(forKey: "spiceKeyData") else {
return
}
do {
let spiceKeyData = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! SpiceKeyData
} catch {
Swift.print(error)
}