mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-13 10:18:37 +00:00
67 lines
1.8 KiB
Objective-C
67 lines
1.8 KiB
Objective-C
//
|
|
// TouchBarSupport.m
|
|
// MTMR
|
|
//
|
|
// Created by Anton Palgunov on 08/04/2018.
|
|
// Copyright © 2018 Anton Palgunov. All rights reserved.
|
|
//
|
|
|
|
#import "TouchBarSupport.h"
|
|
|
|
@implementation MediaKeys
|
|
|
|
static io_connect_t get_event_driver(void)
|
|
{
|
|
static mach_port_t sEventDrvrRef = 0;
|
|
mach_port_t masterPort, service, iter;
|
|
kern_return_t kr;
|
|
|
|
if (!sEventDrvrRef)
|
|
{
|
|
kr = IOMasterPort( bootstrap_port, &masterPort );
|
|
kr = IOServiceGetMatchingServices( masterPort, IOServiceMatching( kIOHIDSystemClass ), &iter );
|
|
service = IOIteratorNext( iter );
|
|
kr = IOServiceOpen( service, mach_task_self(),
|
|
kIOHIDParamConnectType, &sEventDrvrRef );
|
|
IOObjectRelease( service );
|
|
IOObjectRelease( iter );
|
|
}
|
|
return sEventDrvrRef;
|
|
}
|
|
|
|
|
|
static void HIDPostAuxKey( const UInt8 auxKeyCode )
|
|
{
|
|
NXEventData event;
|
|
kern_return_t kr;
|
|
IOGPoint loc = { 0, 0 };
|
|
|
|
// Key press event
|
|
UInt32 evtInfo = auxKeyCode << 16 | NX_KEYDOWN << 8;
|
|
bzero(&event, sizeof(NXEventData));
|
|
event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS;
|
|
event.compound.misc.L[0] = evtInfo;
|
|
kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE );
|
|
|
|
// Key release event
|
|
evtInfo = auxKeyCode << 16 | NX_KEYUP << 8;
|
|
bzero(&event, sizeof(NXEventData));
|
|
event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS;
|
|
event.compound.misc.L[0] = evtInfo;
|
|
kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE );
|
|
}
|
|
|
|
+ (void)decreaseVolume {
|
|
HIDPostAuxKey(NX_KEYTYPE_SOUND_DOWN);
|
|
}
|
|
|
|
+ (void)increaseVolume {
|
|
HIDPostAuxKey(NX_KEYTYPE_SOUND_UP);
|
|
}
|
|
|
|
+ (void)muteVolume {
|
|
HIDPostAuxKey(NX_KEYTYPE_MUTE);
|
|
}
|
|
|
|
@end
|