Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Clipy/Magnet
Customize global hotkeys in macOS.
https://github.com/Clipy/Magnet
alfred clipy dvorak hotkey macos qwerty sandbox shortcut swift
Last synced: 12 days ago
JSON representation
Customize global hotkeys in macOS.
- Host: GitHub
- URL: https://github.com/Clipy/Magnet
- Owner: Clipy
- License: mit
- Created: 2016-03-08T15:07:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-08-22T20:40:29.000Z (3 months ago)
- Last Synced: 2024-10-01T04:57:46.986Z (about 1 month ago)
- Topics: alfred, clipy, dvorak, hotkey, macos, qwerty, sandbox, shortcut, swift
- Language: Swift
- Homepage: https://clipy-app.com
- Size: 184 KB
- Stars: 424
- Watchers: 10
- Forks: 44
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Magnet
![CI](https://github.com/Clipy/Magnet/workflows/Xcode-Build/badge.svg)
[![Release version](https://img.shields.io/github/release/Clipy/Magnet.svg)](https://github.com/Clipy/Magnet/releases/latest)
[![License: MIT](https://img.shields.io/github/license/Clipy/Magnet.svg)](https://github.com/Clipy/Magnet/blob/master/LICENSE)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Version](https://img.shields.io/cocoapods/v/Magnet.svg)](http://cocoadocs.org/docsets/Magnet)
[![Platform](https://img.shields.io/cocoapods/p/Magnet.svg)](http://cocoadocs.org/docsets/Magnet)
[![SPM supported](https://img.shields.io/badge/SPM-supported-DE5C43.svg?style=flat)](https://swift.org/package-manager)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](/Documentation/Upgrading_Magnet_2.md)## Example
### Register Normal hotkey
Add `⌘ + Control + B` hotkey.```swift
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.
```swift
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.
```swift
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.
```swift
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
```swift
HotKeyCenter.shared.unregisterAll()
```or
```swift
HotKeyCenter.shared.unregisterHotKey(with: "identifier")
```or
```swift
let hotKey = HotKey(identifier: "identifier", keyCombo: KeyCombo, target: self, action: #selector())
hotKey.unregister() // or HotKeyCenter.shared.unregister(with: hotKey)
```## Dependencies
- [Sauce](https://github.com/Clipy/Sauce)## 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.