過去ログ表示


過去ログ 335 を表示

トピック内全 17 記事中の 11 〜 17 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0] [1]

Re: firefox3.6 エレコムマウスでスクロールできません
(#51506) このトピック中11番目の投稿
(環境: Win 7/Minefield)

No51505に返信(Aさんの記事)
> Bug 507222 - Thinkpad Trackpoint middle button mouse scroll does not scroll window up and down [Minefield]の変更による不具合だと思いますWin 7/Other

その根拠はなんでしょうか? そのバグは似た状況のThinkPadに対するハックを入れたもので、ThinkPad以外の環境では副作用が出ないように配慮されています。

そこに報告されているKyleの解析結果を読んでください。(comment 20以降)

Re: firefox3.6 エレコムマウスでスクロールできません
(#51509) このトピック中12番目の投稿
(環境: WinXP SP3/Other)

> firefox3.6 エレコムマウスでスクロールできません。
> Windows Vista Home Premiumを使用
> マウスは エレコム PRUMIE マウスM-P3UP2RBK
> firefox3.5、IE8や他のアプリケーションでは普通にスクロールできます。

中野さんの解説を読んだあと、「エレコム マウス WM_MOUSEWHEEL」でググってみました。

エレコムのマウスドライバーそのものの問題ではなく、
マウスでのスクロールに対応していないアプリでも、スクロールバーが操作されたと勘違いさせて、自社製マウスで無理矢理スクロールさせて売り上げを伸ばそうとする、付属ユーティリティーの問題、
のように思えます。
Firefox 3.5はマウススクロール対応と認識していたが、Firefox3.6だと非対応と認識、とか、
どちらも非対応と認識していて、無理矢理スクロールさせる部分がFirefox3.6だとうまく動かない、とか。
(できの悪いマウスドライバー、なんて書き方をしなきゃいいのにぃ...)

(Q1) ELECOMホイールユーティリティーを常駐させないようにするとどうなりますか。
(Q2) エレコムのマウスドライバーとELECOMホイールユーティリティーをアンインストールし、MS Win標準のマウスドライバーを使うとどうなりますか?

(A)
> http://park1.wakwak.com/~y-nagano/Programs/nywheel/
「マウスのホイール操作が、非アクティブなウィンドウでも可能になります。」という、Ny Wheelというソフトの開発者さんのサイト。

> 動作のしくみ
> ※ プログラマ向けの情報です。プログラム技術の核心に触れる親切な解説です(^^ゞ
> マウスのホイールを回すとWindowsのシステムからアプリケーションに向けてWM_MOUSEWHEELメッセージが送信されます。
> ホイール対応のアプリはこのメッセージに適切に応じることで、ホイールによるスクロールを実現しています。
> また、MS IntelliPointなどのマウスドライバはホイール非対応のアプリでもスクロールできるように、
> WM_MOUSEWHEELメッセージの代わりに WM_VSCROLLメッセージ等を送信することでアプリ側にスクロールバーを操作されたと勘違いさせてスクロールを実現しています。
>
> NY Wheel(Ver.3) は、WH_MOUSE_LLフックを使用してマウスイベントを監視し、ホイール操作が行われた時にマウスカーソル位置のウィンドウに直接WM_MOUSEWHEELを送信することで上記の機能を実現しています。

(B)
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37188&forum=7
エレコムのマウスに関し、「Windows2003Server上でMouseWheelが発生しない」という記事。

> そのときのホイール操作での結果です。
> 1.ELECOMマウス→ELECOMホイールユーティリティー常駐
>   WM_HSCROLLとWM_VSCROLLが発生
> 2.Windows標準ドライバマウス
>   WM_MOUSEWHEELが発生
> 3.1にて、ELECOMホイールユーティリティーを終了
>   WM_MOUSEWHEELが発生
> このことからELECOMホイールユーティリティーはターゲットコントロールのスクロールをエミュレートしていることがわかりました。

(B)
> http://oshiete.homes.jp/qa2764737.html
Vistaになって、エレコムのマウスでスクロールが効かないという、2007年のQA。

> 製品付属(サポートページからダウンロード)のユーティリティー+ドライバーをアンインストールし、
> Windows標準のドライバで動作させることにしました。
> こうすることで、スクロール機能に関しての問題はクリアできました。
> しかしながら、ユーティリティーを使用してないため、マウスのボタンに機能を割り当てが使えない状態になってしまいました。
> 今は、一応そのまま使ってます

Re: firefox3.6 エレコムマウスでスクロールできません
(#51511) このトピック中13番目の投稿
(環境: Win 7/Minefield)

No51509に返信(WADAさんの記事)
> エレコムのマウスドライバーそのものの問題ではなく、
> マウスでのスクロールに対応していないアプリでも、スクロールバーが操作されたと勘違いさせて、自社製マウスで無理矢理スクロールさせて売り上げを伸ばそうとする、付属ユーティリティーの問題、
> のように思えます。
> Firefox 3.5はマウススクロール対応と認識していたが、Firefox3.6だと非対応と認識、とか、
> どちらも非対応と認識していて、無理矢理スクロールさせる部分がFirefox3.6だとうまく動かない、とか。
> (できの悪いマウスドライバー、なんて書き方をしなきゃいいのにぃ...)

Fx3.5まではWM_VSCROLL/WM_HSCROLLを全く処理していません。Bug 5291を最近修正してハンドリングするようにしたところです。Bug-org 507222でlParamが非ゼロの場合はFx3.6から、bug 5291でlParamがゼロの場合でもFx3.7以降でスクロール自体は行われるようになりました。つまり、Fx3.5以前で無理矢理スクロールさせようとするとWM_KEYDOWNを使うとか、ひどい手法しかありません(GeckoがWM_MOUSEHWHEELに対応するまでは、IntelliPointは横スクロールに使っていましたし、SetPointもFx3.5までは変なWM_MOUSEHWHEELで対応テストをかけてきてこちらの処理が失敗していたので、WM_KEYDOWNを送ってきてました)。もちろん、このような処理をするとキャレットブラウジングの時や、textareaではまともに動作しません。ですので、Fx3.5まではまともに動いていたのであればWM_MOUSEWHEELは少なくとも送信していたのではないかと思います(水平方向は上述のように怪しい)。

ちなみに、Fx3.7以降でもWM_VSCROLL/WM_HSCROLLはマウスドライバは利用すべきではありません。これらはスクロールを指示するメッセージです。スクロールバーや他のアプリケーションとの通信手段ですので、GeckoはWM_MOUSEWHEEL/WM_MOUSEHWHEELとは明確に異なるハンドリングを行っています。

lParamがゼロの場合、DOMMouseScrollイベントはWM_*SCROLLからは生成されません。スクロール対象もカーソル位置を基準にするのではなくフォーカス、または最後の選択位置を基準にします。基準位置からスクロール対象を検索するロジックも異なっています。そうしないと外部のユーティリティとの通信では使いものにならないからです。また、他のキーとのコンビネーションでズーム等が行われることもありません。

マウスドライバがWM_MOUSEWHEEL/WM_MOUSEHWHEELに非対応のアプリケーションのウインドウに対してWM_VSCROLL/WM_HSCROLL/WM_KEYDOWNを利用して製品の価値を高めようとするのは良いと思います。ブラックリスト方式でやれば安全にできるでしょうし、問題のないドライバ/ユーティリティはそのようにしていると思われます。ただ、それに失敗すると、このような問題が発生します。

Bug-org 507222の解析結果を見ると、ThinkPadの場合は予想した結果と異なるウインドウ構造を持ったウインドウだったので何も送信しない、というのが原因であるということのようです。このエレコムの件に関しても同様に何も送信していないか、WM_VSCROLL/WM_HSCROLLを送信しているという状況でしょう。

Re: firefox3.6 エレコムマウスでスクロールできません
(#51513) このトピック中14番目の投稿
(環境: WinXP SP3/Other)

> Fx3.5まではWM_VSCROLL/WM_HSCROLLを全く処理していません。
> Bug 5291を最近修正してハンドリングするようにしたところです。
> Bug-org 507222でlParamが非ゼロの場合はFx3.6から、
> bug 5291でlParamがゼロの場合でもFx3.7以降でスクロール自体は行われるようになりました。
> つまり、Fx3.5以前で無理矢理スクロールさせようとするとWM_KEYDOWNを使うとか、ひどい手法しかありません
> (GeckoがWM_MOUSEHWHEELに対応するまでは、IntelliPointは横スクロールに使っていましたし、
> SetPointもFx3.5までは変なWM_MOUSEHWHEELで対応テストをかけてきてこちらの処理が失敗していたので、WM_KEYDOWNを送ってきてました)。
> もちろん、このような処理をするとキャレットブラウジングの時や、textareaではまともに動作しません。
> ですので、Fx3.5まではまともに動いていたのであればWM_MOUSEWHEELは少なくとも送信していたのではないかと思います(水平方向は上述のように怪しい)。

なるほど、そういうことでしたか。
となると、Fx 3.6でWM_VSCROLL/WM_HSCROLLも処理するようになったので、
エレコムのドライバーが、WM_MOUSEWHEEL/WM_MOUSEHWHEELでなく、WM_VSCROLL/WM_HSCROLLを送るようになってしまった、
というような感じかもしれませんね。

「エレコム PRUMIE マウスM-P3UP2RBK」というのは、レーザー式の5ボタンマウス(中ボタンはホイール)で、
ホイールでの横スクロールやマウスジェスチャーやボタンへの各種コマンドの割り当てとか、いろいろ設定できて、
別途、2007年ものの「ELECOMホイールユーティリティー2」を導入、なんてなことは不要で、
外見的にはマウスドラーバーとユーティリティーが融合されていて、
「ドライバー」と呼ぶexeをダウンロードして起動するとマウスドライバーとユーティリティーが導入され、
コントロールパネルやドライバーのプロパティーで各種の設定ができるようになっている、
というような、比較的新しいもののようです(2008年もの、のようです)
マニュアルとかをざっと眺めてみた限りでは、ELECOMホイールユーティリティー2のように常駐させないようにする、というようなことは、無理そうな感じがしました。

「ELECOMマウスドライバ ホイール」でググってヒットしてきた中に、以下のようなものがありました。
「\Wheel ......\IntelliApp」というレジストリーのキーですから、
Firefoxを「マウスホイールをサポートしているアプリである」と登録しているように思えます。
これで逃げられたようですから、推測通り、エレコムのドライバーがWM_MOUSEWHEEL/WM_MOUSEHWHEELを送って来ていない、ということなのかな?

> http://hara8bunme.blog.so-net.ne.jp/2010-02-21
> とりあえずユニーバーサルスクロール機能を切ってみようとしたが、
> 使用のマウスドライバー(ELECOM MOUSE DRIVER(P2/P3) 3.1)にはそんな機能が無い。
> なんとかならないものかと、マウスドライバーを調べてみたところ、
> レジストリ上では、ユニーバーサルスクロールを無効にする設定があることが判る。
> そこで、レジストリに以下を追加したところなんとかスクロールするようになった。
> HKEY_USERS
> .\S-1-5-18
> ..\Software
> ...\Primax
> ....\Mouse Suite 98
> .....\Wheel
> ......\IntelliApp
> .......\Mozilla Firefox ←キーを追加
> ........Class="MozillaWindowClass" ←文字列を追加
> HKEY_USERS
> .\S-1-5-21-…
> ..\Software
> ...\Primax
> ....\Mouse Suite 98
> .....\Wheel
> ......\IntelliApp
> .......\Mozilla Firefox ←キーを追加
> ........Class="MozillaWindowClass" ←文字列を追加

Re: firefox3.6 エレコムマウスでスクロールできません
(#51515) このトピック中15番目の投稿
(環境: Win 7/Minefield)

No51513に返信(WADAさんの記事)
> となると、Fx 3.6でWM_VSCROLL/WM_HSCROLLも処理するようになったので、
> エレコムのドライバーが、WM_MOUSEWHEEL/WM_MOUSEHWHEELでなく、WM_VSCROLL/WM_HSCROLLを送るようになってしまった、
> というような感じかもしれませんね。

いえ、それはありえません。WM_*SCROLLを送信した時の送信側から見える反応は何も変わっていないはずです。lParamが非ゼロの場合には次のwndprocへ処理を伝達しなくなりましたが、この場合、WM_*SCROLLでWM_MOUSE*WHEELメッセージが来たかのように振る舞うThinkPad用のコードが入っています。

つまり、WM_*SCROLLで何もスクロールしなかった状態での処理結果は何も変更されていません。

Re: firefox3.6 エレコムマウスでスクロールできません
(#51517) このトピック中16番目の投稿
(環境: WinXP SP3/Other)

> いえ、それはありえません。WM_*SCROLLを送信した時の送信側から見える反応は何も変わっていないはずです。
>(snip)
> つまり、WM_*SCROLLで何もスクロールしなかった状態での処理結果は何も変更されていません。

となると、レジストリーへの登録でスクロールした(多分、WM_MOUSEWHEEL/WM_MOUSEHWHEELをきちんと送って来た)、ということを考えると、
Fx3.6だと、エレコムのドライバーが、ホイールをサポートしていないと判定したときと同じような動作をしてしまう、と考えるのが妥当なのでしょうか。

> Bug-org 507222の解析結果を見ると、ThinkPadの場合は、
> 予想した結果と異なるウインドウ構造を持ったウインドウだったので何も送信しない、
> というのが原因であるということのようです。

この「あるウィンドウ構造を持ったウィンドウ」というのはFx3.6の「ウィンドウ」であり、
Thinkpadのマウスドライバーの予想とは異なる構造なので、
Thinkpadのマウスドライバーが、Fx3.6に対して、WM_MOUSEWHEEL/WM_MOUSEHWHEELを送ってこない、あるいは、何も送ってこない、
と解釈していいのでしょうか。
その場合、マウスドライバーから見たFxの「ウィンドウ」の「構造」が、
Fx3.5からFx3.6の変更で、紀元前の時代の構造から近代的あるいは現代的な構造に変わった、というようなことがあるのでしょうか。
(レジストリーのことを書いてあったページによると、あるThinkpadの機種では、マウスドライバーの更新で直ったようです。)

Re: firefox3.6 エレコムマウスでスクロールできません
(#51518) このトピック中17番目の投稿
(環境: Win 7/Minefield)

No51517に返信(WADAさんの記事)
> この「あるウィンドウ構造を持ったウィンドウ」というのはFx3.6の「ウィンドウ」であり、
> Thinkpadのマウスドライバーの予想とは異なる構造なので、
> Thinkpadのマウスドライバーが、Fx3.6に対して、WM_MOUSEWHEEL/WM_MOUSEHWHEELを送ってこない、あるいは、何も送ってこない、
> と解釈していいのでしょうか。

です。

> その場合、マウスドライバーから見たFxの「ウィンドウ」の「構造」が、
> Fx3.5からFx3.6の変更で、紀元前の時代の構造から近代的あるいは現代的な構造に変わった、というようなことがあるのでしょうか。

別にウインドウ構成が進歩したとかそういう意味ではないです。できるだけ最低限のネイティブウインドウでページをレンダリングできるようにしただけです。


[ 前のトピック内容10件 ]
このトピックの全ページ / [0] [1]

返信不可


- Child Tree -