2012-04-16 5 views
5

Mac OS Xでユニコード文字をシミュレートして、フォアグラウンドアプリケーションに送信したいと考えています。 私は 'a'のようなユニコード文字(アラビア語、中国語などを含むことができます)を持っていて、それを入力したいのです。私はバーチャルキーまたはキーコードを使用しようとしていないことに注意してください。文字のみ。Objective-Cを使ってMac OS XでUnicode Char "key press"をシミュレートする方法は?

敬具、 Peyman Mortazavi

+1

[NSEvent.KeyDownのみ(Mac OS Xの)検索ボックスに取り組んでいる]の可能性を再ポスト(http://stackoverflow.com/questions/10169605/nsevent- keydown-is-only-working-on-the-search-in-mac-os-x) –

答えて

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

問題は、このイベントは、検索ボックスのようないくつかのセッションに制限されていると我々はkCGSessionEventTapにそれを変更した場合kCGAnnotatedSessionEventTapは、それが唯一の検索ボックスで動作しますので、これはあるということです。このイベントをすべてのセッションに適用するためにそれらを組み合わせる手助けはできません。

よろしく、 Peyman Mortazavi