- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在处理自定义键盘事件时遇到了困难。我希望能够发送带有/不带 kCGEventFlagMasks 的任何键,例如 command、alt、ctrl、shift...
例如我想发送当前最前面的应用程序,假设它是 TextEdit,组合键 cmd+t,它应该显示字体窗口。
但目前仅将t添加到TextEdit的当前文档中。我尝试使用自定义设置 CGEventFlags 发布事件,并围绕 t 事件为 cmd 生成 keyDown 和 keyUp 事件。免费应用程序 Key Codes 向我显示,当我使用 CGEventFlags 设置时,已按下 cmd+t,但此组合键未传递到 TextEdit,只有单个 t...
这是我的代码:
...
flags = (flags | kCGEventFlagMaskCommand);
[self writeString:@"" withFlags:flags];
...
(void)writeString:(NSString *)valueToSet withFlags:(int)flags
{
UniChar buffer;
CGEventRef keyEventDown = CGEventCreateKeyboardEvent(NULL, 1, true);
CGEventRef keyEventUp = CGEventCreateKeyboardEvent(NULL, 1, false);
CGEventSetFlags(keyEventDown,0);
CGEventSetFlags(keyEventUp,0);
for (int i = 0; i < [valueToSet length]; i++) {
[valueToSet getCharacters:&buffer range:NSMakeRange(i, 1)];
CGEventKeyboardSetUnicodeString(keyEventDown, 1, &buffer);
CGEventSetFlags(keyEventDown,flags);
CGEventPost(kCGSessionEventTap, keyEventDown);
CGEventKeyboardSetUnicodeString(keyEventUp, 1, &buffer);
CGEventSetFlags(keyEventUp,flags);
CGEventPost(kCGSessionEventTap, keyEventUp);
}
CFRelease(keyEventUp);
CFRelease(keyEventDown);
}
我也很难理解 CGEventTapLocation 的含义。我不知道哪个事件点击最适合我的任务。 Quartz Event Reference 中的描述并没有启发我:
kCGHIDEventTap
Specifies that an event tap is placed at the point where HID system events enter the window server.
kCGSessionEventTap
Specifies that an event tap is placed at the point where HID system and remote control events enter a login session.
kCGAnnotatedSessionEventTap
Specifies that an event tap is placed at the point where session events have been annotated to flow to an application.
我看过很多关于该主题的帖子,但没有一个能帮助我解决我的问题......感谢您的帮助!
最佳答案
这不是问题的答案,而是我当前通过 AppleScript 的解决方法:
appleScriptString = [NSString stringWithFormat:@"tell application \"System Events\" to key code %d using %@",keyCode, modifierDownString];
我将其提供给该函数:
- (void)runScript:(NSString*)scriptText
{
NSDictionary *error = nil;
NSAppleEventDescriptor *appleEventDescriptor;
NSAppleScript *appleScript;
appleScript = [[NSAppleScript alloc] initWithSource:scriptText];
appleEventDescriptor = [appleScript executeAndReturnError:&error];
[appleScript release];
}
关于macos - CGEventCreateKeyboardEvent 和 CGEventTapLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691044/
我使用 CGEventCreateKeyboardEvent 在 Mac 上创建事件并使用 CGEventPost 发布事件。以下代码非常适合按“a”键。 CGEventRef downEvent =
我在处理自定义键盘事件时遇到了困难。我希望能够发送带有/不带 kCGEventFlagMasks 的任何键,例如 command、alt、ctrl、shift... 例如我想发送当前最前面的应用程序,
我需要向聚焦的应用程序发送一个按键,我的第一次搜索使我找到了 CGEventCreateKeyboardEvent : CGEventRef eventA = CGEventCreateKeyboar
我已经安装了 pyobjc(带有 Quartz),我想知道如何使用 CGEventCreateKeyboardEvent 正确创建键盘事件?请?我在互联网上根本找不到它,而且我什至不知道要导入什么。
我正在尝试使用 CGEventCreateKeyboardEvent 和 CGEventPost 为系统范围的键盘快捷键(如 control-F4)发送击键,但没有成功。使用 CGPostKeyboa
我是一名优秀的程序员,十分优秀!