objective-c - CGEventPostToPSN 不适用于 cgkeycode (56)

标签 objective-c cocoa nsevent

我正在尝试将键盘事件发送到进程。像“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 不能。我在这里的目的是发送 command+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/

相关文章:

objective-c - OSX 应用程序崩溃 : code signature invalid

java - 不同语言的内存管理是否足够相似以转移我的知识?

ios - 使用 [NSEvent mouseLocation] 的错误位置

objective-c - 无法从文档 Controller 填充 NSMenu

cocoa - - (无效)鼠标按下 :(NSEvent *)theEvent not firing

objective-c - 如何在我从该控件之一的子类中放置控件的 View 中使用方法

iphone - 多个 View Controller 的重复代码

objective-c - Objective-C 中的静态数组

xcode - NSOpenPanel 在调试期间保持打开状态

iphone - 检查常量是否在运行时在 Obj-C 中定义