Need help with HotKey?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

soffes
640 Stars 54 Forks MIT License 47 Commits 21 Opened issues

Description

Simple global shortcuts in macOS

Services available

!
?

Need anything else?

Contributors list

# 6,160
Objecti...
watchos
carthag...
swift-3
45 commits
# 321,142
Objecti...
carthag...
osx
appkit
1 commit

HotKey

Version Build Status Swift Version Carthage compatible CocoaPods compatible

Simple global shortcuts in macOS. HotKey wraps the Carbon APIs for dealing with global hot keys to make it easy to use in Swift.

HotKey, along with Color, were created for use in Contrast, a macOS app for checking designs for accessible color combinations.

Installation

Carthage

For installation with Carthage, simply add the following to your

Cartfile
:
github "soffes/HotKey"

Swift Package Manager

For installation with Swift Package Manager, simply add the following to your

Package.swift
:
.package(url: "https://github.com/soffes/HotKey", from: "0.1.2")

CocoaPods

For installation with CocoaPods, simply add the following to your

Podfile
:
pod 'HotKey'

Usage

Simply initialize a

HotKey
with a key and modifiers:
// Setup hot key for ⌥⌘R
let hotKey = HotKey(key: .r, modifiers: [.command, .option])

This is a convenice initializer that creates a

KeyCombo
for you. You can also initialize with a Carbon key code and Carbon modifier flags if you’re feeling old school.

Now you can set the

keyDownHandler
and get callbacks for when your hot key is pressed:
hotKey.keyDownHandler = {
  print("Pressed at \(Date())")
}

You can also implement

hotKey.keyUpHandler
if you’d like.

You don’t need to think about when handlers are registered and unregistered. This all happens automatically based on the

HotKey
object’s lifecycle.

Thanks

HotKey was heavily inspired by PTHotKey.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.