CGEventPostToPSN不适用于cgkeycode(56)

时间:2011-04-06 22:57:01

标签: objective-c cocoa nsevent

我正在尝试将键盘事件发送到进程。像'a','v''t'这样的seding键工作正常,但空格,命令,控制等键不起作用。这就是我在做的事情:

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

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

e4有效,但e1没有。我的目的是发送命令+ a for select all。 感谢。

1 个答案:

答案 0 :(得分:4)

您需要将命令键设置为字母'a'的键盘事件的标志,而不是为命令键发布另一个事件:

// 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