Как отличить пользовательское событие клавиатуры от сгенерированного?

Я установил перехват клавиатуры:

CGEventRef myCGEventCallback (прокси CGEventTapProxy, тип CGEventType, событие CGEventRef, void * refcon) {

В основном я хочу чтобы взять нажатие на клавиатуру пользователя, съесть ввод и вместо этого опубликовать свой ввод.

Так что, если он коснется «g», я могу отправить «foo» в текстовое поле.

Я пишу в текстовое поле. с CGEventPost и CGEventSetUnicodeString , как показано здесь: http://www.mail-archive.com/ cocoa-dev@lists.apple.com /msg23343.html

Проблема в том, что каждый из моих программно введенных символов попадает на крючок клавиатуры. Так что я не могу вернуть NULL в ловушке клавиатуры, чтобы заблокировать ввод пользователя ... что также блокирует весь ввод программы!

Я выделил их на стороне Windows в C # с помощью флага 'injected', см. Мой вопрос год назад здесь: Как использовать 8-битные флаги низкого уровня в качестве условных выражений?

Ищете что-то похожее. в Objective-C.

9
задан Community 23 May 2017 в 10:30
поделиться