Pergunta

Estou tentando gerar programaticamente os eventos de teclado e keyup de teclado. Atualmente, estou usando o CGPostKeyboardEvent para fazer isso, mas estou procurando uma maneira de fazer isso em um nível mais baixo. Eu olhei para o ddhidlib, mas não consegui descobrir uma maneira de criar um evento falso. Alguém pode ajudar?

atualizar: Graças ao conselho de Weichsel, agora estou criando um evento importante com o seguinte:

  CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
  CGEventPost(kCGSessionEventTap, e);
  CFRelease(e);

que eu encontrei aqui.

No entanto, meu problema ainda permanece, então vou elaborar um pouco. O aplicativo (terceira parte) que eu gostaria de enviar teclas para implementos DDHIDLIB Função de captura de chaves:

- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
             keyDown: (unsigned) usageId;

E isso nunca é chamado usando o método atual. Meu palpite é que a chave para baixo simulada com o CGEVEventCreateKeyboardEvent é muito alta para ser capturada pelo ddhidkeyboard: keydown. Então, o que estou tentando fazer é criar o evento KeyDown em um nível suficientemente baixo, de modo que ele seja reconhecido pelo DDHIDKEYBOARD: KeyDown.

Foi útil?

Solução

O que há de errado com os serviços de evento de quartzo?
Eu acho que você está no caminho certo, mas você deve usar CGEventCreateKeyboardEvent ao invés de CGPostKeyboardEvent Porque o último é descontinuado desde o Mac OS X 10.6.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top