― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - ウィンドウ切り替え直後の1回目のALTキーの反応が無い
作成者 メッセージ
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
[quote="Masayuki"]修正終わりました。問題なければ、Mozilla 13に入ります。[/quote]

お世話になりました。

ようやくリリースされた Firefox13でウィンドウ切り替え直後のALTキーに反応するようになり、とても快適に操作できるようになりました。
投稿記事 Posted: 2012年6月06日(水) 19:12
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayuki さんが書きました:
問題のフラグはネイティブコードのものなので、拡張からはいじれません。バイナリコンポーネント持ちの拡張ならともかく。

あらら、直接フラグをリセットするのは無理なんですね。

Masayuki さんが書きました:
ダミーで生成するキーイベントは今コードを見てみると、Ctrlのkeyupだけで良いかもしれません。それで影響のあるページは普通は無いと思います。

了解です。AltとCtrlのkeyupにチャレンジしてみます。

と言っても、ほぼゼロからのスタートなのでどれぐらいかかることやら、、、
投稿記事 Posted: 2012年2月21日(火) 09:48
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
バッキー さんが書きました:
Masayuki さんが書きました:
おそらく、Alt keydown後にwindowがblurイベント受け取ったら、Alt+Tabでフォーカス失ってると思われるので、nsIDOMWindowUtils.sendKeyEvent()で何らかのキーイベントをワンセット送って、そのあとでAltのkeyupを送っておけば次にそのウインドウがフォーカスを受け取る時に問題の状態はリセットされていると思います。


うーーん、blurの後にsendKeyで何か操作すると副作用が出そうな気がするんですよ。
なので、ウィンドウが再アクティブになったときにスバっとフラグを初期化するのが確実なのではないでしょうか?


問題のフラグはネイティブコードのものなので、拡張からはいじれません。バイナリコンポーネント持ちの拡張ならともかく。

ダミーで生成するキーイベントは今コードを見てみると、Ctrlのkeyupだけで良いかもしれません。それで影響のあるページは普通は無いと思います。
投稿記事 Posted: 2012年2月20日(月) 16:14
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayuki さんが書きました:
がんばれば拡張でどうにかできそうな気はしますが……

ええ、私もそういう気がします。

Masayuki さんが書きました:
おそらく、Alt keydown後にwindowがblurイベント受け取ったら、Alt+Tabでフォーカス失ってると思われるので、nsIDOMWindowUtils.sendKeyEvent()で何らかのキーイベントをワンセット送って、そのあとでAltのkeyupを送っておけば次にそのウインドウがフォーカスを受け取る時に問題の状態はリセットされていると思います。


うーーん、blurの後にsendKeyで何か操作すると副作用が出そうな気がするんですよ。
なので、ウィンドウが再アクティブになったときにスバっとフラグを初期化するのが確実なのではないでしょうか?

Msayuki さんが書きました:
どなたか作りたい方が居て、この情報でもよく分からなかったら、連絡いただければ。


自分で問題を解決するために拡張機能を作ってみたいんですが、ゼロからのスタートなので暗中模索な状態です。(涙)
投稿記事 Posted: 2012年2月15日(水) 22:59
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
がんばれば拡張でどうにかできそうな気はしますが……

おそらく、Alt keydown後にwindowがblurイベント受け取ったら、Alt+Tabでフォーカス失ってると思われるので、nsIDOMWindowUtils.sendKeyEvent()で何らかのキーイベントをワンセット送って、そのあとでAltのkeyupを送っておけば次にそのウインドウがフォーカスを受け取る時に問題の状態はリセットされていると思います。

どなたか作りたい方が居て、この情報でもよく分からなかったら、連絡いただければ。
投稿記事 Posted: 2012年2月15日(水) 14:49
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayuki さんが書きました:
修正終わりました。問題なければ、Mozilla 13に入ります。


修正ありがとうございました。

Mozilla 13ということなら、リリースはまだしばらく先のことになりそうですね。
それまで、なにか暫定的な対処方法を探してみます。
投稿記事 Posted: 2012年2月14日(火) 23:05
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
修正終わりました。問題なければ、Mozilla 13に入ります。
投稿記事 Posted: 2012年2月14日(火) 21:38
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayukiさん、大変お世話になりました

Masayuki さんが書きました:
バグの方にパッチは提出しました。


