マウスの物理スイッチとチャタリングの仕組み
マウスのボタンには、金属製の接点を持つ物理的なマイクロスイッチが搭載されています。長期間の使用や経年劣化によってこの金属接点が摩耗すると、ボタンを1回だけ押したつもりでも、接点が細かく振動して接触と切断を繰り返す「バウンシング(チャタリング)」と呼ばれる現象が発生します。
このツールは、このようなハードウェアの不具合を診断するためのオンラインユーティリティです。テストエリア内でクリックを行うと、ボタンの押し下げ(Down)と離し(Up)のイベントがミリ秒単位で記録されます。もし、あらかじめ設定された「チャタリング検知しきい値」(デフォルトは40 ms)よりも短い間隔で同一ボタンの連続入力が検出された場合、ツールはそれをチャタリングとして判定し、ログに「チャタリング検出」のバッジを表示してカウントします。人間の手による意図的な操作では、これほど短い間隔で2回連続してクリックすることは極めて困難であるため、このしきい値判定によって物理的なスイッチの摩耗を正確に特定できます。
ブラウザにおけるイベント制御と例外的な挙動
ウェブブラウザ上でマウスのすべてのボタンを正確にテストするためには、ブラウザが持つデフォルトの挙動を一時的に制御する必要があります。
通常、ブラウザ上で右クリックを行うとコンテキストメニューが表示されますが、このツールでは「マウステストエリア」の内部に限り、メニューの表示を抑制する処理を行っています。これにより、右クリックのイベントを妨げられることなくカウントできます。ただし、オペレーティングシステムやブラウザの仕様により、以下のような例外的な挙動が発生します。
- FirefoxにおけるShiftキー併用: Firefoxブラウザでは、Shiftキーを押しながら右クリックを行うと、ブラウザ側の仕様が優先されてコンテキストメニューが強制的に表示され、ツール側ではイベントがカウントされません。
- macOSにおけるCtrlキー併用: macOSのシステム仕様により、Ctrlキーを押しながらクリックする操作は、物理的にどのボタンを押したかに関わらず、すべて右クリックとして検出されます。
- サイドボタンのインターセプト: マウスの「戻る (Back)」や「進む (Forward)」といったサイドボタンは、ブラウザのページ移動ショートカットとして割り当てられています。ツールはエリア内でのナビゲーション動作を抑制しようと試みますが、Linux上のFirefoxなど、一部の環境ではOSやブラウザがイベントを完全に遮断してしまい、ウェブページまで入力信号が届かないことがあります。
ポインターイベントとスクロールホイールの仕様
現代のウェブ標準では、マウス、トラックパッド、ペン、タッチスクリーンなど、異なる入力デバイスからの信号を「ポインターイベント」として統一的に処理します。このツールでは、入力が行われたデバイスの種類を「mouse」、「pen」、「touch」として識別して詳細ログに表示します。ただし、タッチスクリーンでのタップはタッチイベントとして検出されるものの、ボタンの個別判定やホイールスクロールのテストを行うには、物理的なマウスまたはトラックパッドが必要です。
また、スクロールホイールの動作は、使用するOSやブラウザの設定によって取得される数値の単位が異なります。ホイールイベントの移動量は、環境に応じて以下の3つの単位のいずれかで報告されます。
pixels(ピクセル単位)lines(行単位)pages(ページ単位)
同じ1ノッチ(1目盛り)のスクロールであっても、ピクセル単位で取得された数値は、行単位で取得された数値よりも大幅に大きな値として出力されます。そのため、異なるブラウザ間でホイールの動作を比較する際は、生の数値そのものではなく、スクロールの方向やステップ数が正しく一致しているかを確認する必要があります。
データの処理とプライバシーについて
このツールで発生するすべてのマウス入力やイベントデータの処理は、利用者のブラウザ内でのみローカルに実行されます。入力された座標、クリックのタイミング、ボタンの識別情報などが外部のサーバーに送信されたり、保存されたりすることは一切ありません。
イベントログは一時的なものであり、ページ上の「ログを消去」ボタンを押すか、ブラウザのタブを閉じたりページを離れたりすると、蓄積されたすべてのデータは完全に消去されます。
よくある質問
1回しか押していないのにマウスがダブルクリックされてしまいます。このテストで確認できますか?
はい、確認できます。疑わしいボタンを、1回ずつ意識してゆっくりとクリックしてみてください。正常なボタンであれば、1回のクリックにつき「Down」と「Up」がそれぞれ1回ずつ正確に記録されます。設定された検知しきい値(デフォルトは40 ms)以内の極めて短い間隔で余分なクリックが検出された場合、チャタリング(二重入力)として判定され、カウントされます。クリックを繰り返す中でこの現象が頻発する場合、ソフトウェアの問題ではなく、スイッチの物理的な摩耗が原因である可能性が高くなります。人間の手による意図的なクリックでこれほど高速に2回連続で入力されることはほぼないため、意図的に極めて高速な連打テストを行う場合を除き、このしきい値を広げる必要はありません。
テストエリア内で右クリックメニューが開かないのはなぜですか?
テストエリア内では、他のボタンと同様に右クリックの回数を正確にカウントできるよう、コンテキストメニューの表示を抑制しています。エリア外では通常通りメニューが表示されます。ただし、ブラウザの仕様により回避できない例外が2つあります。Firefoxでは、Shiftキーを押しながら右クリックすると常にメニューが開いてしまい、カウントされません。また、Macでは仕様上、Ctrlキーを押しながらのクリックは右クリックとして検出されます。
サイドボタンが反応しないのはなぜですか?
多くのブラウザでは、「戻る」および「進む」のサイドボタンが履歴ナビゲーション用として割り当てられており、ページ側で入力を検知する前にブラウザがその操作を奪ってしまうことがあります。当テストエリアでは、ブラウザが許可する範囲でこの挙動を抑制していますが、すべての環境で抑制できるわけではありません。特にLinux上のFirefoxでは、サイドボタンの入力が一切報告されない場合があります。これらのボタンがこのページで反応しなくても、他のアプリケーションで正常に動作している場合は、ブラウザによって入力が遮断されているだけであり、マウスの故障ではありません。
別のブラウザでスクロールすると、同じ操作なのにスクロール量の数値が異なるのはなぜですか?
スクロール量は、お使いのブラウザやプラットフォームによって「pixels(ピクセル)」、「lines(行)」、または「pages(ページ)」のいずれかの単位で取得され、画面上の表示には各イベントがどの単位を使用したかが示されます。同じ1ノッチのスクロールであっても、ピクセル値は行値よりも常に大幅に大きな数値になります。そのため、異なるブラウザ間で比較する際は、生のスクロール量(delta値)の数値そのものではなく、スクロールの方向やステップ数が一致しているかを確認してください。