【问题标题】:Carbon - OS X - Sending modified key events using CGEventPostCarbon - OS X - 使用 CGEventPost 发送修改后的关键事件
【发布时间】:2011-01-18 08:50:13
【问题描述】:

我正在尝试以编程方式发送修改后的击键,例如大写“A”。问题是shift修饰符似乎没有任何作用。

在我的代码中,我有两个事件,一个用于按下 shift 键,另一个用于按下“m”键。

CGEventRef mDown = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)46, true);

CGEventRef shiftDown = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, true);

    CGEventPost(kCGAnnotatedSessionEventTap, shiftDown);
    CGEventPost(kCGAnnotatedSessionEventTap, mDown);}
    CFRelease(shiftDown);
    CFRelease(mDown);

不幸的是,结果总是小写'm'!

任何帮助将不胜感激。

【问题讨论】:

    标签: c macos events keyboard macos-carbon


    【解决方案1】:

    您应该改用 CGEventKeyboardSetUnicodeString。示例代码见here

    【讨论】:

    • CGEventKeyboardSetUnicodeString() 不支持在事件中添加 Ctrl 等修饰符。
    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多