2010-04-13 2 views
1

Я создаю приложение, которое эмулирует Multi-touch трекпад MacBook. Как вы, возможно, знаете, на трекпаде MacBookКак проверить, активировано ли Exposé или нет?

  • Если вы проведите пальцем по 4 пальцам вверх, он запускает Show Desktop.
  • Если вы проведите пальцем по 4 пальцам вниз, на экране появится Exposé.

Однако, если рабочий стол Show Desktop активирован, и вы проведите пальцем по 4 пальцам вниз, он вернется в нормальный режим. То же самое происходит с Exposé: если Exposé активируется, и вы проведите пальцем по 4 пальца вверх, он также вернется в нормальный режим.

Вот проблема: я использую сочетание клавиш F3, чтобы показать Exposé и F11, чтобы показать Show Desktop. Проблема в том, что когда рабочий стол Show Desktop активируется, если я нажму F3, он перейдет прямо к Exposé. И когда Exposé активируется, если я нажму F11, он пойдет прямо на Show Desktop. Но я хочу, чтобы вести себя как Trackpad, который я предполагаю, его код может выглядеть следующим образом

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

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

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

ответ

1

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

0

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

Действительно извините, если это не имеет никакого смысла в пределах области применения, думаю, я просто говорю первое решение, о котором я думал.

Cheers.

Pedro.