2012-04-16 13 views
5

Ich möchte ein Unicode-Zeichen in Mac OS X simulieren, um es an die Foreground-Anwendung zu senden. Ich meine, ich habe ein Unicode-Zeichen (kann Arabisch, Chinesisch usw. enthalten) wie 'a' und ich möchte es eingeben. Bitte beachten Sie, dass ich nicht versuche, virtuelle Schlüssel oder Schlüsselcodes zu verwenden. Nur ein Zeichen.Wie simuliere ich eine Unicode Char "Taste drücken" in Mac OS X mit Objective-C?

Mit freundlichen Grüßen Peyman Mortazavi

+1

möglich re-post von [NSEvent.KeyDown ist nur auf dem Suchfeld arbeiten (in Mac OS X)] (http://stackoverflow.com/questions/10169605/nsevent- keydown-is-only-arbeiten-auf-der-suche-box-in-mac-os-x) –

Antwort

5

finde ich einen sehr guten Ansatz, aber es ist immer noch ein Problem. schau dir den Code an und schreibe dann was das aktuelle Problem ist.

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); 

Das Problem ist, dass diese Veranstaltung zu einigen Sitzungen wie das Suchfeld beschränkt ist, und das ist, weil kCGAnnotatedSessionEventTap wenn wir es kCGSessionEventTap ändern dann wird es nur auf Suchfeld arbeiten. Nicht können Sie mir helfen, sie zu kombinieren, um es auf alle Sitzungen anzuwenden.

Grüße, Peyman Mortazavi