CGEventPostToPSN 不适用于 cgkeycode (56)

发布于 2024-10-31 01:02:27 字数 367 浏览 5 评论 0原文

我正在尝试将键盘事件发送到进程。像“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 来选择全部。 谢谢。

I am trying to send keyboard event to a process. Seding keys like 'a', 'v' 't' ... works fine but keys such as space, command, control doesn't work. Here's what I am doing:

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

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

e4 works, but e1 doesn't. My purpose here is to send command+a for select all.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2024-11-07 01:02:27

您需要将命令键设置为字母“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 事件服务参考

You need to set the command key as a flag of the keyboard event for letter ‘a’ instead of posting another event for the command key:

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

For a list of possible event flags, see the Quartz Event Services Reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文