0xFEEDFACE
это просто фиктивное значение. Это одно из нескольких 4-байтовых чисел с глупыми шестнадцатеричными написаниями , которые будут выделяться, когда вы смотрите на память.
Функция принимает три аргумента: событие, CGEventField
(которое является enum
) и int64_t
(8-байтовое целое число со знаком), чье Диапазон допустимых значений, вероятно, зависит от поля. Я использовал 0xFEEDFACE
, чтобы указать, что вы можете попытаться поместить туда произвольное «магическое» значение *, а затем проверить его при получении события, используя CGEventGetIntegerValueField
. Если ваше событие получает новое событие с вашим «магическим номером», то оно (почти наверняка) было отправлено вами. В противном случае оно было отправлено системой.
Подводя итоги и отвечая на ваши явные вопросы: этот аргумент не имеет значения по умолчанию; вы должны передать что-то произвольное, что вряд ли будет использоваться системой событий (вы можете проверить серию событий, отправленных системой, чтобы увидеть, как выглядят «реальные» значения); идея заключается в том, что ваше произвольное значение позволяет вам проверить, что событие было отмечено вами.
Что касается ошибки, похоже, я ошибся. Я подумал, что вы можете установить любое поле для любого типа события (например, используя поле «нажатия мыши» на событии клавиатуры, поскольку система почти наверняка не установит это) для передачи произвольной информации (и так определите события, которые вы сами построили). Однако кажется, что Event Services не позволят вам сделать это. Могут быть и другие поля, которые вы можете использовать, но я точно не знаю.
* Я предполагал, что вы поймете, что это мусорная ценность; извините.