我正在创建一个模拟MacBook多点触控板的应用程序。您可能知道,在MacBook的触控板上
但是,如果正在激活“显示桌面”并向下滑动4个手指,它将返回到正常模式。 Exposé也是如此:如果激活Exposé并向上滑动4根手指,它也会恢复正常模式。
问题在于:我使用键盘快捷键F3显示Exposé和F11以显示Show Desktop。问题是,当激活Show Desktop时,如果按F3,它将直接进入Exposé。当Exposé被激活时,如果按F11,它将直接进入Show Desktop。但我希望它的行为类似于触控板,我猜它的代码可能看起来像这样
- FourFingersDidSwipeUp {
if (isExposeBeingActivated() || isShowDesktopBeingActivated()) {
pressKey("Esc");
} else {
pressKey("F11");
}
}
但我不知道如何实现“isExposeBeingActivated()”和“isShowDesktopBeingActivated()”方法。我已经尝试创建一个窗口并检查它的大小是否已经改变(假设如果激活Expose,它的大小应该更小),但系统总是返回相同的大小。我尝试在Expose期间监视后台进程,但没有任何反应。对此有什么建议吗?
(如果我的英语听起来很奇怪,我很抱歉。)
答案 0 :(得分:1)
据我所知,除了能够指定自己应用程序窗口的“收集行为”之外,没有任何与Exposé相关的功能的公共接口。
答案 1 :(得分:0)
在阅读完电子邮件后来到这里。我理解这个问题。经过一番谷歌搜索后,我发现了你已经知道的内容,确实没有Exposé的官方API或文档。我想到的一个非常难看的解决方案可能是让Exposé触发一个计时器,该计时器等于完全显示所有窗口所需的总时间(猜测这是不变的)。如果在该计时器内完成向上滑动,则意味着Exposé仍然处于活动状态(isExposeBeingActivated()),因此您将触发取消而不是Show Desktop。这不包括使用“慢动作”Exposé(通过SHIFT键)。也许你可以检测到它是正常的还是“慢动作”的Exposé电话?
真的很抱歉,如果这在你的应用程序范围内根本没有意义,我想我只是在说第一个我想到的解决方案。
干杯。
佩德罗。