我正在尝试将键盘事件发送到进程。像“ a”,“ v”,“ t”之类的分词键工作正常,但是空格,命令,控制之类的键不起作用。这是我在做什么:

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

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


e4有效,但e1无效。我的目的是发送命令+ a以全选。
谢谢。

最佳答案

您需要将命令键设置为字母“ 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

关于objective-c - CGEventPostToPSN不适用于cgkeycode(56),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5573943/

10-10 20:48