2012-04-16 9 views
5

Mac OS X에서 유니 코드 문자를 시뮬레이션하여 Foreground 응용 프로그램에 보내려고합니다. 나는 'a'와 같은 유니 코드 숯 (아랍어, 중국어 등을 포함 할 수 있음)을 가지고 있고 그것을 입력하고 싶습니다. 가상 키 또는 키 코드를 사용하려고하지 않습니다. 문자 만.Objective-C를 사용하여 Mac Os X에서 유니 코드 문자 "키 누르기"를 시뮬레이트하는 방법은 무엇입니까?

는 진심으로 당신은 Peyman Mortazavi

+1

[NSEvent.KeyDown 전용 키 (Mac OS X)에서 검색 창에서 작업] 가능 재 게시 (http://stackoverflow.com/questions/10169605/nsevent- keydown-is-only-working-on-the-search-box-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