Возвращение `CGEvent` моего собственного творения в` NSEventTap` - PullRequest
0 голосов
/ 07 ноября 2019

Документация для CGEventTapCallBack здесь состояния:

CGEventRef событие Входящее событие. Это событие принадлежит вызывающей стороне, и вам не нужно его выпускать.

Что произойдет, если я захочу съесть событие и вернуть NULL? Должен ли я CFRelease это сам?

Точно так же, если я хочу заменить его на событие, которое я создал сам, я должен CFRelease входящее событие и CFRetain недавно созданное событие?

Или я вынужден изменить содержимое полученного CGEvent на месте? И действительно ли это так, есть ли какой-нибудь API-вызов, который я могу использовать с помощью горячей замены?

1 Ответ

1 голос
/ 08 ноября 2019

Скопировано из документации для CGEventTapCallBack (ссылка в вопросе):

Обсуждение

Если отвод события является активным фильтром, вашфункция обратного вызова должна возвращать одно из следующего:

  • Передаваемое (возможно измененное) событие. Это событие передается обратно в систему событий.

  • Вновь построенное событие. После того, как новое событие было передано обратно в систему событий, новое событие будет выпущено вместе с исходным событием.

  • NULL, если переданное событие должно быть удалено.

Новое событие будет выпущено вместе с исходным событием. Не выпускайте исходное событие и не публикуйте новое событие.

...