Den*_*Vog 5 keyboard macos cocoa keyboard-events cgeventtap
我正在开发一个基本的击键转换器应用程序。该转换适用于以下情况:
CFRunLoopSourceRef runLoopSource = NULL;
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
Run Code Online (Sandbox Code Playgroud)
正如您所料,kCGEventMaskForAllEvents除了键盘之外,任何鼠标移动或单击都会不断触发,我怀疑会占用系统资源。我尝试替换,我可以从Quartz Event 文档中关于事件类型CGEventMaskBit(kCGEventKeyDown)的最佳信息看出这是我想要的,并且会消除鼠标移动和点击。不幸的是,使用它似乎只是吃掉了击键,而不是转换它们。
我究竟做错了什么?
以下内容有效,但我仍然不明白为什么CGEventMaskBit(kCGEventKeyUp)它本身不是正确的实现。
CGEventMaskBit(kCGEventKeyUp) | CGEventMaskBit(kCGEventKeyDown) | CGEventMaskBit(NX_SYSDEFINED)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |