2011-04-06 18 views
1

我正在嘗試將鍵盤事件發送到進程。像'a','v''t'這樣的按鍵可以正常工作,但空間,命令,控制等按鍵不起作用。這是我在做什麼:CGEventPostToPSN不能用於cgkeycode(56)

CGEventRef e1 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)55, YES); 
CGEventRef e4 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, YES); 

CGEventPostToPSN(&spotPSN, e1); 
CGEventPostToPSN(&spotPSN, e4); 

e4的作品,但e1沒有。我的目的是發送命令+ a來選擇所有。 謝謝。

回答

4

您需要設置命令鍵的字母鍵盤事件的標記「一」,而不是發佈另一個事件的命令鍵:

// virtual key code for letter 'a' 
CGKeyCode keycode = 0; 

// keyboard event for letter 'a' 
CGEventRef event = CGEventCreateKeyboardEvent(NULL, keycode, true); 

// modify keyboard event so that it becomes 'command-a' 
CGEventSetFlags(event, kCGEventFlagMaskCommand); 

有關可能的事件標誌的列表,請參閱Quartz Event Services Reference