forked from nhurden/MediaKeyTap
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathNSEventExtensions.swift
More file actions
43 lines (37 loc) · 1.08 KB
/
NSEventExtensions.swift
File metadata and controls
43 lines (37 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//
// NSEventExtensions.swift
// MediaKeyTap
//
// Created by Nicholas Hurden on 28/09/2016.
// Copyright © 2016 Nicholas Hurden. All rights reserved.
//
import AppKit
extension NSEvent {
var isKeyEvent: Bool {
subtype.rawValue == 8
}
var keycode: Keycode {
Keycode((data1 & 0xFFFF_0000) >> 16)
}
var keyEvent: KeyEvent {
let keyFlags = KeyFlags(data1 & 0x0000_FFFF)
let keyPressed = ((keyFlags & 0xFF00) >> 8) == 0xA
let keyRepeat = (keyFlags & 0x1) == 0x1
return KeyEvent(keycode: keycode, keyFlags: keyFlags, keyPressed: keyPressed, keyRepeat: keyRepeat)
}
var isMediaKeyEvent: Bool {
let mediaKeys = [
NX_KEYTYPE_PLAY,
NX_KEYTYPE_PREVIOUS,
NX_KEYTYPE_NEXT,
NX_KEYTYPE_FAST,
NX_KEYTYPE_REWIND,
NX_KEYTYPE_BRIGHTNESS_UP,
NX_KEYTYPE_BRIGHTNESS_DOWN,
NX_KEYTYPE_SOUND_UP,
NX_KEYTYPE_SOUND_DOWN,
NX_KEYTYPE_MUTE,
]
return isKeyEvent && mediaKeys.contains(keycode)
}
}