Катюша さんが書きました:
Excelやメモ帳上でカーソルが点滅している状態で文字入力ができず、その状態でスクリーンキーボードからは文字入力ができるので、
ご紹介いただいた事象とは異なる事象が発生しているようです。
何かが影響を与えているのでしょうが、現時点でわかっているのは
突然文字入力ができなくなるという不具合発生時に、Firefoxを閉じると問題は即時に解決し、
再度Firefoxを起動してもしばらくは文字入力ができるというところです。
カーソルが点滅していている、ということで、Firefoxへのフォーカスの移動は無関係だと思っていましたが、
Firefoxのバグのテスト中に以下のような現象をみたのと、キーボードフォーカスとマウスのフォーカスは独立しているので、ちょっと書いておきます。
長いですが、一言でいうと、「カーソルが点滅しているからといって、必ずしもそこに今Keyboard Focusがあるわけではない」ということの実証実験です。
(1) 以前から、WinのFirefoxには(ThunderbirdもSeaMonkeyも)、以下の問題があって、今もそうである。
WM_WINDOWPOSCHANGEDを受け取った時に、
本来は、最小化(または最大化)⇒元に戻す、の時にだけ出すべきSetFocusを、
最小化・最大化されてノーマルに戻ったFirefoxのウィンドウは、常にSetFocusを出してしまう。
(2) Win10になって、アクセントカラーやテーマが変わった時に、全てのウィンドウに対して、
WM_WINDOWPOSCHANGEDを送るようになったようである。
(Win8.1までは、このイベントでは送らなかったか、アクティブウィンドウにだけ、と思われる)
(3) (2)のために、(1)の問題が表面化し、Win10でアクセントカラーやテーマが変わった時に、
Bug 1234317/
Bug 1258152 の現象が起こるようになった。
(Firefoxの複数のウィンドウ、Thunderbirdの複数のウィンドウ、SeaMonkeyの複数のウィンドウ、の順番が変わってしまう)
(4) (2)の影響は、Mozillaファミリーだけでなく、Win10における、MS Windowsのコンポーネントにも見られる。
いま明確なのは、以下の現象です。
File Explorerの、右側のファイル一覧の部分で、
縦・横スクロールバーのスクロール位置が、上端・左端ではない時に、
アクセントカラーやテーマが変わると、
縦・横スクロールバーのスクロール位置がリセットされて、上端・左端になる。
選択されたディレクトリーやファイルは、変わらない。
これは、File Explorerの状態(最大化、最小化、ノーマル)に関係なく起こり、
複数のノーマルウィンドウ(複数のアプリの複数のtoplevelウィンドウ)がある時の、
File Explorerのウィンドウの位置にも関係なく起こる。
(最小化されていてもWM_WINDOWPOSCHANGEDが送られている可能性がある。)
(テーマ・カラー変更のメッセージによるかもしれないが、それならWin7/8.1でも起こりそう。)
これらがあるので、以下のような現象を簡単に確認できます。
(a) Win10で、個人用設定で、以下の設定にしておく。
(a-1) 背景:スライドショー、間隔=1分
(a-2) 色:[ x ] 背景から自動でアクセントカラーを選ぶ、にチェックする。
(b) Firefoxを起動し、一度最小化し、タスクバーから元に戻す。
www.google.comを表示し、入力フィールドが常に見えるようにしておき、
入力フィールドをクリックして、カーソルを点滅させる。
(c) File Explorerを立ち上げ、ファイル一覧でディレクトリーが選択された状態にし、
ファイル一覧の部分のスクロール位置を、上端・左端から変えて置く。
(d) この時点では、File Explorer⇒Firefoxの順で、File Explorerが、最前面/アクティブ。
www.google.comの入力フィールドのカーソル・カーソルの点滅は無くなる。
(e) (a-1)によって背景イメージが変わると、(a-2)によってアクセントカラーが変わり、
(e-1) File Explorerでは、(4)の現象が起こり、スクロール位置がリセットされる。
(e-2) Firefoxでは、(1)が起こり、SetFocusが出される。
SetFocusだけではアクティブウィンドウの切り替えは起こらないので、
ウィンドウの順番などは変わらない。
しかし、www.google.comの入力フィールドで、カーソルのブリンクが起こる。
(カーソルブリンクは、必ずしもそこに今Keyboard Focusがあることを意味しない)
(f) この時点で、最前面・アクティブウィンドウはFile Explorerなので、
Keyboard FocusはFile Explorerにあり、
Enterキーを押せば、(c)で選択してあったディレクトリーが開かれる。
また、ファイル名の変更をする時には、そこでカーソルブリンクして入力できるが、
後ろにあるFirefoxのwww.google.comのページでも、カーソルブリンクは継続している。
(カーソルブリンクは、必ずしもそこに今Keyboard Focusがあることを意味しない)
上記は、Win10でアクセントカラーが変わった時にWM_WINDOWPOSCHANGEDが送られた時の現象ですが、
WM_WINDOWPOSCHANGEDは、Size、Position、Z-Orderが変わったというイベントであり、
そのようなイベントが発生した時には、当然MS Winによって送られます。
Size/Positionの変更の時には、同時にマウスクリックイベントなどがあって、普通はそのウィンドウが最前面/アクティブになりますから、(1)によるフォーカス関連の問題は、ほぼ起こり得ません。
しかし、Z-Orderが変わっただけ、というイベントによって、WM_WINDOWPOSCHANGEDが送られた場合には、
Firefoxの一度最小化・最大化されたウィンドウは(Thunderbird/SeaMonkeyでも)、必ず(1)によるSetFocusを出すので、フォーカス関連の問題が起こる可能性があります。
最前面/アクティブウィンドウやウィンドウの順番は変わらなくても、(1)のせいで、FirefoxがSetFocusをだすので、内部的にはFocusが行ったり来たりします。
この時、IMEから見れば、突然Focusが奪われたり戻ったりするわけで、何かが起こる可能性があります。
単純にフォーカスが奪われるというだけではない、という現象で知られているものに、Dragが途中で消滅する、というものがあります。
これにはいくつかバリエーションがあるようで、フォーカスを途中で奪う犯人だと思われるものが見えている場合もあれば、どこでどうやってフォーカスが奪われるのか皆目見当がつかないものもあります。
Bug 948082 ,
Bug 1001549 ,
Bug 1022443 ,
Bug 1023620 などが、この系統のものです。
また、ThunderbirdだけでなくFirefoxでも同じようなことが起こるので、Coreの問題が関係していると考えられています。
Drag関連もFocus関連も、必ずしもWindowsだけの現象ではないので、全てが(1)によるものでは無いことは確かですが、
Winでの現象であって、Firefoxが関係しそうであることですし、(1)の問題は常に存在しますから、
(1)による影響は排除しておいた方がいいかもしれません。
Firefoxを立ち上げて様子を見る場合には、以下を組み合わせてみる。
(α)個人用設定でデスクトップのスライドショーを使っている場合には、
(α-1)色:[ x ] 背景から自動でアクセントカラーを選ぶ、のチェックをはずし、
不要なWM_WINDOWPOSCHANGEDの発生を極力避ける。
(α-2)あるいは、チェックしたままで、スライドショーの間隔を1分にして様子を見る。
(β-1)と組み合わせると、1分ごとにFirefoxにSetFocusをださせることができます。
(β)Firefoxの立ち上げ方を変えてみる。
(β-1)最低一回は、最小化してタスクバーから戻すか、最大化して戻す(1は起こる)
(β-2)最小化も最大化も一度もせずに、立ち上げたままにする(1は起こらない)
(β-3)最小化・最大化をして戻した後、最小化または最大化しておく。
(最小化・最大化されているとSetFocusはださないので、1は起こらない)
ご参考までに。