OSX / Cocoa: прослушивание событий перетаскивания мышью в масштабе всей системы - PullRequest
4 голосов
/ 30 сентября 2011

Привет Я новичок в программировании какао и хотел бы знать, как создать слушатель для событий всей системы (таких как перетаскивание мышью). Я добавил это в свое приложение (я видел это в другом посте):

static CGEventRef eventFunction(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
    printf("event triggered\n");
    return event;
}

Но он никогда не вызывается, и я не уверен, где я должен зарегистрировать обратный звонок.

1 Ответ

7 голосов
/ 30 сентября 2011

Самый простой способ наблюдать глобальные события мыши - использовать метод класса NSEvent addGlobalMonitorForEventsMatchingMask:handler:

Пример:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask 
                                       handler:^(NSEvent *event) {
    NSLog(@"Dragged...");
}];

Обратите внимание, что это работает только в прочее приложений, чтобы получить эти события в вашем собственном приложении, вы должны добавить дополнительный локальный обработчик событий.

...