デスクトップでフォーカスを移動すると「大文字」「ロシア」「半角」などと読み上げる
下記の手順で、それらしい現象が再現できました。
新しくインストールしたばかりの Windows 7 64ビットに Google 日本語入力をインストールして、デフォルトの入力システムにする。
jpdev130509 のポータブル環境を作り、NVDA を起動する。
コントロールパネル「テキストサービスと日本語入力」を開き、Google 日本語入力のプロパティのダイアログを開く。
タブを移動したり、タブの中でカーソルを移動すると、「未定義」「大文字」あるいは画面の内容と無関係な文字説明が読み上げられる。
上記でコメントした現象について、簡単に確認したこと:
Windows 7 64ビットで起きている現象は、本家 2013.1rc2 でも再現されました。
また下記の環境でも確認できました。
以下の不具合のそれぞれについて対応を検討してみます。
前者は本家の入力メソッドの実装の問題として、本家にフィードバックが必要と思われます。
下記の git コミットで、大文字の判定で Python のメソッドを使わない方法に変更しました。
nvdajp releases-2013.1jp 97ced2d
この状況で「日本語版の文字入力拡張」を有効にして、変換候補の番号を通知しない設定にすると、不要な文字列は(スピーチビューワーで見ると消えていないのですが)気になりにくくなったと思います。
「大文字」だけでなく「ロシア」「半角」と読むこともあるので、概要を変更しました。
Windows XP sp3 で handleInputCandidateListUpdate() に渡されている値を調べてみました。
下記、使ったパッチと、正常に候補リストを取り出した例、不適切な文字列の例です。IME は ATOK 2013 と Google 日本語入力です。
この状況の nvdaControllerInternal_inputCandidateListUpdate() は nvdaHelper/remote/ime.cpp:345 で実行されています。
diff --git a/source/NVDAHelper.py b/source/NVDAHelper.py
index 284b6cb..b7e97eb 100755
--- a/source/NVDAHelper.py
+++ b/source/NVDAHelper.py
@@ -239,6 +239,7 @@ def nvdaControllerInternal_inputCompositionUpdate(compositionString,selectionSta
return 0
def handleInputCandidateListUpdate(candidatesString,selectionIndex,inputMethod):
+ log.info(u"(%s) (%s) (%s)" % (unicode(candidatesString).replace('\n','|'),str(selectionIndex),unicode(inputMethod)))
candidateStrings=candidatesString.split('\n')
import speech
from NVDAObjects.inputComposition import InputComposition
, CandidateList, CandidateItem
INFO - NVDAHelper.handleInputCandidateListUpdate (23:10:52): (完治|全治|全快|全癒|根治|快気|治す|癒す|癒える) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:12:31): (カンジ|漢字|観じ|感じ|幹事|貫地|監事|かんじ|完二) (1) (GIMEJA.IME)
INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:22): (ŸīŸī) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:43): (Ÿī솠ī) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:43): (Ÿī䍀ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:44): (Ÿī솠ī) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:46): (Ÿī蒠ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:08:47): (Ÿī藨ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:09:39): (Ÿī蚈ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:09:40): (ŸÆÆ) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:10:12): (ŸÆ둨Æ) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:10:29): (Ÿī鄐ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:10:32): (ŸŃ뒰Ń) (0) (ATOK26W.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (23:13:38): (ɘŃɘŃ!ƨŃ⹐ɖ) (0) (GIMEJA.IME) INFO - NVDAHelper.handleInputCandidateListUpdate (00:03:39): (첈Şing Windows version sys.getwindowsversion(major=5, minor=1, build=2600, platform=2) (0) (GIMEJA.IME)
下記のコミットで ime.cpp の修正を行い、現在テスト中です。
nvdajp release-2013.1jp f204633
本家の nvda-dev にも ime.cpp のパッチのレビューを依頼しました。
本家にチケットを立てました:
3234 Memory allocation issue in ime.cpp http://community.nvda-project.org/ticket/3234
本家の 2013.1 には間に合わなかったのですが 2013.1jp としては対応完了とします。
気づくのが遅れたのですが、Mick さんからパッチの確認依頼がありました。
http://community.nvda-project.org/ticket/3234 http://community.nvda-project.org/attachment/ticket/3234/3234_IMELen.patch
マイルストーンが 2013.1.1 になっています。
本家ブランチにパッチをあてたものを Windows XP と ATOK 2013 で確認しました。
直ってなかったのでコメントを書きました。
Mick さんからコメントが付きました。
バグの再現環境が作れなくて苦戦しているようです。
Google Japanese Input の設定画面がアクセシブルでないことも指摘されています。
メモリアロケーションのときに calloc を使うようにして、サイズをチェックする処理を追加して、作業を行った結果を下記にコメントしました。
Mick さんが「2013.2をターゲットにする」として、新しいパッチを作成しました。
私が提案した修正(必要なメモリサイズを計算してからアロケートする処理)と、もともとの IMM 系 API の使い方の修正の両方が行われています。
こちらでは Windows XP と Windows 7 32ビットで、フォーカス移動時の不具合がないことを確認して、報告をしました。
http://community.nvda-project.org/ticket/3234#comment:13
このパッチが本家 master にマージされたら、日本語版のコードもこの処理に合わせようと思います。
デスクトップでフォーカスを移動すると不自然な「大文字」という読み上げが発生する現象を報告していただいています。
最初に報告があったのは jpdev130405 でしたが、jpdev130509 でも解決していないとのことです。
既定の入力システムが ATOK 2009 や Google 日本語入力などの場合に起きるようです。
概要「タブキーなどで、たとえばデスクトップウインドウなどで、フォーカスを移動すると、「オオモジ・・・・」というような少し意味不明な読み上げをします。」
ログ:
さきほど 2013.1jp-beta2 について同様のご報告があり、下記のログを送っていただきました。