我在开发中有一个基本的按键转换器应用程序。转换适用于以下:为什么不按下事件遮罩工作,但遮罩都行?
CFRunLoopSourceRef runLoopSource = NULL;
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
如你所料,kCGEventMaskForAllEvents
不断射击任何移动鼠标或点击除了键盘,我怀疑占用系统资源。我尝试用CGEventMaskBit(kCGEventKeyDown)
替代,我最好从Quartz Event doc on Event Types得知它是我想要的,并且会清除鼠标移动和点击。不幸的是,使用这个似乎只是吃击键,而不是转换它们。
我在做什么错?
以下的工作,但我仍然不明白为什么CGEventMaskBit(kCGEventKeyUp)
本身不是正确的实施。
CGEventMaskBit(kCGEventKeyUp) | CGEventMaskBit(kCGEventKeyDown) | CGEventMaskBit(NX_SYSDEFINED)
我一直在寻找到这一点和IM不知道这就是答案与否。我也注意到当你看着你的东西。NX_SYSDEFINED似乎不适用于我 – Fallenreaper 2017-05-13 22:22:34