Создание CGEvent нажмите правильный путь

Я пытаюсь узнать, как создать CGEvent, используя примеры на SO и в других местах.

Я знаю, как создать событие, используя:

let eventTap = CGEvent.tapCreate(*/arguments to create the tap*/)

После этого я бегу

let runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0)
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, .commonModes)

Некоторые, но не все примеры, которые я нашел в Интернете, также добавляют следующие две строки

CGEvent.tapEnable(tap: eventTap, enable: true)
CFRunLoopRun()

Может кто-нибудь кратко объяснить, если или когда добавление последних двух строк полезно / рекомендуется?

1 ответ

Первое легко: документы говорят:

Краны событий обычно включаются при создании. Если касание события перестает отвечать на запросы или пользователь запрашивает отключение касаний события, то событие kCGEventTapDisabled передается в функцию обратного вызова касания события. Сигналы событий могут быть повторно активированы путем вызова этой функции.

Второй, вероятно, для случаев, когда программа не имеет цикла выполнения (в текущем потоке). Например, программе командной строки, которая не использует NSApplication, потребуется создать и запустить собственный цикл выполнения.

Другие вопросы по тегам