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:
Tweet (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%以上のシェアを獲得しています。 また、成長が著しい各種モバイル機器の入力デバイスとしても数多くの採用実績を獲得しており、名実共にヒューマン・インターフェイス技術のエキスパートとして入力デバイスのワールドリーダーです。
とのことです。