既定の入力システムがMicrosoft Office IME 2010のときに「名前をつけて保存」で動かなくなる
ご報告ありがとうございます。
類似する不具合は以前からあり、場当たり的に対応してきたのが現状です。
IME をどのタイミングで、どのようにお使いになったか、もう少し詳しく教えていただけますか?
また、確実に再現されるでしょうか?
もしそうだとしたら NVDA の過去のバージョン(例えば 2012.2.1jp)と比較していただくことは可能ですか?
この現象がどの頻度で起こるのかを調査する為に20回同じようにしましたが、こちらの環境では20回中20回(100%)発生しています。 そして NVDA の以前のバージョンである 2012.2.1jp でも同じようにして試してみましたが 2012.2.1jp では NVDA 本体は落ちますが、メモ帳では「動作を停止しました」というメッセージが出ておらず、落ちた NVDA を再起動することで操作ができるようでした。
再現の手順は、
1 パソコンの電源を入れ OS(Windows7) を起動する。 2 スタートメニューからメモ帳を起動する。 3 キーボード[全角半角]キーを押す。 4 キーボードから「中村研究室!」と入力する。 5 キーボード[全角半角]キーを押す。 6 キーボードから半角で「 @nakalabo」と入力する。 7 エンターキーを2回叩いて改行する。 8 Ctrlキーを押したままF4キーを押す。 です。
宜しくお願い致します。
ご報告ありがとうございます。
実は手元に Windows 7 x64 のテスト環境しかなく、しかも「半角全角」キーのないキーボードを使っているためか、ご報告いただいた手順を再現できません。
Windows xp sp3 は使えるのでこれから調べてみますが、どなたか同じ手順で状況を確認していただくことは可能でしょうか?
本件については、他の環境やバージョンでも関連するご報告をいただいています。
また、日本語サポートを最小限にした実験スナップショット、また本家スナップショットでも再現する、というご指摘があります。
しかし、私はまだこの現象を再現できていないので、例えば本家にバグ報告を挙げることができません。
以下、私の確認した手順ですが、私の環境ではクラッシュしません。
手順:
環境:
もし上記と同じ手順のどこかでクラッシュするようでしたら、具体的にご指摘ください。
また、上記手順ではクラッシュしないが、手順を変えるとクラッシュする、ということでしたら、手順をどう変えれば再現できるかご教示ください。
下記の手順で現象を再現できました。
Windows 7 (32bit) で、まず、既定の入力システムを Microsoft IME ではなく Microsoft OfficeIME 2010 にする。
NVDA jpdev130307 を実行する。インストーラーを起動して「実行を継続」でよい。
メモ帳を起動する(私はタスクバーの左から2番目に入っているので Windows + 2 で起動)。
日本語入力でなにか日本語の文字を入力して確定する。
さらに何か日本語の文字を入力して変換し、確定をしない。
Alt+F4 を押す。
「無題への変更内容を保存しますか」と表示されて、Windows 全体が無反応になる。
本家スナップショット main 5932 eSpeak でもほぼ同じことが再現できました。
情報を整理して、本家にチケット登録したいと思います。
本家スナップショット main 5932 ポータブル版がクラッシュしたときの nvda.log (log level: debug)を下記に転記します。
ちなみに Windows 7 ではポータブル版のログは C:\Users\(ログオン名)\AppData\Local\Temp にあります。
INFO - nvda (00:09:02): Starting NVDA INFO - core.main (00:09:03): Config dir: C:\Users\nishimotz\Desktop\nvda-main\userConfig INFO - core.main (00:09:03): NVDA version main-5932 INFO - core.main (00:09:03): Using Windows version sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') INFO - core.main (00:09:03): Using Python version 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] INFO - core.main (00:09:03): Using comtypes version 0.6.2 INFO - synthDrivers.espeak.SynthDriver.__init__ (00:09:05): Using eSpeak version 1.46.02 06.Jan.12 INFO - synthDriverHandler.setSynth (00:09:05): Loaded synthDriver espeak INFO - core.main (00:09:05): Using wx version 2.8.12.1 (msw-unicode) INFO - braille.initialize (00:09:05): Using liblouis version 2.5.2 INFO - braille.BrailleHandler.setDisplayByName (00:09:05): Loaded braille display driver noBraille, current display has 0 cells. INFO - brailleInput.initialize (00:09:05): Braille input initialized WARNING - core.main (00:09:05): Java Access Bridge not available INFO - core.main (00:09:05): NVDA initialized INFO - config.save (00:09:07): Configuration saved IO - speech.speak (00:09:14): Speaking [LangChangeCommand ('en_UK'), u'nvda-main'] IO - speech.speak (00:09:14): Speaking [LangChangeCommand ('en_UK'), u'\u9805\u76ee\u30d3\u30e5\u30fc list'] IO - speech.speak (00:09:14): Speaking [LangChangeCommand ('en_UK'), u'nvda.exe 27 of 55'] IO - inputCore.InputManager.executeGesture (00:09:18): Input: kb(desktop):windows+2 IO - speech.speak (00:09:18): Speaking [LangChangeCommand ('en_UK'), u'Taskbar'] IO - speech.speak (00:09:19): Speaking [LangChangeCommand ('en_UK'), u'\u7121\u984c - \u30e1\u30e2\u5e33'] IO - speech.speak (00:09:19): Speaking [LangChangeCommand ('en_UK'), u'edit multi line'] IO - speech.speak (00:09:19): Speaking [LangChangeCommand ('en_UK'), u'blank'] IO - inputCore.InputManager.executeGesture (00:09:21): Input: kb(desktop):半角/全角 IO - inputCore.InputManager.executeGesture (00:09:23): Input: kb(desktop):n IO - speech.speak (00:09:23): Speaking [LangChangeCommand ('en_UK'), u'\uff4e'] IO - inputCore.InputManager.executeGesture (00:09:27): Input: kb(desktop):a IO - speech.speak (00:09:27): Speaking [LangChangeCommand ('en_UK'), u'\u306a'] IO - inputCore.InputManager.executeGesture (00:09:29): Input: kb(desktop):enter IO - speech.speak (00:09:29): Speaking [LangChangeCommand ('en_UK'), u'\u306a'] IO - inputCore.InputManager.executeGesture (00:09:33): Input: kb(desktop):n IO - speech.speak (00:09:33): Speaking [LangChangeCommand ('en_UK'), u'\uff4e'] IO - inputCore.InputManager.executeGesture (00:09:34): Input: kb(desktop):a IO - speech.speak (00:09:34): Speaking [LangChangeCommand ('en_UK'), u'\u306a'] IO - inputCore.InputManager.executeGesture (00:09:37): Input: kb(desktop):alt+f4 DEBUGWARNING - NVDAObjects.UIA.UIA._get_next (00:09:37): Tree walker failed Traceback (most recent call last): File "NVDAObjects\UIA\__init__.pyc", line 520, in _get_next COMError: (-2147467259, '\x83G\x83\x89\x81[\x82\xf0\x93\xc1\x92\xe8\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1', (None, None, None, 0, None)) DEBUGWARNING - NVDAObjects.UIA.UIA._get_firstChild (00:09:37): Tree walker failed Traceback (most recent call last): File "NVDAObjects\UIA\__init__.pyc", line 530, in _get_firstChild COMError: (-2147467259, '\x83G\x83\x89\x81[\x82\xf0\x93\xc1\x92\xe8\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1', (None, None, None, 0, None)) DEBUGWARNING - NVDAObjects.UIA.UIA._get_firstChild (00:09:37): Tree walker failed Traceback (most recent call last): File "NVDAObjects\UIA\__init__.pyc", line 530, in _get_firstChild COMError: (-2147467259, '\x83G\x83\x89\x81[\x82\xf0\x93\xc1\x92\xe8\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1', (None, None, None, 0, None)) DEBUGWARNING - NVDAObjects.UIA.UIA._get_firstChild (00:09:37): Tree walker failed Traceback (most recent call last): File "NVDAObjects\UIA\__init__.pyc", line 530, in _get_firstChild COMError: (-2147467259, '\x83G\x83\x89\x81[\x82\xf0\x93\xc1\x92\xe8\x82\xc5\x82\xab\x82\xdc\x82\xb9\x82\xf1', (None, None, None, 0, None)) IO - speech.speak (00:09:37): Speaking [LangChangeCommand ('en_UK'), u'\u30e1\u30e2\u5e33 dialog \u7121\u984c \u3078\u306e\u5909\u66f4\u5185\u5bb9\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b?']
英語環境で再現できたので本家チケットを登録しました。
Windows 7 32bit + Microsoft Office IME 2010 と本家版 NVDA ポータブル (ハングアップの確認だけなので音声はeSpeak) で確認したところ、下記のようにずいぶん古いバージョンでもこの不具合が起きることがわかりました。
Office IME 2010 のバージョンアップについてはさかのぼって確認していませんが。。
メモ帳が「名前をつけて保存」ダイアログでハングアップするバージョン:
ハングアップが起きないバージョン:
Windows 7 で実行できないバージョン:
なお、Windows xp sp3 と Microsoft Office IME 2010 の組み合わせでは、このチケットの問題は再現されません。
Windows 7 については 32ビットでも 64ビットでも起きるようです。
また、メモ帳のファイル保存だけでなく、zip ファイルの操作(アプリケーションメニューの「すべて展開」)でも、ほぼ同じ現象が報告されています。
他のチケットにも書いた気がしますが、Windows 7 で Microsoft Office のライセンスを所有していれば Office IME 2010 をダウンロードできるという話。
IME 2010 が、Windows 7 上の次期バージョンOffice で使用可能になりました http://support.microsoft.com/kb/2719861
英語で書かれたダウンロードページ:
Microsoft Office IME 2010 http://www.microsoft.com/en-us/download/details.aspx?id=30390
使用している Windows が32ビットか64ビットに関わらず、使用する Microsoft Office が32ビットか64ビットかに合わせて IME 2010 の32ビット版か64ビット版かどちらかを選べと書かれています。
ちなみに 中国語(台湾)の InputMethodEditor x86 zh-tw.exe を入れて New Phonetic 2010 をデフォルトの入力にしたときも、このチケットの不具合が再現できました。
また NVDA 2013.1beta1 のポータブル版でも同様です。
本家 2013.1 rev 6014 までマージしていますが、この問題は未解決です。
チケット #30482 エクスプローラーでデリートキーを押した直後にNVDAが落ちる、をこのチケットの重複と判断しました。
NVDA 本家 2013.1beta2 をインストールした Windows 7 (32bit) で、大きめのファイルをエクスプローラーのデリートキー操作で削除しようとするとNVDAがハングアップします。
本家がサーバーの引っ越しをしている影響か、チケットのコメントがつけられなかったので、下記のメールを nvda-dev-asia に書きました。
Thank you for fixing issue #3005. Another serious issue for Japanese users is #3064. Because the ticket system is something wrong, I would like to write regarding this. In addition to the issue initially filed, pressing delete key for deleting file may crash NVDA frequently. - Japanese Windows 7 sp1 (32bit) - default input language: Japanese Microsoft Office IME 2010. cannot reproduce the issue with other Japanese input methods. - NVDA 2013.1beta2 (installed) - any speech driver, including silence Procedure: - put large file on Windows desktop (such as NVDA launcher file) - start NVDA - move focus to the file on desktop - press Delete key - during the confirmation (yes/no) dialog for deletion, NVDA crashes (not always, but very frequently) - sometimes "APPCRASH" or "StackHash" is reported from Windows, but no errors or debug messages in the nvda.log. Unfortunately, many Windows 7 users in Japan is using Microsoft Office IME 2010 as the default input system, because Microsoft Japan is licensing it to the users of all versions of Microsoft Office. I am very concerned about the situations with Office IME 2010 for other languages.
_UIAHandler で badUIAWindowClassNames に Button を追加する方法を検討中です。
lp:~nvdajp/nvdajp/jp2013.1 rev 6005
http://bzr.sourceforge.jp/view/nvdajp/nvdajp2013.1/revision/6005/source/_UIAHandler.py
badUIAWindowClassNames に Button を追加する方法の妥当性について mick さんとメールでやりとりをしています。
「この修正をしない場合に、ボタンを押すと NVDA やアプリがクラッシュすることがあるか」
という質問が来たので、なにか思い当たることがあればお知らせください。
Mick さんから質問された件について下記の回答をしました。
diff --git a/source/_UIAHandler.py b/source/_UIAHandler.py index 798a936..e64473b 100644 --- a/source/_UIAHandler.py +++ b/source/_UIAHandler.py @@ -43,7 +43,7 @@ badUIAWindowClassNames=[ ] UIAControlTypesToNVDARoles={ - UIA_ButtonControlTypeId:controlTypes.ROLE_BUTTON, +# UIA_ButtonControlTypeId:controlTypes.ROLE_BUTTON, UIA_CalendarControlTypeId:controlTypes.ROLE_CALENDAR, UIA_CheckBoxControlTypeId:controlTypes.ROLE_CHECKBOX, UIA_ComboBoxControlTypeId:controlTypes.ROLE_COMBOBOX,
4月11日のコメント(lp:~nvdajp/nvdajp/jp2013.1 rev 6005)で本チケットの問題は解決したものと思います。 開発スナップショット jpdev130415 に反映されています。
この修正が本家にマージされるかどうか不明ですが、日本語版に関するチケットとしてはクローズします。
この問題は NVDA 日本語版 2013.1jp で修正されていて、NVDA 本家版では 2013.1.1 まで修正されていませんでしたが、Button を badUIAWindowClassNames に追加する nvdajp の修正案が本家で採用される予定です。
現在、本家の t3064 ブランチで行われたこの変更が next スナップショットにマージされ、問題がなければ master に格上げされるとのことです。
http://community.nvda-project.org/ticket/3064
http://community.nvda-project.org/changeset/996496f31153c6c054ea42d7b008574d28624827
すでに NVDA 日本語版で行われている修正と同じですが、改めて確認をしてほしいとのことだったので、本家スナップショット NVDA next-9419,b27dcf2 で Office IME 2010 と Windows 7 32ビットの動作確認をしました。問題がないと報告しました。
Reply To nakalabo
メモ帳を起動してテキストを何文字か入力し、保存せずにメモ帳を閉じようとするとメモ帳ごと落ち、音声も止まってしまいます。 再現手順は 1 メモ帳を起動。 2 メモ帳に「中村研究室! @nakalabo」とキーボードで入力。 3 Ctrlキーを押したままF4キーを押す。 メモ帳が停止してしまい、完全に音声まで出なくなります。 NVDAのバージョンは jpdev121109、OSは Windows7 32bit です。 類似する環境ではどうでしょうか?
メモ帳を起動してテキストを何文字か入力し、保存せずにメモ帳を閉じようとするとメモ帳ごと落ち、音声も止まってしまいます。 再現手順は
1 メモ帳を起動。 2 メモ帳に「中村研究室! @nakalabo」とキーボードで入力。 3 Ctrlキーを押したままF4キーを押す。
メモ帳が停止してしまい、完全に音声まで出なくなります。 NVDAのバージョンは jpdev121109、OSは Windows7 32bit です。
類似する環境ではどうでしょうか?