この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2016年1月)

2016年1月30日

Bug-org 1235686 Mouse scroll speed may not be correct if Synatpcis's or Alps's touchpad and another pointing device are used on an environment
初回投稿日時: 2016年01月30日10時56分38秒
カテゴリ: Mozilla Core Mozilla45 WheelEvent Windows バグ修正
SNS: (list)

マウスホイールで最初にスクロールした時に使用したのが、Synapticsのタッチパッドか、外付けのマウスかで、スクロールスピードが変わってしまうというバグです。特に、Synapticsのタッチパッドで最初にスクロールすると、外付けマウスでのスクロール速度がWindowsのデフォルト設定で1/3になってしまうので、かなり遅く、不快に感じるバグでした。

Windowsの設定でマウスのスクロールスピードを修正すると、意図した速度で動くことから、システム設定のキャッシュに問題があることが分かりました。そして、MouseScrollHandlerのログをとってみたところ、Windowsのデフォルト設定でデルタ値120あたり、3行スクロールするようになっていても、Synapticsのタッチパッドを使用した場合には、::SystemParametersInfo(SPI_GETWHEELSCROLLLINES)が常に1、つまり、デルタ値120あたり、1行スクロールする設定になっていると返すことが分かりました。

おそらく、これはSynapticsのタッチパッドのユーティリティがSystemParametersInfo APIをフックしているものと思われます。なぜなら、WM_SETTINGCHANGEメッセージが来ないまま、このAPIで返される値が変わってしまうためです。

また、幸い、自宅にAlpsのタッチパッドを積んだ珍しいノートPCもあるので、確認したところ、Synapticsとは違うものの、本来の設定値を無視した値が返ってくることが分かりました。もっともこちらはシステム設定がデフォルトのままだと気になるほどの差ではありませんが。

Elantechのタッチパッドを搭載したノートPCは持っていなかったのでTwitterで協力者を募ったところ、Kuroさんがテストしてくれて、Elantechでは問題無いことが分かりました

そこで、スマートな解決方法が思いつかないので、Synapticsのタッチパッドか、Alpsのタッチパッドがインストールされている場合、システム設定のキャッシュを信頼せず、ホイールのメッセージが来る度にキャッシュを更新するように修正しました。

ちなみに、どれぐらいのユーザに影響があるのか気になったので、タッチパッドのシェアを検索してみましたが、特にそういった統計は見当たりませんでした。しかし、Synapticsの日本代理店(?)のPALTECK社のサイトによると、

シナプティクスは、ヒューマン・インターフェイス技術をミッションとして掲げ、1986年に米国San Joseに設立されました。製品開発は全て自社内で行い、出願中を含めて90以上の技術特許を所有し、主力のTouchPad製品ではノートPCを中心に全世界の70%以上、入力デバイス製品全般では全世界で50%以上のシェアを獲得しています。 また、成長が著しい各種モバイル機器の入力デバイスとしても数多くの採用実績を獲得しており、名実共にヒューマン・インターフェイス技術のエキスパートとして入力デバイスのワールドリーダーです。

とのことです。

関連するかもしれないエントリ

bug-org 1235686を含むエントリ