スコープとフォールバックのルール
このページでは、Input.Observer がジェスチャに対してアクションを選ぶ方法を正確に説明します。どのウィンドウが対象になるか、どのグループがそれを所有するか、いつ グローバル グループが引き継ぐか、複数のアクションが実行可能なときにどれが優先されるかです。ホットキーとテキスト展開も同じグループのルールに従います。相違点は最後に示します。
用語
- スコープ: ジェスチャに対してアクションが試されるアプリ グループです。ジェスチャのスコープは 1 つで、フォールバック先の候補としてグローバルがあります。
- 所有グループ: ウィンドウが属する唯一のアプリ グループです。アプリ グループを参照してください。
- グローバルにフォールバック: 所有グループに何もない場合に、グローバル グループのアクションを試すことです。2 つのスイッチで制御され、両方がオンである必要があります。
- 全般 ページの ジェスチャが一致したとき カードにある グローバルにフォールバック: すべてのグループに一括で適用されます (既定でオン)。
- 各アプリ グループの これらのウィンドウでの動作 カードにある グローバルにフォールバック: そのグループに適用されます (既定でオン)。
対象になるウィンドウ
ジェスチャで対象になるウィンドウは、描画ボタンを押した時点でポインターの下にあるトップレベル ウィンドウ です。
- その後ストロークがどこへ行くかは関係ありません。メモ帳の上で始まりブラウザーの上で終わるストロークは、メモ帳のジェスチャです。
- ウィンドウ内のコントロール (テキスト ボックス、ブラウザーのページ) は、そのプログラムのウィンドウ全体として扱われます。
- 所有グループ、プロファイルの確認、領域のセルは、すべて 押した時点で 1 回だけ 決まります。描いている間にウィンドウ タイトルが変わったり、ジェスチャ中にプロファイルが切り替わったりしても、そのジェスチャの結果は変わりません。
判断の手順
押したとき
-
所有グループを見つけます。 次の順序でグループを確認し、ルールがウィンドウに一致する最初のグループで止まります。
- すべての無視グループ (無視グループ ページの上から下へ)
- すべてのアプリ グループ (アプリ グループ ページの上から下へ)
次のものは存在しないかのようにスキップされます: 有効 でないグループ、ルールのないグループ、ウィンドウが全画面表示の場合のみ が設定されていてウィンドウが現在全画面表示でない無視グループ。
-
無視グループが所有する場合: 押下はそのまま素通りします。それ以上は何も確認されません。グローバルへのフォールバックもジェスチャもなく、そのウィンドウではホットキーもテキスト展開も実行されません。無視グループを参照してください。
-
アプリ グループが所有する場合: ジェスチャを使用する がオンで、アクティブなプロファイルで適用される場合 (プロファイルを参照)、スコープはそのグループです。そうでない場合、スコープはグローバルになりますが、それは両方の グローバルにフォールバック スイッチがオンの場合だけです。そうでなければ押下はそのまま素通りします。
-
どのグループも所有しない場合: スコープはグローバルです。ここでは グローバルにフォールバック スイッチは関係ありません。グローバルがそのウィンドウ自身のグループだからです。
-
スコープとしてのグローバル が機能するのは、有効 で、ジェスチャを使用する がオンで、アクティブなプロファイルで適用される場合だけです。そうでなければ押下はそのまま素通りします。
-
除外ゾーン が、すべてのウィンドウ用とスコープのグループ用の両方について確認されます。ゾーンの中での押下はウィンドウに戻されます。除外ゾーンを参照してください。
-
キャプチャが始まります。 この時点で、スコープのグループと、それとは別にグローバルについて、領域のセルが決まります (領域を参照)。
手順 2~6 で素通りした押下は、そのまま遅延なく渡され、軌跡は描かれません。
離したとき
-
形状。 ストロークは、スコープのグループのトリガーが使う形状と、スコープのグループがフォールバックできる場合はグローバルの形状に対して採点されます。一致のしきい値以上で最も高い得点が勝ち、なければ何も一致しません。ストロークの照合方法を参照してください。
-
スコープのグループのアクション。 アクションを一覧の順序で、各アクションのトリガーを順に調べます。トリガーが合うのは次の場合です。
- 勝った形状に対するジェスチャ トリガーである。
- そのアクションがオンになっている。
- そのアクションがアクティブなプロファイルで適用される。
- 押した修飾キーが、トリガーが求めるものとちょうど同じである (修飾キーとタイミングを参照)。
- 使った描画ボタンを受け付ける。
- グループで領域がオンの場合は、押した位置の領域のセルを含む。
領域がオフの場合は、合う最初のトリガーが勝ちます。領域がオンの場合は、合うトリガーのうち セルが最も少ない ものが勝ち、同数の場合は最初のものが勝ちます。
-
グローバルにフォールバック するのは、手順 9 で何も合わず、次のすべてが成り立つ場合です: スコープのグループ自体がグローバルではない、両方の グローバルにフォールバック スイッチがオン、グローバルが有効で ジェスチャを使用する がオンでアクティブなプロファイルで適用される。その場合、グローバルのアクションが、グローバル自身の領域のセルを使って手順 9 とまったく同じように確認されます。
-
勝ったアクションを、一致したグループの前と後のアクションに挟んで 実行 します。前と後のアクションを参照してください。
-
何も合わない場合: 何も実行されず、押下は返されず、設定していれば 一致なし グローバル イベントが実行されます。
優先されるもの (順に)
| 状況 | ルール |
|---|---|
| 2 つのグループのルールがウィンドウに一致する | 無視グループがどのアプリ グループよりも優先されます。それ以外の場合は、その一覧で上にあるほうです。1 つのウィンドウを所有するグループは常に 1 つだけです。 |
| 所有グループにジェスチャのアクションがない | フォールバックが許可されていればグローバルのアクション。下にあるアプリ グループが使われることはありません。 |
| アプリ グループのアクションとグローバルのアクションの両方が合う | 修飾キー、ボタン、領域にかかわらず、常にアプリ グループのアクション。 |
| 2 つの形状がしきい値を超える得点になる | 得点の高いほう。 |
| 1 つのグループで 2 つのアクションが合う (領域オフ) | グループのアクション一覧で上にあるほう。 |
| 1 つのグループで 2 つのアクションが合う (領域オン) | トリガーが含むセルが少ないほう。同数なら一覧で上にあるほう。 |
| 1 つのアクションの 2 つのトリガーが合う | 領域オフ: 最初のトリガー。領域オン: 含むセルが少ないほう。同数なら最初のもの。どちらにしても同じアクションが実行されますが、押されたままの修飾キー など、選ばれたトリガー自身の設定が適用されます。 |
| 同じ形状に、修飾キーなしのトリガーと Shift を求めるトリガーがある | 合うのはどちらか一方だけです。修飾キーなしのほうはジェスチャ中に修飾キーをまったく必要とせず、もう一方は Shift を必要とします。 |
アクションは アクション ページで (上へ移動 と 下へ移動)、アプリ グループは アプリ グループ ページで並べ替えます。あるトリガーが常に別のトリガーを隠してしまう場合は、アプリ グループ ページとアクション エディターが警告します。
フォールバックのまとめ
| 状況 | フォールバックなし | フォールバックあり (両方のスイッチがオン) |
|---|---|---|
| どのグループもウィンドウを所有しない | グローバル | グローバル |
| 所有グループの ジェスチャを使用する がオフ | 押下は素通り | グローバル |
| 所有グループがアクティブなプロファイルで適用されない | 押下は素通り | グローバル |
| 所有グループにストロークのアクションがない | 一致なし | グローバルのアクションが試される |
| 無視グループがウィンドウを所有する | 押下は素通り | 押下は素通り |
| 所有グループがオフ (有効 がオフ) | このグループが存在しないかのように、その下のグループに対してウィンドウが照合される | 同じ |
| グローバルがオフ | グローバルが使われるはずの場所では何もない | 同じ |
トレイ メニューの グローバル アクション 項目は、グローバルの 有効 スイッチです。フォーカスのあるウィンドウのグループがグローバルにフォールバックしない間は、トレイ アイコンのツールヒントにそのことがグループ名と共に表示されます。トレイ アイコンを参照してください。
実例
例では次の設定を使います。
| 一覧 | グループ | ルール | アクション |
|---|---|---|---|
| 無視グループ | リモート デスクトップ | プログラム名 と完全に一致 mstsc.exe | なし |
| アプリ グループ、1 番目 | ブラウザー | プログラム名 と完全に一致 chrome.exe | 「左へスワイプ」に「戻る」、「下へスワイプ」に「タブを閉じる」 |
| アプリ グループ、2 番目 | テキスト ファイル | ウィンドウ タイトル で終わる .txt - メモ帳 | 「下へスワイプ」に「保存」 |
| アプリ グループ、3 番目 | メモ帳 | プログラム名 と完全に一致 notepad.exe | 「左へスワイプ」に「元に戻す」 |
| — | グローバル | なし | 「下へスワイプ」に「最小化」、「上へスワイプ」に「最大化」 |
例で特に断らない限り、両方の グローバルにフォールバック スイッチはオンです。
1. グループにある形状。 Chrome の上で「下へスワイプ」を描きます。ブラウザーが Chrome を所有し、「下へスワイプ」に「タブを閉じる」があるため、「タブを閉じる」が実行されます。同じ形状のグローバルの「最小化」に出番はありません。所有グループが常に優先されます。
2. グローバルにだけある形状。 Chrome の上で「上へスワイプ」を描きます。ブラウザーには「上へスワイプ」のものがないため、ジェスチャはグローバルにフォールバックし、「最大化」が実行されます。前後に挟まれるのは、ブラウザーではなくグローバルの前と後のアクションです。
3. フォールバックがオフ。 ブラウザーの グローバルにフォールバック をオフにして、Chrome の上で「上へスワイプ」を描きます。グローバルの形状はもう競合しないため、ストロークは「左へスワイプ」と「下へスワイプ」とだけ比較されます。どちらもしきい値に達しなければ、何も一致せず、一致なし イベントが実行されます。どちらかが達した場合 (雑なストロークではあり得ます)、そのアクションが実行されます。どちらの場合も右クリックは返されません。
4. 2 つのグループが一致し、最初のものだけが有効。 メモ帳で notes.txt というファイルを開いているため、タイトルは「notes.txt - メモ帳」です。テキスト ファイルとメモ帳の両方がこれに一致しますが、テキスト ファイルのほうが上にあるため、ウィンドウを所有します。「左へスワイプ」を描くと、テキスト ファイルもグローバルもその形状を使っていないため、比較される形状にすら含まれず、何も一致しません。ウィンドウが下にあるアプリ グループに移ることはないため、メモ帳グループの「元に戻す」はこのウィンドウでは決して実行されません。ここで「元に戻す」を使うには、それをテキスト ファイルに追加するか、メモ帳をテキスト ファイルより上に移動します。
5. 無視グループ。 リモート デスクトップのウィンドウ上で描きます。無視グループがそれを所有するため、押下はそのままリモート コンピューターに届きます。軌跡もグローバルもありません。そのウィンドウにフォーカスがある間は、ホットキーのアクションもテキスト展開も実行されません。
6. オフにしたグループと、ジェスチャをオフにしたグループ。 テキスト ファイルの 有効 をオフにして、「notes.txt - メモ帳」の上で「左へスワイプ」を描くと、今度はメモ帳がウィンドウを所有し、「元に戻す」が実行されます。テキスト ファイルをオンに戻し、代わりにその ジェスチャを使用する をオフにすると、再びテキスト ファイルがウィンドウを所有するため、メモ帳には決して届きません。ジェスチャはグローバルに行きますが、グローバルは「左へスワイプ」を使っていないため、何も実行されません。
7. プロファイル。 ブラウザーを「仕事」プロファイルに限定し、どのプロファイルもアクティブにしない状態にします。ブラウザーは引き続き Chrome を所有しますが適用されないため、Chrome 上のジェスチャはグローバルに行きます。「下へスワイプ」では「タブを閉じる」ではなく「最小化」が実行されます。ブラウザーの グローバルにフォールバック がオフの場合は、代わりに押下がそのまま素通りし、ページに プロファイル外ではウィンドウに何も適用されません という警告が表示されます。
ホットキーとテキスト展開
ホットキーとテキスト展開は、同じ無視グループ、グループの順序、有効 スイッチ、プロファイル、グローバルにフォールバック スイッチ、グローバル グループ、前と後のアクションを使います。異なる点は次のとおりです。
| ジェスチャ | ホットキー | テキスト展開 | |
|---|---|---|---|
| 対象になるウィンドウ | 押した時点でポインターの下にあるトップレベル ウィンドウ | キーを押した時点でフォーカスのあるウィンドウ | テキストを入力し終えた時点でフォーカスのあるウィンドウ |
| グループのスイッチ | ジェスチャを使用する | ホットキーを使用する | なし (テキスト展開 ページに全体用のスイッチが 1 つあります) |
| 領域、描画ボタン | あり | なし | なし |
| グループが決まるタイミング | 押した時点で 1 回 | キーを押すたび | 展開のたび |