ありがとうございました。
まだしばらくは不便な状態が続きますが、パッチが適用されたアップデートがリリースされるのを待つことにします。
投稿記事 Posted: 2012年2月08日(水) 22:09
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
手順ありがとうございます。

バグの方にパッチは提出しました。原因は、Alt+TabでウインドウをFirefoxから切り替える際に、AltのkeydownのみをFirefoxは受け取ります。これで、Altキーが押された、という状態をboolで保存しておいて、それが他の操作でキャンセルすべきかどうかを監視を開始します。

しかし、そのままウインドウが非アクティブになった時に、このフラグを取り消していませんでした。

このため、次にFirefoxのウインドウがアクティブになった時に、Altキーは押されたままという状態だと誤解しています。これだけだと、問題は発生しにくいのですが、日本語版のWindowsでは、Alt+半角/全角が日本語のIMEのオンオフに使われています。ですが、このキーを押したときに、半角/全角のキーイベントは発生しないため、Gecko内のWindows用のIMEのハンドラが、IMEの状態が変わった時、かつAltキーが押されている場合に半角/全角キーのイベントを偽造して、メニューバーのハンドラの機嫌をとろうとします。これが、Alt+Tabの時にも発生していたため、Altキーが押されたけど、キャンセルされた、というフラグを立てていました。この二つの現象が重なって、発生するのがこのバグの一番多い原因だと思われます。
投稿記事 Posted: 2012年2月08日(水) 13:38
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayukiさん、Windows7での現象再現ありがとうございます。
また、色々調べてくださってありがとうございます。

すでに原因に見当がおつきのようですが、先の件について返信させていただきます。

ウィンドウのサイズについてですが、デスクトップの4/5ぐらいの幅にしています。

デスクトップ 1440x900
ウィンドウ 1144x897
表示領域 1136x778

でと、ウィンドウを最大化しても同じ症状でした。

ところで、いろいろ操作していると突然1回目のALTに反応するようになりました。
でも、Firefoxを再起動するとやはり1回目のALTに反応しなくなりました。

試行錯誤したところ、以下の手順を行うと1回目のALTに反応するようになる場合が多いようです

1. メモ帳を起動
2. Firefoxを起動(ブランクページ)
3. ALT + Tabでメモ帳に移動
4. メモ帳がアクティブの状態で ALTキーを2回押す
5. タスクバーをクリックすることで Firefoxをアクティベート
6. 1回目のALTに反応することを確認
7. 以後、ALT + Tabでウィンドウを切り替えても1回目のALTに反応する

しかし、この状態でタイトルバーをドラッグしてウィンドウを移動させると、1回目のALTに反応しなくなりました。

ということで、これまでの状況をまとめると

・バッキーの環境では 2台のPC(Win XP SP3 32bit)と1台のVirtual PC(Win XP SP3 32bit)で発生している
・Win7の最大化ウィンドウでも発生している
・突然あるいは特定の手順で1回目のALTに反応するようになるが、再起動すると反応しなくなる、ウィンドウを移動させても反応しなくなる

ということで、Firefoxの不具合のような感じなのですが、、、


Masayuki さんが書きました:
あ、分かりました。ウインドウの状態は関係ありません。ウインドウを前回、どのように非アクティブにしたのかに依存するようです。

https://bugzilla.mozilla.org/show_bug.cgi?id=625151

こちらにパッチ出します。


bugzillaを読みましたが、1年ほど前にすでに現象は確認されていたんですね。

質問を投稿する前に bugzillaは検索したのですが、ALT key menuでヒットした約240件の中から該当するレポートを見つけられませんでした。(_o_)
投稿記事 Posted: 2012年2月07日(火) 22:17
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
あ、分かりました。ウインドウの状態は関係ありません。ウインドウを前回、どのように非アクティブにしたのかに依存するようです。

https://bugzilla.mozilla.org/show_bug.cgi?id=625151

こちらにパッチ出します。
投稿記事 Posted: 2012年2月07日(火) 15:52
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
ウインドウが最大化している時にのみ、Windows 7でも再現しました。そちらではどうでしょうか?
投稿記事 Posted: 2012年2月07日(火) 15:29
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
Masayukiさん、XP modeでのテストと検証用のコード、ありがとうございます。

引用:
このURLをロケーションバーに入れて読み込ませ、表示された空白のコンテンツ部分をクリックして、その後、マウスで別のアプリに切り替えてから、Alt+TabでFirefoxに戻り、Altキーを押すと、どう表示されますか?



