0

I am not familiar with Apple's OSX What I want to do is to set a global(system-wide) hook for 4 fingers scrolling (mouse and trackpad) and to be able to change the scrolling events (to make it more iOS like) because system preferences does't cover it. yes I assume there is a lot of programs like that but I want to make it my self (to learn OSX programming more).

My question is: What is the best template in Xcode to do so (there is many templates to start with and I have read about them , but I still can't understand which one is the best for it).

My question maybe a bit silly but I hope it is on topic for SO.

Thank you in advance. :)

Coldsteel48
  • 3,482
  • 4
  • 26
  • 43

1 Answers1

2

Well the template you want to start with is OS X -> Application -> Cocoa Application

Then having this in your AppDelegate.m is a good place to start, as far as hooking into global mouse/trackpad events:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, kCGEventMaskForAllEvents, handleCGEvent, (__bridge void *)(self));
    CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
    CFRunLoopAddSource(CFRunLoopGetMain(), runLoopSource, kCFRunLoopCommonModes);
    CGEventTapEnable(eventTap, true);
}

CGEventRef handleCGEvent(CGEventTapProxy proxy, CGEventType type, CGEventRef eventRef, void *refcon) 
{
    if (type == kCGEventLeftMouseDown /*|| type == kCGEventMouseMoved || type == kCGEventMouseDragged || ...*/) {

    }

    return eventRef;
}