Ticket #34120

Firefox や Excel で日本語入力のプリエディット文字が不正確に通知される

Open Date: 2014-07-31 19:39 Last Update: 2014-08-05 22:34

Reporter: nishimoto Owner: (None)
Type: Bugs Status: Closed
Component: IME MileStone: 2014.3jp-public-beta (closed)
Priority: 5 - Medium Severity: 5 - Medium
Resolution: Fixed

Details

Firefox 31 で日本語入力のプリエディット文字が不正確に通知される現象についてまとめます。

チケット #31358 でいただいた指摘ですが、チケットを独立させました。

環境:

  • Windows 8.1 64ビット + Microsoft IME + Firefox 31.0
  • NVDA 2014.2jp および日本語テスト版、本家版 snapshot master 10302 で確認

再現手順:

  • Firefox を起動直後に Mozilla Firefox スタートページが開き、Google 検索のエディットボックスに入力フォーカスがあり、NVDA がフォーカスモードになる
  • Alt+半角全角 を押して「文字変換」の状態にする(ローマ字入力)
  • a i u e o Enter と入力。画面には「あいうえお」と表示されて、各文字が音声で通知される。
  • Home キーを押して行頭に移動。「あ」と通知される。
  • h o n n と入力すると、確定された「あいうえお」が再度通知される。

この現象はメモ帳では起きていませんが、Mozilla Thunderbird でも起きるらしいので引き続き調査します。

上記の再現手順のログ(後述)を見たところ IME から「ほnあいうえお」という文字列が来てしまっているようです。

NVDA をソースレベルで改変して取得したコンポジション更新のログ

各文字の属性の意味:
0: TF_ATTR_INPUT
1: TF_ATTR_TARGET_CONVERTED

INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あ) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あ) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あい) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あい) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あいう) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:54):
(あいう) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいう) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいう) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいう) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいうえ) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいうえ) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいうえ) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいうえお) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:55):
(あいうえお) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:57):
(あいうえお) ()
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:59):
(h) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:18:59):
(h) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:01):
(ほ) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:01):
(ほ) (0)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:02):
(ほn) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:02):
(ほn) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:04):
(ほnあいうえお) (0000000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:04):
(ほn) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:04):
(ほん) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:04):
(ほん) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:04):
(ほん) (00)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:07):
(ほんj) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:07):
(ほんj) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:08):
(ほんじ) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:08):
(ほんじ) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:09):
(ほんじ) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:09):
(ほんじ) (000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:10):
(ほんじt) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:10):
(ほんじt) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:11):
(ほんじつ) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:11):
(ほんじつ) (0000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:12):
(ほんじつh) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:12):
(ほんじつh) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:13):
(ほんじつは) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:13):
(ほんじつは) (00000)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:15):
(本日は) (111)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:15):
(本日は) (111)
INFO - NVDAHelper.nvdaControllerInternal_inputCompositionUpdate (19:19:19):
(本日は) ()

Attachment File List

No attachments

Ticket History (3/6 Histories)

2014-07-31 19:39 Updated by: nishimoto
  • New Ticket "Firefox 31 で日本語入力のプリエディット文字が不正確に通知される" created
2014-07-31 20:46 Updated by: nishimoto
Comment

Firefox 31.0 では TSF サポートが無効になっているらしく、この不具合は TSF ではなく IMM32 に関連する現象のようです。

Firefox の about:config で intl.tsf.enable という設定値を false から true に変更して、Firefox を再起動してから、上記の手順を実行すると、 この不具合を回避できるようです。

またこの tsf.enable をしない状態だと Windows 7 64ビット + Office IME 2010 + Firefox 31 でも「ほんあいうえお」現象が発生しています。

Twitter で教わった情報:

2014-07-31 21:08 Updated by: None
Comment

MsIME 2010 + Excel 2010 で動作確認をすると、 セル編集ボックスを表示させる F2 で、文字列を編集すると「アイウエオ」現象となります。

MsIME的なスクリーンリーダーとしての対応策として考えた方がよいかもしれません。

2014-07-31 22:36 Updated by: nishimoto
Comment

どうやら NVDA 側で対処するしかなさそうなので、作業してみました:

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   6d1d728..a361b59  jpbeta -> jpbeta

実装としては「ほnあいうえお」のように、かな文字の途中にアルファベットを挟むような compositionUpdate を無視するという処理をしています。

Excel 2013 で同様の現象を確認したので、概要を一部修正しました。

2014-08-01 10:52 Updated by: nishimoto
Comment

日本語テスト版 jpbeta140801

https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140801.exe

Firefox 31 (スタートページでの検索エディット)と Excel 2013 (新規ワークシートでの F2 キーによるテキスト編集)で、 不具合が回避できていることは確認しました。

ただし Excel では、エンターを押すと以下のエラーが出ます。

ERROR - scriptHandler.executeScript (10:45:47):
error executing script: <bound method Dynamic_EditableTextWithoutAutoSelectDetectionUIA.script_caret_newLine of <NVDAObjects.Dynamic_EditableTextWithoutAutoSelectDetectionUIA object at 0x04628050>> with gesture u'エンター'
Traceback (most recent call last):
  File "scriptHandler.pyo", line 174, in executeScript
  File "editableText.pyo", line 113, in script_caret_newLine
  File "editableText.pyo", line 67, in _hasCaretMoved
  File "NVDAObjects\__init__.pyo", line 926, in makeTextInfo
  File "NVDAObjects\UIA\__init__.pyo", line 57, in __init__
COMError: (-2147220992, None, (None, None, None, 0, None))

また Excel で、セルの内容を途中まで入力すると上のセルの内容が補完されてきますが、そのときの挙動はまだ不確実に思われます。

これらは、本家版との比較など、もう少し調べてみる必要があります。

なお、一時的に log.info で IME の内部情報を出力するようにしたので、このチケットをクローズする前に debug に戻す予定です。

2014-08-05 22:34 Updated by: nishimoto
  • Ticket Close date is changed to 2014-08-05 22:34
  • Status Update from Open to Closed
Comment

本件に関する log.info を debug に戻しました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   3cf8195..82ad9c2  jpbeta -> jpbeta

本家版 master での Excel の動作はまだ検証中ですが、気づいた点は別のチケットにしたいと思います。

Edit

Please login to add comment to this ticket » Login