MediaKeyTap
MediaKeyTap
提供了一个用于访问您 Swift 应用程序中 Mac 的媒体键(播放/暂停、下一个和上一个)的 API。MediaKeyTap
只在它是最近激活的媒体应用时捕获按键事件,匹配现有应用程序的行为,例如使用 SPMediaKeyTap
的应用程序。
MediaKeyTap
通过将 SPMediaKeyTap
的静态白名单与在运行时使用 NSDistributedNotificationCenter
构建的白名单结合起来来构建其白名单。如果您使用此库创建一个新的应用程序,那么您不需要将您的包标识符添加到白名单中。
使用方法
创建一个 MediaKeyTap
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
⋮
var mediaKeyTap: MediaKeyTap?
func applicationDidFinishLaunching(aNotification: Notification) {
mediaKeyTap = MediaKeyTap(delegate: self)
mediaKeyTap?.start()
}
⋮
}
并实现 MediaKeyTapDelegate
的 1 个方法
func handle(mediaKey: MediaKey, event: KeyEvent) {
switch mediaKey {
case .playPause:
print("Play/pause pressed")
case .previous, .rewind:
print("Previous pressed")
case .next, .fastForward:
print("Next pressed")
}
}
您还可以访问 KeyEvent
来获取事件的下层的 keycode
、keyFlags
和 keyRepeat
值。
MediaKeyTap
初始化器允许指定按键行为
MediaKeyTap(delegate: self, on: .keyDown) // Default
MediaKeyTap(delegate: self, on: .keyUp)
MediaKeyTap(delegate: self, on: .keyDownAndUp)
要求
- 为了全局捕获按键事件,您无法将应用程序沙盒化,否则您将不会接收任何事件。
安装
CocoaPods
将pod 'MediaKeyTap'
添加到您的Podfile
中,并运行pod install
。
然后导入 MediaKeyTap
。
Carthage
将github "nhurden/MediaKeyTap"
添加到您的Cartfile
中,并运行carthage update
。