Swiftpack.co -  Package - Clipy/Magnet
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Clipy/Magnet
Customize global hotkeys in macOS.
.package(url: "https://github.com/Clipy/Magnet.git", from: "v3.2.0")

Magnet

CI Release version License: MIT Carthage compatible Version Platform SPM supported

Customize global hotkeys in macOS. Supports usual hotkey and double tap hotkey like Alfred.app.

Also supports sandbox application.

Usage

CocoaPods

pod 'Magnet'

Carthage

github "Clipy/Magnet"

Upgrading from Magnet v2.x to v3.x

See Upgrading from Magnet v2.x

Example

Register Normal hotkey

Add ⌘ + Control + B hotkey.

if let keyCombo = KeyCombo(key: .b, cocoaModifiers: [.command, .control]]) {
   let hotKey = HotKey(identifier: "CommandControlB", keyCombo: keyCombo, target: self, action: #selector())
   hotKey.register() // or HotKeyCenter.shared.register(with: hotKey)
}

Or you can use closures.

if let keyCombo = KeyCombo(key: .b, cocoaModifiers: [.command, .control]) {
    let hotKey = HotKey(identifier: "CommandControlB", keyCombo: keyCombo) { hotKey in
        // Called when ⌘ + Control + B is pressed
    }
    hotKey.register()
}        

Register Double tap hotkey

Add ⌘ double tap hotkey.

if let keyCombo = KeyCombo(doubledCocoaModifiers: .command) {
   let hotKey = HotKey(identifier: "CommandDoubleTap", keyCombo: keyCombo, target: self, action: #selector())
   hotKey.register() // or HotKeyCenter.shared.register(with: hotKey)
}

Add Control double tap hotkey.

if let keyCombo = KeyCombo(doubledCarbonModifiers: controlKey) {
   let hotKey = HotKey(identifier: "ControlDoubleTap", keyCombo: keyCombo, target: self, action: #selector())
   hotKey.register() // or HotKeyCenter.shared.register(with: hotKey)
}

Support modifiers

Double tap hotkey only support following modifiers.

  • Command Key
    • NSEventModifierFlags.command or cmdKey
  • Shift Key
    • NSEventModifierFlags.shift or shiftKey
  • Option Key
    • NSEventModifierFlags.option or optionKey
  • Control Key
    • NSEventModifierFlags.control or controlKey

Unregister hotkeys

HotKeyCenter.shared.unregisterAll()

or

HotKeyCenter.shared.unregisterHotKey(with: "identifier")

or

let hotKey = HotKey(identifier: "identifier", keyCombo: KeyCombo, target: self, action: #selector())
hotKey.unregister() // or HotKeyCenter.shared.unregister(with: hotKey)

Dependencies

How to Build

  1. Move to the project root directory
  2. Install dependency library with carthage or git submodule
  3. carthage checkout --use-submodules or git submodule update --init --recursive
  4. Open Magnet.xcworkspace on Xcode.
  5. build.

GitHub

link
Stars: 325
Last commit: 15 hours ago

Release Notes

v3.2.0
46 weeks ago

Breaking Changes

  • None.

v3.x Migration Guide

Enhancements

  • Update Sauce.framework v2.1.0. ( #57 )
  • Change the save to KeyCode or Key to support special keys. ( #59 )

Bugfixes

  • Change ModifierEventHandler access control. ( #55 )
  • Fix so that modifiers are not reflected in non-alphabetic keys. ( #58 )

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco