Я пытаюсь генерировать события клавиатуры и нажатия клавиш программно. В настоящее время я использую CGPostKeyboardEvent, чтобы сделать это, но я ищу способ сделать это на более низком уровне. Я посмотрел на DDHidLib, но не смог найти способ создать поддельное событие. Кто-нибудь может помочь?
обновление :
Благодаря совету Вейкселя я сейчас создаю событие нажатия клавиш со следующим:
CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
CGEventPost(kCGSessionEventTap, e);
CFRelease(e);
который я нашел здесь .
Однако , моя проблема все еще остается, поэтому я немного уточню. Приложение (третье лицо), которое я хотел бы отправить по нажатию клавиш, реализует функцию захвата клавиш DDHidLib:
- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
keyDown: (unsigned) usageId;
И это никогда не вызывается с использованием текущего метода. Я предполагаю, что клавиша down, имитируемая с CGEventCreateKeyboardEvent, находится на слишком высоком уровне, чтобы быть захваченным ddhidKeyboard: keyDown. Поэтому я пытаюсь создать событие keydown на достаточно низком уровне, чтобы оно распознавалось ddhidKeyboard: keyDown.