Как моделировать низкоуровневое нажатие клавиши на OS x?

Я пытаюсь генерировать клавиатуру 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.

8
задан Lou 21 December 2009 в 18:15
поделиться

2 ответа

Что не так с Quartz Event Services?
Я думаю, вы на правильном пути, но вам следует использовать CGEventCreateKeyboardEvent вместо CGPostKeyboardEvent , потому что последний устарел с Mac OS X 10.6.

6
ответ дан 5 December 2019 в 19:00
поделиться

Ответвители событий могут вводить данные на уровне HID, если вы запустите как root

http://developer.apple.com/mac/library/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference. html#//apple_ref/c/tdef/CGEventTapLocation

3
ответ дан 5 December 2019 в 19:00
поделиться