1

MacBook のマルチタッチ トラックパッドをエミュレートするアプリケーションを作成しています。ご存知かもしれませんが、MacBook のトラックパッドには

  • 4 本の指で上にスワイプすると、Show Desktop がトリガーされます。
  • 4 本の指で下にスワイプすると、Exposé が表示されます。

ただし、Show Desktop がアクティブ化されているときに 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 中にバックグラウンド プロセスを監視しようとしましたが、何も起こりませんでした。これに関する提案はありますか?

(私の英語が変に聞こえたらごめんなさい。)

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 に答える