日本語IMEのモードを通知する
日本語キーボードでの検証と報告が不十分だったので補足します。
テスト環境は Windows 7 x64 のメモ帳のみです。
本チケットは「英数」「ひらがな」などの通知を行う改良について主に扱うこととします。
キーエコーの表現の変更、英語キーでのIMEオンオフ通知については、本チケットとは分けて検討します。
西本の betterInput ブランチで以下の更新を行いました。
lp:~nishimotz/nvdajp/betterInput rev 4314
nvdajpime からのコールバックで日本語 IME の切り替えを通知するのではなく、もともと NVDA が keyboardHandler.py で行っている低レベルキーフックに処理を追加するようにしてみました。
キーイベントで日本語の有効・無効を判断するのではなく、misono さんの方法で状態を取得し、カナ入力およびローマ字入力における入力モードの通知も追加しました。
キー入力のイベントそのものはブロックせず、IME_ON および IME_OFF を強制的に行う処理はしていません。
Windows 7 で x86 と x64 のアプリいくつかで検証したところ、日本語キーボードに関しては安定して動いています。ATOK 2012 や Google IME でも問題ありません。
英語キーボードおよび Windows XP については、これから検証を行います。
なお、このブランチではチケット28155の作業も行われており、32ビットアプリのみ、日本語入力中の文節カーソル移動などを考慮した読み上げを行います。
http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=28155
nvdajpime でキーボードフックをする必要がなくなったら、不要なコードを整理します。
betterInput ブランチの動作検証ではありませんが、 2012.2jp-beta3 に関するご報告をいただきました。
テスト項目のひとつとしてこのチケットにコメント追加します。
jpdev120625 にいままでの作業をマージしました。
IMEの日本語On・Off時の読み上げに関して、以下の改良パッチをご提案いただきました。
http://bazaar.launchpad.net/~misono/nvdajp/jp2012.2/revision/5204
さっそく確認をしました:
リリース版にマージする前に、以下の検討を行いたいと思います。
(1) モード番号24と25の他にもモード番号があるので、追加を行う。
出典 http://d.hatena.ne.jp/morakana/20080213/1202876561
(2) 日本語キーボードにおいて「半角全角キーの単独押し」「ALTキーと半角全角キーの同時押し」の両方で動作を確認する。
(3) Microsoft IME と ATOK 2012 の両方で動作を確認する。
(4) Windows XP アプリケーション、 Windows 7 x64 アプリ、Windows 7 x86 アプリで動作を確認する。
(5) チケット28155「日本語入力で文節移動後の候補読み上げ」の改良が容易になるように C++ と Python の処理の分担の見直しを行う。