Я пытаюсь генерировать клавиатуру keydown и keyup события программно. Я в настоящее время использую CGPostKeyboardEvent, чтобы сделать это, но я ищу способ сделать это на более низком уровне. Я посмотрел на DDHidLib, но не мог выяснить способ создать поддельное событие. Кто-либо может помочь?
обновление: Благодаря совету weichsel я теперь создаю ключ вниз событие со следующим:
CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
CGEventPost(kCGSessionEventTap, e);
CFRelease(e);
который я нашел здесь.
Однако моя проблема все еще стоит так, я уточню немного. Приложение (3rd party), что я хотел бы отправить нажатия клавиш в ключ DDHidLib реализаций, получающий функцию:
- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
keyDown: (unsigned) usageId;
И это никогда не получает названное использование существующего метода. Мое предположение - то, что ключ, вниз моделируемый с CGEventCreateKeyboardEvent, в слишком высоко уровня, который будет получен ddhidKeyboard:keyDown. Таким образом, то, что я пытаюсь сделать, создают keydown событие на достаточно низком уровне, таким образом, что оно будет распознано ddhidKeyboard:keyDown.
Что не так с Quartz Event Services?
Я думаю, вы на правильном пути, но вам следует использовать CGEventCreateKeyboardEvent
вместо CGPostKeyboardEvent
, потому что последний устарел с Mac OS X 10.6.
Ответвители событий могут вводить данные на уровне HID, если вы запустите как root