2012-04-16 26 views
5

我想在Mac OS X中模擬一個unicode字符發送到前臺應用程序。 我的意思是我有一個unicode字符(可以包含阿拉伯文,中文等),如'a',我想輸入它。請注意,我並未嘗試使用虛擬鍵或鍵碼。只有一個角色。如何使用Objective-C模擬Mac OS X中的Unicode字符「按鍵」?

此致, Peyman的Mortazavi

+1

的[NSEvent.KeyDown僅在搜索框(在Mac OS X)工作]可能的重職(http://stackoverflow.com/questions/10169605/nsevent- KEYDOWN-是隻-工作 - 上的搜索框-in-MAC的-OS-X) – 2012-04-16 19:37:03

回答

5

我發現了一個很不錯的方法,但仍有一個問題。看代碼然後我寫什麼是當前問題。

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

的問題是,本次活動僅限於像搜索框的一些會議,這是因爲kCGAnnotatedSessionEventTap如果我們將其更改爲kCGSessionEventTap那麼它只會在搜索框的工作。你不可以幫助我把它們結合起來,使它將這個事件應用到每個會話中。

問候, Peyman的Mortazavi