這裏的代碼來模擬Cmd的 - 小號行動:
CGKeyCode inputKeyCode = kVK_ANSI_S;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef saveCommandDown = CGEventCreateKeyboardEvent(source, inputKeyCode, YES);
CGEventSetFlags(saveCommandDown, kCGEventFlagMaskCommand);
CGEventRef saveCommandUp = CGEventCreateKeyboardEvent(source, inputKeyCode, NO);
CGEventPost(kCGAnnotatedSessionEventTap, saveCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, saveCommandUp);
CFRelease(saveCommandUp);
CFRelease(saveCommandDown);
CFRelease(source);
一個CGKeyCode
比一個無符號整數而已:
typedef uint16_t CGKeyCode; //From CGRemoteOperation.h
你真正的問題將目光轉向一個字符(可能是NSString
)轉換爲鍵碼。幸運的是,Shortcut Recorder項目的代碼只能在SRKeyCodeTransformer.m
文件中執行。將字符串轉換爲鍵碼並再次返回非常棒。
那麼在這個例子中,'1'的'CGKeyCode'就是S的代碼。另外,這隻適用於前臺應用程序,還是在後臺運行?是否可以在整個會話中使用?謝謝 – joec 2010-07-08 17:30:07
@joec是所有這些。 – 2010-07-08 19:12:22
因此,說我的應用程序在後臺運行(就像服務),我在前面有Photoshop,我可以模擬一個按鍵,它會在Photoshop中看到?謝謝 – joec 2010-07-08 20:10:08