相关疑难解决方法(0)

在Mac OS X中模拟按键事件

我正在编写一个应用程序,我需要在Mac上模拟按键事件,给出代表每个键的代码.看来我需要使用该CGEventCreateKeyboardEvent函数来创建事件.问题是这个功能需要Mac键码,而我所拥有的是代表特定键的代码.所以,例如,我收到:

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

我需要采用这些常量并将它们转换为CGKeyCode值.

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

有任何想法吗?

c++ keyboard macos cocoa macos-carbon

13
推荐指数
2
解决办法
2万
查看次数

如何模拟os x上的低级按键?

我试图以编程方式生成键盘keydown和keyup事件.我目前正在使用CGPostKeyboardEvent来执行此操作,但我正在寻找一种在较低级别执行此操作的方法.我看过DDHidLib,但无法找到创建假事件的方法.有人可以帮忙吗?

更新:感谢weichsel的建议,我现在正在创建一个关键事件,其中包括:

  CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
  CGEventPost(kCGSessionEventTap, e);
  CFRelease(e);
Run Code Online (Sandbox Code Playgroud)

我在这里找到.

但是,我的问题仍然存在,所以我会详细说明一下.我希望发送按键的应用程序(第三方)实现DDHidLib的键捕获功能:

- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
             keyDown: (unsigned) usageId;
Run Code Online (Sandbox Code Playgroud)

并且永远不会使用当前方法调用它.我的猜测是,使用CGEventCreateKeyboardEvent模拟的键值太高,无法通过ddhidKeyboard捕获:keyDown.所以我要做的是在足够低的级别创建keydown事件,以便ddhidKeyboard:keyDown识别它.

c macos cocoa objective-c hid

8
推荐指数
1
解决办法
6537
查看次数

标签 统计

cocoa ×2

macos ×2

c ×1

c++ ×1

hid ×1

keyboard ×1

macos-carbon ×1

objective-c ×1