Как я могу проверить, активирован ли Exposé или нет? - PullRequest
1 голос
/ 13 апреля 2010

Я создаю приложение, эмулирующее сенсорный трекпад MacBook. Как вы знаете, на трекпаде MacBook

  • Если вы проведете 4 пальца вверх, это вызовет показ рабочего стола.
  • если вы проведете 4 пальца вниз, это покажет Exposé.

Однако, если активирована функция «Показать рабочий стол» и вы проводите четырьмя пальцами вниз, он вернется в обычный режим. То же самое касается 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");
    }
}

Но я не знаю, как реализовать методы "isExposeBeingActivation ()" и "isShowDesktopBeingActivation ()". Я попытался создать окно и проверить, изменился ли его размер (при условии, что если активируется Expose, его размер должен быть меньше), но система всегда возвращает один и тот же размер. Я пытался отслеживать фоновые процессы во время Expose, но ничего не произошло. Кто-нибудь знает какие-либо предложения по этому поводу?

(извините, если мой английский звучит странно.)

Ответы [ 2 ]

1 голос
/ 13 апреля 2010

Насколько я знаю, нет общедоступного интерфейса к какой-либо функциональности, связанной с Exposé, кроме возможности указать "поведение коллекции" окон вашего собственного приложения.

0 голосов
/ 13 апреля 2010

пришел сюда после прочтения вашего письма.Я понимаю проблему.После небольшого поиска я узнал, что вы уже знаете, что на самом деле нет официального API или документации для Exposé.Очень уродливое решение, о котором я думал, могло бы иметь Exposé, запускающий таймер, равный общему времени, которое требуется, чтобы показать все окна полностью (предполагая, что это постоянно).Если в этом таймере будет проведен скачок вверх, это будет означать, что Exposé все еще будет активен (isExposeBeingActivation ()), поэтому вы вызовете отмену вместо Show Desktop.Это не распространяется на использование «медленного» Exposé (с помощью клавиши SHIFT).Может быть, вы можете определить, является ли это обычным или медленным вызовом Exposé?

Очень жаль, если это вообще не имеет смысла в рамках вашего приложения, наверное, я просто говорю первое решение, которое мне показалосьof.

Приветствия.

Pedro.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...