高精度タッチパッドのチューニング (touchpad-tuning-guidelines)
OEM は、Windows ベースのデバイスでの既定のタッチパッド エクスペリエンスを、いくつかの方法で調整することができます。 ほとんどのユーザーのニーズは既定値で満たされるため、それを調整する必要があるのは、OEM の望む特定のエクスペリエンスが提供されない場合だけです (また、HorizontalOffset/SpaceBarOffset の場合は常に両方とも設定する必要があります)。
Note
レジストリを誤って変更すると、重大な問題が発生する可能性があるので注意してください。 必ず、以下の手順に注意深く従ってください。 保護を強化するには、変更する前にレジストリをバックアップしてください。 「Windows でレジストリをバックアップおよび復元する方法」をご覧ください。
次に示すチューニング可能なレジストリ値はすべて、タッチパッド デバイスの HKR ハードウェア キーにあります。
HKEY_LOCAL_MACHINE (HKLM)
バージョン 1903 より前の Windows では、グローバルな場所のみがサポートされていました。 既定のグローバルの場所は次のとおりです。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\PrecisionTouchPad
Windows バージョン 1903 以降では、このガイドの各レジストリ値は、最初に HKR キーの下でチェックされた後、見つからなかった場合は次に HKEY_LOCAL_MACHINE
キーの下でチェックされます。 これにより、値ごとに HKR の場所を使用して HKLM の既定値をオーバーライドできます。
偶発的なアクティブ化の防止
AAP は、キーボード操作イベントの後の短時間、マウスの移動やタップなどの特定の操作を抑制する、高精度タッチパッドの機能です。 特定のタイムアウトは、操作の種類、入力を受け取ったタッチパッドの領域、およびタッチパッドの設定にあるタッチパッドの感度と呼ばれるユーザー設定によって決まります。 より感度が高いということは、キーボード操作イベント後に入力を抑制する時間が短いことを意味します。 最大感度とは、AAP タイムアウトがゼロで、AAP が有効になっていないことを意味します。
チューニング可能パラメーター
Windows では、ユーザーが通常の使用中にキーボードまたはタッチパッドに手を乗せているときの誤入力を防ぐことができるよう、タッチパッド上の "カーテン" 領域の 2 つのクラスが定義されています。 これにより、タッチパッドは次の 3 つの領域に分割されます。
- 高感度領域: この領域では、入力の抑制が最小限になります
- カーテン領域: この領域では、しばらくの間、入力が抑制される可能性があります
- スーパーカーテン領域: タップのような特定の種類の入力がこの領域で発生した場合、ほぼ常に抑制されます
カーテンのサイズを明示的に指定する場合でも、SpaceBarOffset
と HorizontalOffset
を使用して、物理的なタッチパッドの配置情報を提供することを強くお勧めします。 これは、Windows でキーボード操作とポイント操作を切り替えるときに、一貫性のある予測可能なユーザー エクスペリエンスに関する決定を行うために必要です。 詳しくは、Windows 高精度タッチパッド デバイスの統合に関するガイドをご覧ください。
カーテン
3 つの値 CurtainLeft
、CurtainRight
、CurtainTop
が見つかった場合、これらをそれぞれのエッジからの距離としてカーテンが作成されます。 これら 3 つの値がすべて見つからない場合は、従来の構成 (後の従来のカーテンを参照) が使用され、その後に既定値が適用されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
CurtainTop | DWORD | Himetric | 0+ | 0 | Windows 10 バージョン 1903 以降 |
CurtainLeft | DWORD | Himetric | 0+ | 0 | Windows 10 バージョン 1903 以降 |
CurtainRight | DWORD | Himetric | 0+ | 0 | Windows 10 バージョン 1903 以降 |
CurtainBottom (オプション) | DWORD | Himetric | 0+ | 0 | Windows 10 バージョン 1903 以降 |
カーテン (暗黙)
カーテンの構成に関する従来のアルゴリズムでは、タッチパッド イベントの垂直位置に応じてカーテンのサイズが変更され、カスタマイズの柔軟性は高くありません。 今後は、SpaceBarOffset
と HorizontalOffset
の値のみを設定し、それ以外の場合は上で説明したように CurtainTop
などを使用してカーテンを構成することをお勧めします。
高感度領域は、キーボードの使用中または直後でも応答性を維持することを目的としています。
中央の線の両側の領域の幅 (上の図のゾーンの幅) は、次のように定義されます。
SpacebarOffset + AAPNonCurtainBaseWidth
これは、領域の幅の合計がこの値の 2 倍になることを意味することに注意してください。 この領域では、キーボードに近いほど手のひらが接触するリスクが大きくなるため、SpacebarOffset
が考慮されます。
領域の高さは、スペース バーを基準に定義され、タッチパッドの下端までの範囲になります。 ゾーンの上端までの距離は、次のように定義されます。
AAPNonCurtainTop - SpaceBarOffset
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
SpaceBarOffset | DWORD | Himetric | 0+ | 1000 | Windows 8.1 以降 |
HorizontalOffset | DWORD | Himetric | [任意] | 0 | Windows 8.1 - Windows 10 バージョン 1511 (0 以上の範囲)、Windows 10 バージョン 1511 以降 (任意の範囲) |
HorizontalOffsetIsNeg | DWORD | Himetric | 0-1 | 0 | Windows 8.1 以降 (Windows 10 バージョン 1511 では非推奨) |
AAPNonCurtainTop | DWORD | Himetric | 0+ | 1500 | Windows 10 バージョン 1607 以降 |
AAPNonCurtainBaseWidth | DWORD | Himetric | 0+ | 1500 | Windows 10 バージョン 1607 以降 |
スーパー カーテン
感度制限ゾーンは、タッチパッドの感度が最も低い領域です。 これは、ユーザーが意図的な使用の間に指を離さないタッチパッドの領域のために設計されています。 これらは既定では非常に小さく、非常に大きなデバイスの場合にのみ拡大する必要があることに注意してください。
上、左、右のゾーンのサイズは、それぞれのエッジからの距離として個別に定義されます。 次の表に示すレジストリ キーを使用します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
SuperCurtainTop | DWORD | Himetric | 0+ | 100 | Windows 10 バージョン 1511 以降 |
SuperCurtainLeft | DWORD | Himetric | 0+ | 100 | Windows 10 バージョン 1511 以降 |
SuperCurtainRight | DWORD | Himetric | 0+ | 100 | Windows 10 バージョン 1511 以降 |
SuperCurtainBottom | DWORD | Himetric | 0+ | 100 | Windows 10 バージョン 1903 以降 |
右クリック ゾーン
次のレジストリ値を使用すると、右クリック ゾーンを構成できます。 高さは、下端から測ったタッチパッド全体の高さのパーセンテージとして、RightClickZoneHeight
によって表されます。 RightClickZoneWidth
は、幅のパーセンテージでもあり、右手構成の場合は右のエッジから、スワップ マウス ボタン オプションが有効になっている左手構成の場合は左のエッジから測定されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
RightClickZoneHeight | DWORD | パーセント | 1 ~ 100 | 25 | Windows 10 バージョン 1507 以降 |
RightClickZoneWidth | DWORD | パーセント | 1 ~ 100 | 50 | Windows 10 バージョン 1507 以降 |
偶発的なアクティブ化の保護の抑制
次のキーを設定することは、AAP を無効にする [最大の感度] をユーザーが選択するのと同じことです。 このキーを設定すると、(上に示した) Windows 設定でのタッチパッドの感度設定は無効になります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\AAPDisabled
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
AAPDisabled | DWORD | 該当なし | 0-1 | 0 | Windows 10 バージョン 1511 以降 |
キーボードとマウスのコレクションの非マウスとしての検出
Windows には、特定のデバイスを除外できるレジストリ設定が用意されています。 これは次の場所にあります: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\IgnoredExternalMice
このキーを構成することは、レガシ タッチパッドを強制的に有効にすることと似ています。 詳細については、「レガシ タッチパッドの強制検出」を参照してください。
HKEY_CURRENT_USER (HKCU)
OEM は、以下の HKCU レジストリ値を変更して、ユーザーのタッチパッド設定を変更できます。 すべての値はレジストリ キー HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\PrecisionTouchPad
の下にあります。 新しいユーザー プロファイルの作成時に使用される既定値を変更するには、%SystemDrive%\Users\Default\NTUSER.DAT
にあるレジストリ ハイブに変更を加える必要があります。
マウスの接続時にタッチパッドをオンのままにする
この設定では、外部マウスが存在するときにタッチパッドを引き続きアクティブにすることを許可するかどうかを指定します。 非アクティブの場合、タッチパッドによって生成された入力はすべて無視されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
LeaveOnWithMouse | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
カーソル速度
この設定では、タッチパッドによって生成されたマウスの動作によりカーソルが移動する速度を指定します。 有効な値は 1 - 20 です (1 と 20 を含みます)。 この設定のユーザー インターフェイスでは、範囲が 2 - 20 (2 ずつ変化) に制限されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
CursorSpeed | DWORD | 該当なし | 1-20 | 10 | Windows 10 バージョン 1511 以降 |
クリック感度
この設定では、タッチパッドのハプティクス クリック検出がサポートされている場合、その相対感度を指定します。 有効な値は 0 - 100 です (0 と 100 を含みます)。 この設定のユーザー インターフェイスでは、範囲が 0 - 100 (50 ずつ変化) に制限されます。 これは "ボタン押下しきい値" 機能レポートのユーザー向け設定です。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
ClickForceSensitivity | DWORD | パーセント | 0 ~ 100 | 50 | Windows 11 ビルド 26027 以降 |
[タッチパッド フィードバック] セクション
Windows では、タッチパッド設定の [タッチパッド フィードバック] セクションの設定を変更できます。
フィードバックが有効
この設定では、サポートされているタッチパッドでハプティクス フィードバックを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
FeedbackEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 11 |
Note
優れたユーザー エクスペリエンスのためには、ハプティクス フィードバックを既定で有効にする必要があります。 このため、この値は 1
に設定されたままにする必要があります。
強度
この設定では、タッチパッドのハプティクス フィードバックの相対的な強度を指定します (サポートされている場合)。 有効な値は 0 - 100 です (0 と 100 を含みます)。 この設定のユーザー インターフェイスでは、範囲が 0 - 100 (25 ずつ変化) に制限されます。 これは "ハプティクス強度" 機能レポートのユーザー向け設定です。
Note
優れたユーザー エクスペリエンスのためには、ハプティクス フィードバックを既定で有効にする必要があります。 このため、この値は 0 以外の値に設定する必要があります。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
FeedbackIntensity | DWORD | パーセント | 0 ~ 100 | 50 | Windows 11 |
[タップ] セクション
Windows では、タッチパッド設定の [タップ] セクションの設定を変更できます。
タッチパッドの感度
この設定は、タッチパッドの感度レベルを指定します。 タッチパッドの感度が高いほど、キーボード アクティビティの後にマウス入力の生成が抑制されにくくなります。 値を小さくすると、感度が高くなります (0 は感度が最高であることを示します)。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
AAPThreshold | DWORD | 該当なし | 0-4 | 2 | Windows 10 バージョン 1511 以降 |
1 本指でタップして 1 回クリック
この設定では、1 本指でのタップを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
TapsEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
2 本指でタップして右クリック
この設定では、2 本指でのタップを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
TwoFingerTapEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
2 回タップとドラッグで複数選択
この設定では、タップアンドドラッグのジェスチャを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
TapAndDrag | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
タッチパッドの右下隅を押して右クリック
この設定では、タッチパッドの右下隅を押したときに、左クリックの代わりに右クリックが生成されるかどうかを指定します。 ユーザーがマウスの左右のボタン (GetSystemMetrics(SM_SWAPBUTTON)
が true) を入れ替えた場合、右クリック ゾーンはタッチパッドの左下隅に水平方向にミラー化されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
RightClickZoneEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
[スクロールとズーム] セクション
Windows では、タッチパッド設定の [スクロールとズーム] セクションの設定を変更できます。
Note
現在、タッチパッドのスクロールまたはズームの速度を変更することはできません。
Drag two fingers to scroll
この設定では、2 本指でのパンを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
PanEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
スクロール方向
この設定では、コンテンツが 2 本指でのパンでコンテンツをスクロールする方向を反転するかどうかを指定します。 既定の状態では、タッチパッドの接点を上方向に動かすと、コンテンツが下方向にスクロールし、接点を左方向に動かすと、コンテンツが右方向にスクロールします。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
ScrollDirection | DWORD | 該当なし | 0-1 | 0 | Windows 10 バージョン 1511 以降 |
ピンチ操作によるズーム
この設定では、2 本指でのズームを有効にするかどうかを指定します。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
ZoomEnabled | DWORD | 該当なし | 0-1 | 1 | Windows 10 バージョン 1511 以降 |
ユーザー インターフェイスが存在しない設定
次の設定は Windows でサポートされていますが、設定アプリケーションでユーザーには公開されていません。
マウスの加速度
この設定では、タッチパッドによって生成されたマウスの動作に、SystemParametersInfo(SPI_GETMOUSE)
で返されたユーザーのマウスの加速度設定を適用するかどうかを指定します。 0 の場合、マウスの動作には常に加速度が適用されます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
HonorMouseAccelSetting | DWORD | 該当なし | 0-1 | 0 | Windows 10 バージョン 1511 以降 |
右クリック ゾーンの幅
この設定では、タッチパッドの右クリック ゾーンの相対的な幅を指定します。 有効な値は 0 - 100 です (0 と 100 を含みます)。 0 以外の場合、デバイスの構成がオーバーライドされます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
RightClickZoneWidth | DWORD | パーセント | 0 ~ 100 | 0 | Windows 11 ビルド 26027 以降 |
右クリック ゾーンの高さ
この設定では、タッチパッドの右クリック ゾーンの相対的な高さを指定します。 有効な値は 0 - 100 です (0 と 100 を含みます)。 0 以外の場合、デバイスの構成がオーバーライドされます。
レジストリ値 | Type | ユニット | Range | 既定値 | 対象 |
---|---|---|---|---|---|
RightClickZoneHeight | DWORD | パーセント | 0 ~ 100 | 0 | Windows 11 ビルド 26027 以降 |
設定の動的なクエリと変更
Windows 11 ビルド 26027 以降、ユーザーのタッチパッド設定を SystemParametersInfo
API 経由で動的に照会したり、変更したりできます。 次に例を示します。
// Get the user's touchpad settings.
TOUCHPAD_PARAMETERS params = {};
params.versionNumber = TOUCHPAD_PARAMETERS_LATEST_VERSION;
RETURN_IF_WIN32_BOOL_FALSE(
::SystemParametersInfo(SPI_GETTOUCHPADPARAMETERS, sizeof(params), ¶ms, 0 /*fWinIni*/));
// Override the touchpad's right-click zone to have a 50% width and 33% height.
// NOTE: changing user settings should only be performed in response to explicit user intent.
params.rightClickZoneWidth = 50;
params.rightClickZoneHeight = 33;
RETURN_IF_WIN32_BOOL_FALSE(
::SystemParametersInfo(SPI_SETTOUCHPADPARAMETERS, sizeof(params), ¶ms, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE));
SystemParametersInfo
のあらゆる呼び出しと同様に、設定を正しく照会または変更するため、プロセスはユーザーのアカウントで実行する必要があります。