Summary

  • 2012年の Pointer Lock 草案は、カーソルを隠して一つの要素へマウスイベントを送り、画面の端に妨げられない相対移動をゲームに渡した。
  • 2016年の W3C 勧告は、ブラウザーが常に既定の解除操作を用意するよう定めた。キーボードでは Esc を推奨する。人がその操作で出た後、ページが再びロックするには新しい働きかけが要る。

一人称視点のゲームで右を向く。普通のカーソルがディスプレーの右端へ着くと、手はまだ動いているのに画面の景色は止まる。立体模型をぐるりと回したい設計者も、ドラッグが端で尽きる。2012年5月の W3C 最初の公開草案 は大胆な手品を提案した。システムのカーソルを隠し、マウスのイベントを一つの要素へ集め、位置ではなく移動量を渡す。モニターの寸法は変わらないのに、視点は回り続けられる。

これは長いドラッグではない。従来のマウス捕捉はボタンを離せば終わる。Pointer Lock はボタンを押さなくても続き、カーソルの画面上の住所を必要としない。movementX と movementY が動いた分を伝える。画面座標は固定されたまま、ゲームのカメラだけが向きを変える。壁に突き当たる矢印が、ようやく首の動きになった。

手品には請求書がある。カーソルが見えず、イベントをゲームが受け取る間、人はマウスでブラウザーのボタンや別の窓へ簡単には移れない。2012年草案の安全性の議論は、離れた後もページが繰り返しロックし直す危険を挙げた。そこでブラウザー側に、ページが奪えない退出操作が要る。ゲームに貸したマウスを、持ち主が返してもらえる仕組みだ。

2016年10月の W3C 勧告 はその約束を具体化した。既定の解除操作は常に使え、キーボードなら Esc が推奨される。対象の要素が外れたり、タブや窓がフォーカスを失ったりしてもロックは終わる。pointerlockchange は切り替わりを、pointerlockerror は失敗を知らせる。ゲームはそれを聞いて普通のメニューを戻せる。画面拡大ソフトについても、ロック時には拡大位置へキーボードで届く必要があると記されている。

面白いのは二度目のロックだ。最初の要求と、人がブラウザー既定の操作で出た後の要求には、新たな働きかけが必要になる。ゲーム自身が exitPointerLock() でメニューを開いた場合は、別の操作なしで戻れる。二つの出口を同じものとして扱わない。人の退出は拒否、アプリの退出は画面の切り替えだ。ここを取り違えれば、Esc は出口の看板を掲げた回転ドアになる。

2026年2月の Pointer Lock 2.0 草案 は、対応する環境で OS のマウス加速を通さない動きを求める unadjustedMovement や、Promise を返す要求を記す。同じ手のひと振りで視点が違う角度を向けば、精密な操作には困る。短いユーザー操作の有効期間と全画面要求の順番も整理されている。W3C の 2.0 公開履歴 は2016年から2026年まで続く。小さな矢印を消す仕事に、ずいぶん長い議論がついてきた。

プレーヤーは画面の端を越えて振り向き、部屋全体を見渡せる。そして休みたくなれば普通のカーソルに戻れる。ゲームが得たのは終わらない移動、人が守ったのは終わらせる自由だった。