gpt4 book ai didi

macos - OSX Quartz 事件点击 : event types and how to edit events

转载 作者:行者123 更新时间:2023-12-04 15:37:58 25 4
gpt4 key购买 nike

这是我的代码:

#import <ApplicationServices/ApplicationServices.h>

CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
printf("%u\n", (uint32_t)type);
return event;
}

int main (int argc, const char * argv[]) {
CFMachPortRef eventTap;
CFRunLoopSourceRef runLoopSource;

eventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, 0, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
CFRunLoopRun();
return 0;
}

首先.. 如果我想编辑事件怎么办?例如,我监听 keyDown 事件,如果它是“a”,我将其转为“b”,或者实时编辑鼠标位置,或者例如简单地捕获一个事件并使其无效(禁用特定的例如关键..)

其次.. CGEventType 是用只列出几种类型的枚举定义的.. 例如,当我点击 CMD 时,我得到 12,但这与枚举中指定的值不匹配.. 我错过了什么?

最佳答案

要修改事件,有各种 CGEventSet... 函数。为了终止该事件,我认为您的点击函数可以返回 NULL。

事件类型的枚举包括 kCGEventFlagsChanged = NX_FLAGSCHANGED .如果您查看 IOKit/hidsystem/IOLLEvent.h,它会将 NX_FLAGSCHANGED 定义为 12。

关于macos - OSX Quartz 事件点击 : event types and how to edit events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com