我在開發中有一個基本的按鍵轉換器應用程序。轉換適用於以下:爲什麼不按下事件遮罩工作,但遮罩都行?
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