2012-04-16 20 views
5

Chcę zasymulować znak Unicode w systemie Mac OS X, aby wysłać do aplikacji na pierwszym planie. Mam na myśli, że mam znak Unicode (może zawierać arabski, chiński itp.), Taki jak "a" i chcę go wprowadzić. Pamiętaj, że nie próbuję używać Wirtualnych Klawiszy ani Kodów Kluczowych. Tylko postać.Jak symulować znak Unicode Char "naciśnięcie klawisza" w Mac OS X przy użyciu Objective-C?

poważaniem Peyman Mortazawi

+1

możliwość re-post [NSEvent.KeyDown pracuje tylko w polu wyszukiwania (w systemie Mac OS X)] (http://stackoverflow.com/questions/10169605/nsevent- keydown-tylko-działa-na-polu-wyszukiwania-w-mac-os-x) –

Odpowiedz

5

znalazłem bardzo dobre podejście, ale nadal jest problem. spójrz na kod, a następnie napiszę, jaki jest obecny problem.

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

Problem polega na tym, że to wydarzenie jest ograniczona do kilku sesjach, jak w polu wyszukiwania, a to dlatego, kCGAnnotatedSessionEventTap jeśli zmienimy ją kCGSessionEventTap to będzie działać tylko na Search Box. Nie możesz pomóc mi je połączyć, aby zastosować to wydarzenie do każdej sesji.

Pozdrawiam, Peyman Mortazawi