2012-04-16 16 views
5

Quiero simular un carácter Unicode en Mac OS X para enviar a la aplicación de primer plano. Quiero decir que tengo un carácter unicode (puede contener árabe, chino, etc.) como 'a' y quiero ingresarlo. Tenga en cuenta que no estoy tratando de usar las claves virtuales o los códigos clave. Solo un personaje.Cómo simular una "pulsación de tecla" de Unicode Char en Mac Os X usando Objective-C?

Atentamente, Peyman Mortazavi

+1

posible re-puesto de [NSEvent.KeyDown sólo se está trabajando en el campo de búsqueda (en Mac OS X)] (http://stackoverflow.com/questions/10169605/nsevent- keydown-is-only-working-on-the-search-box-in-mac-os-x) –

Respuesta

5

me encontré con un muy buen enfoque, pero todavía hay un problema. mira el código y luego escribo cuál es el problema actual.

CGEventRef downEvt = CGEventCreateKeyboardEvent(NULL, 0, true); 
CGEventRef upEvt = CGEventCreateKeyboardEvent(NULL, 0, false); 
UniChar oneChar = 'h'; 
CGEventKeyboardSetUnicodeString(downEvt, 1, &oneChar); 
CGEventKeyboardSetUnicodeString(upEvt, 1, &oneChar); 
CGEventPost(kCGAnnotatedSessionEventTap, downEvt); 
CGEventPost(kCGAnnotatedSessionEventTap, upEvt); 

El problema es que este evento está limitado a algunas sesiones como el cuadro de búsqueda y esto se debe a que kCGAnnotatedSessionEventTap si cambiamos a kCGSessionEventTap entonces sólo funcionará en cuadro de búsqueda. No puede ayudarme a combinarlos para que aplique este evento a cada sesión.

Saludos, Peyman Mortazavi