SpiceKey 3.5

SpiceKey 3.5

Takuto Nakamura 维护。



SpiceKey

Swift 编写的 macOS 全局快捷键。

安装

CocoaPods

pod 'SpiceKey'

Carthage

github "Kyome22/SpiceKey"

示例

示例应用程序包含在此项目中。

image

使用说明

  • 注册快捷键

设置 ⌘ + 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)
}