c – 在Mac OS X中模拟按键事件

c – 在Mac OS X中模拟按键事件,第1张

概述我正在写一个应用程序,我需要在Mac上模拟按键事件,给出代表每个键的代码.看来我需要使用CGEventCreateKeyboardEvent函数创建事件.问题是这个函数需要一个Mac键码,而且我有一个代表特定键的代码.所以,例如,我收到: KEY_CODE_SHIFT或KEY_CODE_A – 这些都是在某处定义的数字常量. 我需要把这些常量转换成CGKeyCode值. 我目前的尝试使用类似于th 我正在写一个应用程序,我需要在Mac上模拟按键事件,给出代表每个键的代码.看来我需要使用CGEventCreateKeyboardEvent函数创建事件.问题是这个函数需要一个Mac键码,而且我有一个代表特定键的代码.所以,例如,我收到:

KEY_CODE_SHIFT或KEY_CODE_A – 这些都是在某处定义的数字常量.

我需要把这些常量转换成CGKeyCode值.

我目前的尝试使用类似于this SO question的代码.问题是它只适用于可打印的字符.如果一切都失败了,我不会对转换进行编码,但这意味着我需要一个可能的CGKeyCode值的表,我还没有找到.

有任何想法吗?

解决方法 以下是模拟Cmd-S *** 作的代码:

CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);CGEventRef saveCommandDown = CGEventCreateKeyboardEvent(source,(CGKeyCode)1,YES);CGEventSetFlags(saveCommandDown,kCGEventFlagMaskCommand);CGEventRef saveCommandUp = CGEventCreateKeyboardEvent(source,NO);CGEventPost(kCGAnnotatedSessionEventTap,saveCommandDown);CGEventPost(kCGAnnotatedSessionEventTap,saveCommandUp);CFRelease(saveCommandUp);CFRelease(saveCommandDown);CFRelease(source);

CGKeyCode只不过是一个无符号整数:

typedef uint16_t CGKeyCode;  //From CGRemoteOperation.h

你真正的问题是将一个角色(可能是Nsstring)转换成一个键码.幸运的是,Shortcut Recorder项目的代码将在SRKeyCodeTransformer.m文件中进行.将字符串转换为键码非常好,然后重新打开.

总结

以上是内存溢出为你收集整理的c – 在Mac OS X中模拟按键事件全部内容,希望文章能够帮你解决c – 在Mac OS X中模拟按键事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1027860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存