Search code examples
iosobjective-cxcodemouseeventosx-elcapitan

CGEventCreateMouseEvent Complie Error in Xcode 7


Even though CGEventCreateMouseEvent is not deprecated in Xcode 7, I am getting error

No matching function for call to 'CGEventCreateMouseEvent'

Please find the code that worked in Xcode 6 (SDK OSX 10.10)

-(void)sendMouseClick:(CGMouseButton)mouseBtn value:(uint32_t)value
{
    int mouseEvent = 0;
    if(mouseBtn == kCGMouseButtonLeft && value == 1) //left btn down
    {
        mouseEvent = kCGEventLeftMouseDown;
    }
    else if (mouseBtn == kCGMouseButtonLeft && value == 0) //left btn up 
    {
        mouseEvent = kCGEventLeftMouseUp;
    }
    else if (mouseBtn == kCGMouseButtonRight && value == 1) //Right btn down
    {
        mouseEvent = kCGEventRightMouseDown;
    }
    else if (mouseBtn == kCGMouseButtonRight && value == 0) //Right btn up
    {
        mouseEvent = kCGEventRightMouseUp;
    }
    if(mouseEvent != 0) // a valid mouse event
    {
        CGEventRef ourEvent = CGEventCreate(NULL);
        NSPoint mouseLoc  = CGEventGetLocation(ourEvent); //get current mouse position

        CGEventRef mouseClick = CGEventCreateMouseEvent(
                                                        NULL,
                                                        mouseEvent,
                                                        mouseLoc,
                                                        mouseBtn
                                                        );
        CGEventPost(kCGHIDEventTap, mouseClick);
    }
}

I have tried importing <CoreGraphics/CGEvent.h> but it made no difference. Any idea what is happening?


Solution

  • I found out that there was a type mismatch after SDK 10.11.

    Changing,

    int mouseEvent = 0
    

    to

    CGEventType mouseEvent = kCGEventNull;
    

    Fixes the issue.