1

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

  • 如果您向上滑动 4 根手指,它会触发显示桌面。
  • 如果您向下滑动 4 个手指,它会显示 Exposé。

但是,如果正在激活显示桌面并且您向下滑动 4 根手指,它将返回到正常模式。Exposé 也是如此:如果 Exposé 被激活并且您向上滑动 4 个手指,它也会返回到正常模式。

这是问题所在:我使用键盘快捷键 F3 显示 Exposé 和 F11 显示显示桌面。问题是,当 Show Desktop 被激活时,如果我按 F3,它将直接进入 Exposé。当 Exposé 被激活时,如果我按 F11 它将直接进入 Show Desktop。但我希望它表现得像触控板,我猜它的代码可能看起来像这样

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

但我不知道如何实现“isExposeBeingActivated()”和“isShowDesktopBeingActivated()”方法。我试过创建一个窗口并检查它的大小是否发生了变化(假设如果 Expose 被激活,它的大小应该更小),但系统总是返回相同的大小。我尝试在 Expose 期间监控后台进程,但什么也没发生。有人知道对此有什么建议吗?

(如果我的英语听起来很奇怪,我很抱歉。)

4

2 回答 2

1

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

于 2010-04-13T03:47:05.543 回答
0

看了你的邮件后来到这里。我明白这个问题。经过一番谷歌搜索后,我发现你已经知道,Exposé 确实没有官方 API 或文档。我想到的一个非常丑陋的解决方案可能是让 Exposé 触发一个计时器,该计时器等于完全显示所有窗口所需的总时间(猜测这是恒定的)。如果在该计时器内向上滑动,则意味着 Exposé 仍将处于活动状态(isExposeBeingActivated()),因此您将触发取消而不是显示桌面。这不包括使用“慢动作” Exposé(通过 SHIFT 键)。也许您可以检测出它是正常的还是“慢动作”的 Exposé 通话?

如果这在您的应用程序范围内根本没有意义,真的很抱歉,我想我只是在说我想到的第一个解决方案。

干杯。

佩德罗。

于 2010-04-13T09:13:47.320 回答