2012-04-16 1 views
5

Je veux simuler un caractère Unicode dans Mac OS X pour envoyer à l'application de premier plan. Je veux dire que j'ai un caractère unicode (peut contenir de l'arabe, du chinois, etc.) comme 'a' et je veux l'entrer. Veuillez noter que je n'essaie pas d'utiliser des clés virtuelles ou des codes clés. Seul un personnage.Comment simuler une "pression de touche" Char Unicode dans Mac Os X en utilisant Objective-C?

Sincèrement vôtre, Peyman Mortazavi

+1

possible re-post de [NSEvent.KeyDown ne fonctionne que sur la zone de recherche (sous Mac OS X)] (http://stackoverflow.com/questions/10169605/nsevent- keydown-is-only-working-on-the-search-box-in-mac-os-x) –

Répondre

5

J'ai trouvé une très bonne approche, mais il y a encore un problème. regarde le code puis j'écris quel est le problème actuel.

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

Le problème est que cet événement est limité à quelques séances comme la boîte de recherche et c'est parce que kCGAnnotatedSessionEventTap si nous changeons à kCGSessionEventTap alors il ne fonctionne que sur le champ de recherche. Vous ne pouvez pas m'aider à les combiner pour faire en sorte que cet événement s'applique à toutes les sessions.

Cordialement, Peyman Mortazavi

Questions connexes