이것은 첫 번째 게시물이므로 편집이 필요한지 알려주세요.CGEventSetFlags - 로컬 문자열에서 시프트 수정 자 키가 필요한 경우 확인하십시오.
저는 현재 Apple 키보드의 가상 키 코드를 char을 전달하여 반환하는 함수를 가지고 있습니다. CGKeyCode keyCodeForChar()
, 그것은 작동하고 다양한 웹 소스에 대한 결과를 확인했습니다.
로컬 문자열 (예 : NSString *myString = @"Hello World!"
)을 세분화하고 각 문자를 처리하고 CGKeyCode를 검색 한 후 CGEventPost()
을 사용하여 쓰려고했습니다. 그러나이 작업은 문자를 대문자로 입력해야하는 경우 올바른 플래그를 감지하려고 시도 할 때 전체 문자열이 소문자로 인쇄됩니다. 이것은 지금까지 내 코드입니다 : '!'
NSString *myString = @"Hello World!";
if (![self.view.window isKeyWindow])
{
for (int i = 0; i < myString.length; i++)
{
char c = [theString characterAtIndex:i];
CGKeyCode keyCode = keyCodeForChar(c);
CGEventRef event;
CGEventFlags flags = kCGEventFlagMaskShift;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
// Key down event
event = CGEventCreateKeyboardEvent(source, keyCode, true);
CGEventSetFlags(event, (flags & CGEventGetFlags(event)));
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
// Key up event
event = CGEventCreateKeyboardEvent(source, keyCode, false);
CGEventSetFlags(event, (flags & CGEventGetFlags(event)));
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
CFRelease(source);
}
}
는 현재 출력, hello world1
입니다 같은 CGKeyCode에서 오는 1. 따라서 올바른 플래그 마스크를 감지하는 것이 잘못되었다고 생각합니다. 내가 비슷한 질문을 살펴 보았다는 여기에 질문 :
Obtaining modifier key pressed in CGEvent tap
사람이 내가 될 것이라고 잘못 가고 어디를 도와 줄 수 있다면 솔루션, 나를 위해 일하지 않은이 그러나CGEventPost - possible bug when simulating keyboard events?
훌륭한!
미래 수색자를 들어, 크레이그