日時を表示するようにコードを修正してテストしてみました。
コード:
data:text/html,<p id="p"></p><script>function datetime() {now = new Date(); str = now.getFullYear()+"年";str+= now.getMonth()+1+"月"; str+= now.getDate()+"日 ";str += now.getHours()+"時";str+= now.getMinutes()+"分"; str+= now.getSeconds()+"秒 "; return str;} function keyname(event) { for (var s in event) { if (s.match(/^DOM_VK_/) && event[s] == event.keyCode) { return s; } } return "0x" + event.keyCode.toString(16); } function log(event) { var p = document.getElementById("p"); p.innerHTML = datetime() + event.type + " keyCode=" + keyname(event) + ", charCode=" + event.charCode + " (0x" + event.charCode.toString(16) + "), shift=" + event.shiftKey + ",ctrl=" + event.ctrlKey + ", alt=" + event.altKey + ", meta=" + event.metaKey + "<BR>" + p.innerHTML; event.preventDefault(); } window.addEventListener("keydown", log, false); window.addEventListener("keypress", log, false); window.addEventListener("keyup", log, false);</script>


その結果、ALTキーの押し下げは正常に検出されていることが判りました。

2012年2月7日 13時12分35秒 keyup keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=false, meta=false
2012年2月7日 13時12分35秒 keydown keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=true, meta=false


ところで、不思議なことに提示していただいたコードを実行中のウィンドウは、ウィンドウ切り替え直後の1回目のALTキーで正常にファイルメニューがアクティブになりました。

でも、同時に開いている他のウィンドウは、やはりウィンドウ切り替え直後の1回目のALTキーに反応しませんでした。[/code]
投稿記事 Posted: 2012年2月07日(火) 13:25
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
XP modeでテストしましたが再現しませんでした。

コード:
data:text/html,<p id="p"></p><script>function keyname(event) { for (var s in event) { if (s.match(/^DOM_VK_/) && event[s] == event.keyCode) { return s; } } return "0x" + event.keyCode.toString(16); } function log(event) { var p = document.getElementById("p"); p.innerHTML = event.type + " keyCode=" + keyname(event) + ", charCode=" + event.charCode + " (0x" + event.charCode.toString(16) + "), shift=" + event.shiftKey + ",ctrl=" + event.ctrlKey + ", alt=" + event.altKey + ", meta=" + event.metaKey + "<BR>" + p.innerHTML; event.preventDefault(); } window.addEventListener("keydown", log, false); window.addEventListener("keypress", log, false); window.addEventListener("keyup", log, false);</script>


このURLをロケーションバーに入れて読み込ませ、表示された空白のコンテンツ部分をクリックして、その後、マウスで別のアプリに切り替えてから、Alt+TabでFirefoxに戻り、Altキーを押すと、どう表示されますか?

追記:

正常なら、

keyup keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=false, meta=false
keydown keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=true, meta=false

と表示されます。
投稿記事 Posted: 2012年2月07日(火) 12:14
  記事の件名:  Re: ウィンドウ切り替え直後の1回目のALTキーの反応が無い  引用付きで返信する
引用:
インストールのしなおしとか、新しいプロファイルなどは?
書かれていることはすべてお試しください。


Virtual PC上の Win XP SP3 32bitに FireFox 5.0 が残っていましたので確認しましたが、下記の流れで全て再現しました。

FireFox 5.0 → ウィンドウ切り替え直後の1回目のALTキーの反応が無い
FireFox 10.0にアップデート → ウィンドウ切り替え直後の1回目のALTキーの反応が無い
ユーザデータを含む完全アンインストール
念のためリブート
FireFox 10.0再インストール → ウィンドウ切り替え直後の1回目のALTキーの反応が無い


なので、XPでの仕様か根本的な不具合かと思われるのですが、他のXPユーザさんはこのような現象は起きておられませんか?


引用:
なお、XPでは、オレンジ色のFirefoxボタンは非標準です。
(「ファイル」「編集」などのメニュー表示が標準)
http://mozilla.jp/blog/entry/6692/

この兼ね合いにより、altキーの動作に何らかの影響があるのかもしれません。


それならば、私以外のユーザさんでも再現しそうですね。
投稿記事 Posted: 2012年2月06日(月) 23:03

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean