Col*_*son 10 mouse cocoa macos-carbon nsnotifications mousemove
有没有办法在Cocoa中注册全局鼠标移动事件?我能够使用Carbon's注册事件InstallEventHandler(),但更喜欢Cocoa等价物.我已经查找了NSNotificationCenter事件,但似乎没有任何公共事件名称(是否有私有名称?)
或者,有没有办法NSTrackingArea用于具有clearColor背景的视图?
该应用程序仅限Snow Leopard.
Ben*_*itz 23
在SnowLeopard中有一个新的类方法,NSEvent它正是你想要的:+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block.你想要的mask = NSMouseMovedMask.
Dou*_*son 12
在StackOverflow上已经提出了类似的问题: 如何使透明的NSView子类处理鼠标事件?
总而言之,tansparent视图方法不起作用.Quartz Event Taps似乎是最好的答案.
以下是使用水龙头的一些提示:
创建水龙头CGEventTapCreate.
a)对于您可能想要使用的位置(第一个)参数kCGSessionEventTap.
b)对于您可能想要的放置(第二)参数kCGHeadInsertEventTap.
c)对于事件掩码参数,请尝试(1 << kCGEventMouseMoved).
创建一个运行循环源CFMachPortCreateRunLoopSource,将事件tap作为第二个参数传递.
将运行循环源添加到运行循环中.假设您希望将其添加到主运行循环中,请执行以下操作:
CFRunLoopAddSource(CFRunLoopGetMain(), sourceFromStep2, kCFRunLoopDefaultMode);
启用事件点击 CGEventTapEnable
| 归档时间: |
|
| 查看次数: |
6212 次 |
| 最近记录: |