【问题标题】:Cocoa: Limit mouse to screenCocoa:将鼠标限制在屏幕上
【发布时间】:2023-12-24 02:36:01
【问题描述】:

我正在为 OSX 开发一个信息亭模式应用程序。在某些情况下,会附加另一个屏幕。我的应用程序在一个屏幕上全屏运行,使用:

[self.window.contentView enterFullScreenMode:s 
                                 withOptions:[NSDictionary dictionaryWithObject:appOptions
                                      forKey:NSFullScreenModeApplicationPresentationOptions]];

选项如下:

[NSNumber numberWithUnsignedInt:(NSApplicationPresentationHideMenuBar|
                                NSApplicationPresentationHideDock|
                                 NSApplicationPresentationDisableHideApplication|
                                 NSApplicationPresentationDisableProcessSwitching|
                                 NSApplicationPresentationDisableAppleMenu)];

我想要的是将鼠标光标限制在游戏运行的屏幕上。

我怎样才能做到这一点?

【问题讨论】:

    标签: objective-c cocoa macos mouse fullscreen


    【解决方案1】:

    将 NSTrackingArea 添加到您不希望鼠标进入的屏幕。当您收到鼠标已进入跟踪区域的通知时,使用 CGEventCreateMouseEvent 和 CGPostEvent 将鼠标移回安全位置,可能是主屏幕上最近的点。

    【讨论】:

    • 听起来不错 - 我会尝试翻转你的想法 - 捕获 mouseExited-events。
    • 好电话;无论如何,这会更好,因为您必须将跟踪区域添加到视图,而不仅仅是任意屏幕坐标。我忘记了。
    最近更新 更多