From d1954a7d49d010929f0444d4127dfe130a890a8e Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 13 Oct 2018 17:58:24 +0200 Subject: Test code to press the "play" media key Based on code from Albert https://stackoverflow.com/users/133374/albert and Nick Sweeting https://stackoverflow.com/users/2156113/nick-sweeting on Stack Overflow: - https://stackoverflow.com/questions/11045814/emulate-media-key-press-on-mac/11048135#11048135 - https://stackoverflow.com/questions/10459085/cocoa-simulate-macbook-upper-keys-multimedia-keys/50574159#50574159 Proof of concept code that simulates a key press of the "play" media key. Worked basically on the first try here, after the Rust version of the code giving me so much segfault hell. Going to adapt this to a generic function that I can pass as a pointer to the Rust code to call to send a media key event. --- DomeKey/main.m | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/DomeKey/main.m b/DomeKey/main.m index f3c1eef..c77379b 100644 --- a/DomeKey/main.m +++ b/DomeKey/main.m @@ -26,6 +26,31 @@ int main(int argc, const char * argv[]) { // insert code here... NSLog(@"Hello, World!"); + NSEvent *event1 = [NSEvent otherEventWithType:NSSystemDefined + location:NSZeroPoint + modifierFlags:0xa00 + timestamp:0.0 + windowNumber:0 + context:nil + subtype:NSScreenChangedEventType + data1:(NX_KEYTYPE_PLAY << 16) | (0xa << 8) + data2:-1]; + CGEventRef cg_event1 = [event1 CGEvent]; + CGEventPost(kCGHIDEventTap, cg_event1); + CFRelease(cg_event1); + NSEvent *event2 = [NSEvent otherEventWithType:NSSystemDefined + location:NSZeroPoint + modifierFlags:0xb00 + timestamp:0.0 + windowNumber:0 + context:nil + subtype:NSScreenChangedEventType + data1:(NX_KEYTYPE_PLAY << 16) | (0xb << 8) + data2:-1]; + CGEventRef cg_event2 = [event2 CGEvent]; + CGEventPost(kCGHIDEventTap, cg_event2); + CFRelease(cg_event2); + [Mappings observeReloadNotification]; [NSApp run]; -- cgit v1.2.3