【ポインターイベント】

ポインターイベント とは?

最終更新:
💡 マウス・指・ペンの入力を、共通の形で扱う

マウス・タッチ・ペンの入力を共通のイベントで扱うPointer Events。入力の識別、pointercancel、ポインターキャプチャと、CSSのpointer-eventsとの違いを解説します。

📌 このページのポイント
ポインター入力:終了と中断を扱うマウスタッチペン共通のイベントで扱う例:pointerdown → pointermove通常の終了pointerup操作の中断pointercancelどちらも、操作中の状態を片付けるキーボード操作は別に対応する
移動せず離す場合もあり、常にこの順のイベントが来るわけではありません。pointerIdで入力を区別し、中断も処理します。CSSのpointer-eventsは宛先に関する別の仕組みです。
ひよこ ひよこ
ポインターイベントは、何をまとめる?
ペンギン先生 ペンギン先生
マウス、タッチ、ペンなどの入力を共通のイベントモデルで扱うよ。pointerdownで押し始め、pointermoveで移動、pointerupで離す操作などを受け取れる。入力方法ごとにすべて別の処理を書く負担を減らせるんだ。
ひよこ ひよこ
指が二本あっても、区別できる?
ペンギン先生 ペンギン先生
pointerIdで、それぞれの入力を区別できるよ。pointerTypeではmouse・touch・penなどの種類も分かる。ただし、種類や追加情報がどこまで得られるかは、機器や環境による。すべての入力が同じ情報を持つわけではないんだ。
ひよこ ひよこ
ペンなら、筆圧も読める?
ペンギン先生 ペンギン先生
対応していればpressureで筆圧などの値を得られる。傾きや接触の大きさに関する情報もあるけれど、非対応の機器では代わりの値などになる。値があるだけで本物の筆圧が測れたと判断せず、必要な情報と対応を確認しよう。
ひよこ ひよこ
最後は、必ずpointerupが来る?
ペンギン先生 ペンギン先生
操作が中断されるとpointercancelが来る場合もある。たとえば、ブラウザーがタッチ操作をスクロールとして扱う場面だよ。ドラッグ中の状態などは、通常の終了と中断の両方で片付ける。touch-actionでは、ブラウザーに許可するスクロールなどの操作を指定できる。
ひよこ ひよこ
ドラッグして、要素の外へ出たら?
ペンギン先生 ペンギン先生
ポインターキャプチャを使うと、そのポインターのイベントの宛先を指定した要素へ向けられる。つまみから外れても動きを扱う場面に使えるよ。カーソルを閉じ込める機能ではなく、解除やpointerup・pointercancelでキャプチャも終わるんだ。
もっと詳しく知りたい人へ

CSSのpointer-events: noneは、同じAPI?

別の仕組みです。CSSのpointer-eventsは、要素がポインターイベントの対象になる条件を指定します。noneを指定しても、Tabキーでフォーカスできる場合があり、フォーム部品を無効にする処理の代わりにはなりません。

ポインターに対応したら、キーボードは不要?

不要にはなりません。ボタンなどはキーボードでも操作できるようにします。マウス用コードの名前を置き換えるだけでなく、複数入力、中断、ブラウザーの操作、キーボード対応まで含めて設計します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ポインターイベント」って出てきたら「マウス・タッチ・ペンの入力を、共通の形で扱うイベント」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pointer Events」 = 画面の位置を指す操作のイベント
💬 入力方法の違いを共通のイベントモデルで扱います。キーボード操作まで、すべてポインター操作に置き換える仕組みではありません。

参考資料

← 用語集にもどる