1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // Created by Tobias Hieta on 21/08/15.
- //
- @interface MediaKeysDelegate : NSObject
- {
- SPMediaKeyTap* keyTap;
- InputAppleMediaKeys* input;
- }
- -(instancetype)initWithInput:(InputAppleMediaKeys*)input;
- @end
- @implementation MediaKeysDelegate
- - (instancetype)initWithInput:(InputAppleMediaKeys*)input_
- {
- self = [super init];
- if (self) {
- input = input_;
- keyTap = [[SPMediaKeyTap alloc] initWithDelegate:self];
- if ([SPMediaKeyTap usesGlobalMediaKeyTap])
- [keyTap startWatchingMediaKeys];
- else
- QLOG_WARN() << "Could not grab global media keys";
- }
- return self;
- }
- - (void)dealloc
- {
- [super dealloc];
- }
- -(void)mediaKeyTap:(SPMediaKeyTap *)keyTap receivedMediaKeyEvent:(NSEvent *)event
- {
- int keyCode = (([event data1] & 0xFFFF0000) >> 16);
- int keyFlags = ([event data1] & 0x0000FFFF);
- BOOL keyIsPressed = (((keyFlags & 0xFF00) >> 8)) == 0xA;
- QString keyPressed;
- switch (keyCode) {
- case NX_KEYTYPE_PLAY:
- keyPressed = INPUT_KEY_PLAY;
- break;
- case NX_KEYTYPE_FAST:
- keyPressed = "KEY_FAST";
- break;
- case NX_KEYTYPE_REWIND:
- keyPressed = "KEY_REWIND";
- break;
- case NX_KEYTYPE_NEXT:
- keyPressed = INPUT_KEY_NEXT;
- break;
- case NX_KEYTYPE_PREVIOUS:
- keyPressed = INPUT_KEY_PREV;
- break;
- default:
- break;
- // More cases defined in hidsystem/ev_keymap.h
- }
- emit input->receivedInput("AppleMediaKeys", keyPressed, keyIsPressed ? InputBase::KeyDown : InputBase::KeyUp);
- }
- @end
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- bool InputAppleMediaKeys::initInput()
- {
- m_delegate = [[MediaKeysDelegate alloc] initWithInput:this];
- return true;
- }
|