我正在创建一个模拟MacBook多点触控板的应用程序。如您所知,在MacBook的触控板上


如果您向上滑动4个手指,则会触发“显示桌面”。
如果您向下滑动4个手指,则显示Exposé。


但是,如果正在激活“显示桌面”,并且向下滑动四根手指,它将返回到正常模式。 Exposé也是如此:如果激活Exposé,并且向上滑动四根手指,它也会恢复为正常模式。

这是问题所在:我使用键盘快捷键F3来显示Exposé,并使用F11来显示Show Desktop。问题是,当激活“显示桌面”时,如果按F3,它将直接进入Exposé。在激活Exposé时,如果按F11,它将直接转到Show Desktop。但我希望它的行为像Trackpad,我猜它的代码可能看起来像这样

- FourFingersDidSwipeUp {
    if (isExposeBeingActivated() || isShowDesktopBeingActivated()) {
        pressKey("Esc");
    } else {
        pressKey("F11");
    }
}


但是我不知道如何实现“ isExposeBeingActivated()”和“ isShowDesktopBeingActivated()”方法。我尝试创建一个窗口并检查其大小是否已更改(假设如果激活了Expose,则其大小应较小),但是系统始终返回相同的大小。我尝试在Expose期间监视后台进程,但没有任何反应。对此有什么建议吗?

(对不起,我的英语听起来很奇怪。)

最佳答案

据我所知,除了指定您自己应用程序窗口的“收集行为”的能力之外,没有任何与Exposé相关功能的公共接口。

10-08 05:54