フリック ジェスチャ
Windows Vista には、8 つの基本的な フリック ジェスチャのセットが含まれています。 フリックは、スクロール操作とコマンドに関連付けられた、すばやく直線的なペンの動きです。
フリックの詳細
フリック機能を使用すると、ペンで簡単なジェスチャを行うことで、一般的なアクションを実行できるようにすることで、タブレット PC と対話する新しい方法がユーザーに提供されます。 フリックは、左右のタップ、スクロール、手描き入力などの通常のユーザー 操作と共存し、中断しません。
フリックは一方向のペン ジェスチャであり、ユーザーはすばやくフリックするモーションでデジタイザーに接続する必要があります。 フリックは高速で直線性が高い特徴です。 フリックは、その方向によって識別されます。 フリックは、カーディナルコンパスとセカンダリコンパスの方向に対応する8方向に行うことができます。
アクションまたはフリック アクションは、フリックに応答して実行されるアクションまたはショートカットです。 フリックはアクションにマップされます。 次の図は、そのフリック アクションに対応する 8 つのペン フリックの図を示しています。
ユーザーがタブレット PC のデジタイザー上でペンを移動すると、ハードウェアはタブレット PC プラットフォームのペン入力サブシステムにルーティングされるペン パケットを生成します。 通常、ペンがマウスの代わりに使用されている場合、ペン入力サブシステムはこれらのペン パケットを受け取り、変更を加えた場合は、マウス入力の処理を担当する Windows コンポーネントである User32 に送信します。 ペンが手描き入力サーフェイスで使用されている場合は、マウス パケットが生成されるのではなく、インクがレンダリングされます。
フリック検出ルーチンは、ペン入力サブシステムに実装されます。 フリック検出はペンダウンから開始され、次のいずれかになるまで続行されます。
受信したパケットのシーケンスは、フリックまたは
ペンアップが発生します。
フリック検出が行われている間、ペン パケットは保留され、システムに送信されません。 パケットを送信すると、実行されるフリック アクションに干渉する可能性があるため、これを行う必要があります。 たとえば、コピー アクションにマップするフリック中にパケットを送信すると、選択された内容が無視されます。つまり、アクションが送信された時点でコピーするものは何もありません。
パケットがペン入力サブシステムに流れ込むにつれて、フリック検出ルーチンは、実行されるモーションの長さ、速度、時間、および曲率に関するメトリックを計算します。 各パケットが到着すると、検出ルーチンによってこれらの各メトリックが更新されます。 いずれかのメトリックがフリックの構成範囲外になるとすぐに、フリック検出が終了し、パケットが経由して送信されます。
フリックが検出される場所
フリック ジェスチャは、ドラッグが通常かなり遅く実行されるという事実によって可能になります。 ユーザーは、最初にドラッグの開始点をターゲットにし、ドラッグを実行してから終点をターゲットにする必要があります。 通常、これはフリックとして資格を得るには時間がかかりすぎます。 ただし、手描き入力サーフェスでは、フリックが頻繁に発生すると見なされるクイック ストロークが発生します。't' の交差は一般的な例です。 したがって、既定では、フリック検出は手描き入力サーフェス上でオフになり、システム全体でオンになります。
フォーカスの問題
フリックが検出されると、一連のイベントが開始され、最終的に発生したフリックに応答して特定のアクションが実行されます。 まず、ペン入力サブシステム内の検出ルーチンによって、フリックの送信先となるウィンドウが決定されます。 これは通常、フォーカスがあるウィンドウですが、例外があります。 フリックをスクロールすると、フリックが発生したウィンドウにフリックが送信されます。 これは必ずしもフォーカスのあるウィンドウではないことに注意してください。 フォーカスのないウィンドウにフリックが送信された場合、フォーカスはそのウィンドウに変更されません。
フリック アクション
ターゲット ウィンドウが決定されると、既定またはプログラムされたイベントの動作に応じて、そのウィンドウがフリック自体を処理する場合があります。 アプリケーションは、アプリケーションとフリックの方向と位置に基づいて、最も適切なアクションに応答できます。 たとえば、マッピング アプリケーションでは、上下のフリックは、既定の動作と同様に、垂直方向にスクロールするのではなく拡大または縮小される場合があります。
フリックが発生したことをアプリケーションに警告するために、ウィンドウ メッセージが送信されます。 このウィンドウ メッセージには、フリックの開始点とフリックの方向の両方が含まれています。 アプリケーションがこのウィンドウ メッセージを処理する場合、ペン入力サブシステムによってそれ以上のアクションは実行されません。
フリックが検出されると、フリックアクションを表す視覚的フィードバックが画面に表示されます。 このフィードバックは、2 つの目的に役立ちます。 最初に、フリックが成功したことをユーザーに確認します。 次に、実行されたアクションをユーザーに通知し、ユーザーがフリックの方向を関連付けられたアクションに接続するのに役立ちます。
フリック フィードバックは 2 つの部分で構成されます。アクションを表すアイコンと、アクションの名前を含むラベル。 ラベルがアイコンの下に表示されます。 フリックが検出された直後にフィードバックが表示されます。 アプリケーションはフリック ウィンドウ メッセージを処理することでフリックに応答して動作をカスタマイズできますが、アプリケーションはフリックフィードバックを無効にしたり変更したりすることはできません。
ほとんどのアプリケーションはフリックに対応していないため、上記のウィンドウ メッセージは処理されません。 メッセージが処理されない場合、ペン入力サブシステムはさらにアクションを実行します。 最初に、検出されたフリックの方向に関連付けられているアクションを検索します。 次に、ターゲット ウィンドウにこのアクションを実行させる手順 (以下の表で説明) を実行します。 フリック アクションの多くでは、これにはアプリケーション コマンドの送信が含まれますが、実装されている特定のアクションは送信されません。
アプリケーション コマンドの処理
アプリケーションは、フリック ジェスチャに割り当てられる可能性のある任意のアプリケーション コマンドに応答する必要があります。 アプリケーションが WM_TABLET_FLICK メッセージに応答できない場合、Windows Vista は該当する WM_APPCOMMAND 通知を送信し、その後に WM_KEYDOWN 通知を送信してフォローアップします。
フリックに割り当てることができるアプリケーション コマンドの一覧を次に示します。バックアップ キーストローク メッセージが送信される可能性があります。
コマンド | バックアップのキーストローク |
---|---|
APPCOMMAND_BROWSER_BACKWARD |
None |
APPCOMMAND_BROWSER_FORWARD |
None |
APPCOMMAND_COPY |
Ctrl + C |
APPCOMMAND_PASTE |
Ctrl + V |
APPCOMMAND_UNDO |
Ctrl + Z |
APPCOMMAND_DELETE |
Del |
APPCOMMAND_CUT |
Ctrl + X |
APPCOMMAND_OPEN |
Ctrl + O |
APPCOMMAND_PRINT |
Ctrl + P |
APPCOMMAND_SAVE |
Ctrl + S |
APPCOMMAND_REDO |
Ctrl + Y |
APPCOMMAND_CLOSE |
コピー、貼り付け、切り取り、削除などの編集コマンドは、選択範囲またはフリック ジェスチャのベースにあるオブジェクトに対して送信される場合があります。 選択されていない場合は、 FLICK_POINT構造体 のデータを使用して、オブジェクトが編集コマンドのターゲットであった可能性のあるものを判断できます。