Carbon - OS X - 使用 CGEventPost 发送修改后的按键事件
我正在尝试以编程方式发送修改后的击键,例如大写“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”!
任何帮助将不胜感激。
I'm trying to programmatically send modified keystrokes, for instance a capital "A". The problem is that the shift modifier does not seem to have any effect.
In my code, I have two events, one for the shift key down, and another for the 'm' key down.
CGEventRef mDown = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)46, true);
CGEventRef shiftDown = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, true);
CGEventPost(kCGAnnotatedSessionEventTap, shiftDown);
CGEventPost(kCGAnnotatedSessionEventTap, mDown);}
CFRelease(shiftDown);
CFRelease(mDown);
The result is unfortunately always a small case 'm'!
Any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该改用 CGEventKeyboardSetUnicodeString。请参阅此处获取一些示例代码。
You should be using CGEventKeyboardSetUnicodeString instead. See here for some sample code.