Windows ペンの状態
このトピックでは、Windows 10 以降のオペレーティング システムの Windows ペン デバイスのペンの状態について説明します。
主な状態
ペンのさまざまな物理的な位置や向き、これらの位置に伴うシナリオ、およびある位置から別の位置への移行をどのように報告するかを理解しておくことが重要です。
範囲外
これは、Windows ペンの最もシンプルなシナリオで、ユーザーがデジタイザーの検出範囲外でペンを持っているときの状態です。
この状態では (前の図を参照)、オペレーティング システムに入力レポートは送信されません。
範囲内
これは Windows ペンの一般的なシナリオで、ユーザーがデジタイザーの検出範囲内でペンを持っているときの状態です。
この状態では (前の図を参照)、ペンの位置と範囲内スイッチが SET の状態を示す入力レポートがオペレーティング システムに継続的に送信されます。 オペレーティング システムとアプリケーションには、範囲内のペンからの応答として、カーソルまたはその他のフィードバックが表示されます。
接触中
これは Windows ペンで最もよくあるシナリオで、ユーザーが画面の表面にペン先を押し当てているときの状態です。
この状態では (前の図を参照)、ペンの位置、範囲内スイッチが SET、先端スイッチが SET、および先端の圧力を含む入力レポートがオペレーティング システムに継続的に送信されます。 オペレーティング システムとアプリケーションは、画面の表面に接触しているペンに反応して、インクを出したり、その他のアクションを行ったりできます。
範囲外 (消去目的)
この Windows ペン シナリオでは、ペンがデジタイザーの検出範囲外にあるときに、ユーザーがペンを反転したか、消去ボタンを押し下げたことによって、ペンの消去機能が有効になります。 ペンの消去機能は、消去 "アフォーダンス" とも呼ばれます。
この状態では (前の図を参照)、オペレーティング システムに入力レポートは送信されません。
範囲内 (消去目的)
これは Windows ペンの一般的なシナリオで、ユーザーがデジタイザーの検出範囲内でペンを持ち、ペンを反転するか、消去ボタンを押し下げることによって消去アフォーダンスを有効にした状態です。
この状態では (前の図を参照)、ペンの位置、範囲内スイッチが SET、反転スイッチが SET を示す入力レポートがオペレーティング システムに継続的に送信されます。 オペレーティング システムとアプリケーションは、検出範囲内のペンの反応として、消去する目的でカーソルやその他のフィードバックを表示できます。
消去
これは Windows ペンの一般的なシナリオで、ユーザーがペンを画面の表面に押し当てており、ペンを反転するか消去ボタンを押し下げることによって消去アフォーダンスを有効にした状態です。
この状態では (前の図を参照)、ペンの位置、範囲内スイッチが SET、消しゴム スイッチが SET の状態を示す入力レポートがオペレーティング システムに継続的に送信されます。 後端部に実装された消去機能を使用するペンについては、反転スイッチもこの状態に SET されている必要があります。 オペレーティング システム とアプリケーションは、インクを消去したり、消去に伴うその他のアクションを実行できます。
Windows ペンの状態の遷移
次の図は、(消しゴムの実装に関係なく) Windows ペンの一連の有効な遷移を示しています。 この状態においてデジタイザーからオペレーティング システムにレポートが送信されない場合、単独の状態が範囲外に対して定義されます (消去アフォーダンスがアクティブ化されるかどうかは関係ありません)。
消去なしの遷移
ペンがデジタイザーの検出範囲に入ったときに消去アフォーダンスがアクティブ化されていない場合の (消しゴムの実装状態にかかわらず) ペンの状態遷移を、"Pen is out of range" から "Pen is in range" に移行する円弧として以下の図に示します。ペンが画面の表面に向かって移動して接触したときに、消去アフォーダンスがまだアクティブ化されていない場合は、図ではペンの状態遷移を "Pen is in range" から "Pen is in contact" として示します。
ペンが画面の表面から離れ、デジタイザーの検出範囲内にあるときの状態遷移は、"Pen is in contact" から "Pen is in range" への円弧になります。この遷移の一環として、先端スイッチがクリアされ、ペンが最後に接触していた画面上の場所を示す 1 件の入力レポートがオペレーティング システムに送信されます。 ペンがデジタイザーの検出範囲外に離れると、この状態遷移は "Pen is in range" から "Pen is out of range" への円弧として示されます。この遷移の一環として、すべてのスイッチがクリアされ、ペンが最後に範囲内にあったときの場所を示す 1 件の最終入力レポートがオペレーティング システムに送信されます。
消しゴムの遷移
ペンがデジタイザーの検出範囲に入ったときに消去アフォーダンスがアクティブ化されている場合の (消しゴムの実装状態にかかわらず) ペンの状態遷移を、"Pen is out of range" から "Pen is in range with intent to erase" に移行する円弧として以下の図に示します。ペンが画面の表面に向かって移動して接触したときに、消去アフォーダンスがまだアクティブ化されている場合は、この状態遷移は "Pen is in range with intent to erase" から "Pen is erasing" への円弧として表されます。
ペンが画面の表面から離れ、デジタイザーの検出範囲内にあるときの状態遷移は、"Pen is in erasing" から "Pen is in range with intent to erase" への円弧になります。この遷移の一環として、消しゴム スイッチがクリアされ、ペンが最後に接触していた画面上の場所を示す 1 件の入力レポートがオペレーティング システムに送信されます。 ペンがデジタイザーの検出範囲外に離れると、この状態遷移は "Pen is in range with intent to erase" から "Pen is out of range" への円弧として示されます。この遷移の一環として、すべてのスイッチがクリアされ、ペンが最後に範囲内にあったときの場所を示す 1 件の最終入力レポートがオペレーティング システムに送信されます。
消しゴム ボタンの実装に関する特記事項
後端部に実装された消しゴムとは異なり、ボタンベースの実装では、ペンを "範囲外" の状態に遷移させることなく、ユーザーが消去アフォーダンスを物理的にアクティブ化/非アクティブ化できます。 しかし、これは基になるプロトコルではサポートされていません。
消しゴム ボタンが付いたペンが画面に接触しているいる間は、ボタンが押されるか解放されるかに関係なく、ペンが画面から離れるまで消しゴム スイッチの状態を保持することを強くお勧めします。 "Pen is in contact" 状態のときに誤って消しゴム ボタンが押されたり、"Pen is erasing" 状態のときに誤って消しゴム ボタンが離されたりすることがよくありますが、"Pen is out of range" 状態を経由した遷移によって、ユーザー エクスペリエンスが非常に不快になることがあります。
ペンがデジタイザーの検出範囲内にあるが、画面に接触していない間は、消去アフォーダンスのアクティブ化/非アクティブ化を優先させるべきです。 しかし、"Pen is in range" から "Pen is in range with intent to erase" への直接的な遷移はサポートされていないため、このシナリオでは、ペンの状態は常に "Pen is out of range" 経由で遷移されます。
たとえば、ペンがデジタイザーの検出範囲内にあるが画面と接触していないときに消去ボタンが押された場合は、すべてのスイッチがクリアされ、ペンが範囲内にあった最後の場所を示す 1 件の入力レポートが送信されます。それに続いて、反転スイッチが SET で、範囲内スイッチが SET の継続的レポートが送信されます。
反対に、ペンがデジタイザーの検出範囲内にあるが画面と接触していないときに消去ボタンを離したときは、すべてのスイッチがクリアされ、ペンが範囲内にあった最後の場所と、反転スイッチが SET の状態を示す 1 件の入力レポートが送信されます。 この後、反転スイッチがクリアされ、範囲内スイッチが SET の継続的レポートが送信されます。
ファームウェア更新コレクション (省略可能)
統合 Windows ペン デバイスは、Windows 10 の HID プロトコルを使用してベンダー固有の最上位コレクションを提供し、デバイス ファームウェアやベンダー構成の更新を行うことができます。
ベンダー固有のファームウェア更新コレクションは、ファームウェア ペイロードをホストからデバイスに転送するための出力レポートを提供できます。 これは、ホスト上のドライバーを必要とせずにファームウェアの更新を実行できる点で非常に便利です。
HID I²C 記述子メンバー wVersionID をファームウェアのアップグレード後にインクリメントする場合に必須です。
統合 Windows ペン デバイスは、電源障害 (または他のエラー) によりファームウェア更新が失敗しても、いったん電源を落として再投入すれば回復できるようになっています。 ファームウェアの更新に失敗した後も、基本的な機能を使用できるようにすることを強くお勧めします。
パーム リジェクション
Windows 10 以前では、範囲内または画面に接触しているペン デバイスから入力を受け取った場合、オペレーティング システムでは (インク モードでも消去モードでも) すべてのタッチ入力を抑制していました。
Windows 10 バージョン 1607 では、ペンとタッチの同時操作を支援するために、デッドゾーンがよりコンパクトになっています。 変更されたデッドゾーンでは、意図しないタッチのほぼ 95% を捉えつつ、優れたエンドユーザー エクスペリエンスも維持しています。
左利きユーザーの場合、デッドゾーンは 100 - 270 度の範囲で、放射状には最大で 12 cm です。
右利きユーザーの場合、デッドゾーンは 280 - 30 度の範囲で、放射状には最大で 12 cm です。
オペレーティング システムでは、ユーザーの利き手の設定に応じて、ペン先の左側か右側からのタッチ操作を受け入れます。 右利きユーザーはペン先の左側から (前の図を参照)、左利きユーザーの場合はペン先の右側からタッチ操作を受け入れます。 既定では、ペンは右利きユーザー向けに構成されていますが、以下に示すように [設定] を開いて [デバイス] をクリックし、[ペン] ダイアログ ウィンドウを開くことで簡単に変更できます。 しかし、Windows 8.1 のパーム リジェクションの動作を好むユーザーもいるでしょう。 そのようなユーザー向けに、Windows 10 では、ペンが範囲内に入ったときにすべてのタッチ入力を無視する設定を提供しています。
Note
レガシ デバイス (具体的には、ペン入力の送信時にタッチ入力を抑制するデバイス) は Windows 10 で機能しますが、これらのデバイスは上記の機能を提供しません。 さらに、これらのデバイスでは、ペンとタッチの同時レポートを利用する将来の機能は提供されません。
Windows 10 以降では、ペンとタッチの同時レポートをサポートしていないシステムでこの設定を非表示にするには、次のレジストリ キーを使用します。 キーを 0 に設定すると、ユーザーに設定が表示されます。一方、1 に設定すると非表示になります。
レジストリ キー | Type | ユニット |
---|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Pen\HideSPTSettings | DWORD | ブール値 (1 または 0) |
ペンが範囲内にあるときのタッチ操作
前述のように、Windows 10 では、タッチ/ペンの同時レポートをサポートするハードウェア上で、ペンが範囲内でもタッチ操作を実行できます。 ただし、ペンが範囲内から画面に接触している状態に遷移すると、すべてのタッチ操作が抑制されます。 これは、Windows の旧バージョンと同じ動作です。
手描き入力面でのズーム遅延
Windows 10 に組み込まれたパーム リジェクション機能は、手のひらがデジタイザー表面に接触する前に、ペンがデジタイザーの範囲内で検出された場合に最も奏功します。 しかし、手のひらが接触したときの速度や、ペン デジタイザーの検出しきい値の制限によっては、ペンが検出される前に手のひらが接触することがあります。
ペンの位置が報告される前に、複数のタッチ接点として手のひらがオペレーティング システムに報告されることによる最たる悪影響の 1 つとして、手描き入力面のズーム レベルが意図せずして変わる可能性があることが挙げられます。 Windows 10 では、ペンを検出するまでに余裕をもたせるために、手描き入力面でのすべてのピンチ/ズーム操作に 250 ms の遅延を適用することで、このような動作を既定で防止しています。 この遅延は、統合ペンを使用するシステムでのみ適用されます。
グローバルな遅延値 (既定では 250 ms) は、Windows レジストリを通じて OEM によって構成できます。 検出しきい値が小さいペン デジタイザーの場合は、ペンが検出される前に手のひらが接触する可能性が高いため、遅延値 (最大 500 ms) を増やすことをお勧めします。
検出しきい値が大きい、および/またはパーム リジェクションが組み込まれたタッチ ソリューションを備えたペン デジタイザーの場合は、この値を減らすことをお勧めします (最小 0 ms)。
ピンチ/ズーム遅延値を設定するために使用されるレジストリ キーを次に示します。
レジストリ キー | Type | ユニット |
---|---|---|
HKLM\SOFTWARE\Microsoft\Palm\DelayManipulationDuration | DWORD | ミリ秒 (ms) |
なお、このレジストリ設定と、関連する遅延ズーム機構は、統合ペン デジタイザーを公開している Windows 10 システムでのみ有効であることに注意してください。