since 2022-10-04
https://github.com/nvdajp/nvdajp/issues/220
https://github.com/nvdajp/nvdajp/issues/266
Windows 10/11 モダンIME対応のための調査。
現状
windowsinternal_composableshell_experiences_textinput_inputapp.py
で実装されており、同じファイル名で scratchpad/appModules フォルダにモジュールを置くと挙動を上書きできる。
以下は Windows を英語UIにして、メモ帳で文字変換して最初の候補ウィンドウが開いた状態を inspect.exe で調べた情報。
- "Desktop 1" pane -- "Windows Input Experience" window --- "Microsoft Candidate UI" menu : AutomationId=IME_Candidate_Window ---- "Candidate Item Panel" list : AutomationId=TEMPLATE_PART_CandidatePanel ----- "漢字" list item ------ "1" text : AutomationId=TEMPLATE_PART_CandidateItemIndex ------ "漢字" text : AutomationId=TEMPLATE_PART_CandidateItemText ------ "" text : AutomationId=TEMPLATE_PART_CandidateItemAnnotation ------ "桐?" text (不明) ----- 候補 list item が複数つづく ----- "Pager" menu : AutomationId=TEMPLATE_PART_CandidatePanel_Pager ----- "Previous Page" button : AutomationId=TEMPLATE_PART_PagePreviousButton ----- "Next Page" button : AutomationId=TEMPLATE_PART_PageNextButton ----- "Press [Tab] to open the table view" button : AutomationId=TEMPLATE_PART_TableViewButton ----- "Emoji and Symbol" button : AutomationId=TEMPLATE_PART_EmojiButton
スピーチビューアの記録
k a n j i と入力して1回目のスペースキーを押すと
カンジルノ カン hiragana じ
2回目のスペースキーを押すと候補ウィンドウが開いて下記がスピーチビューアに表示される。最初に候補を詳細読みしているが、直後に候補ウィンドウのほかの情報の読み上げが行われ、ユーザーからは「読み上げていない」ように聞こえる。
トーヨーカンジノ カン モジノ ジ 漢字 2 2 of 105 Windows Input Experience window Candidate Item Panel list 漢字 2 2 of 105 感じ 感じ 巻次 巻次 幹事 幹事 監事 監事 漢字 2 2 of 105
2010-12-09 nvdajp のページから IME 関連の西本のメモを移動しました。
IME 関連の作業は @hoozukiyama さんと協力して行なっていました。
since 2013-03-12
そのうち続きをやるのでメモ:
class ATOK26UIComment(IAccessible): name=_("ATOK comment") role=controlTypes.ROLE_WINDOW def event_show(self): tones.beep(880,20) log.debug("ui comment show") log.info(self.basicText) log.info(self.displayText.replace('\x00', '')) def event_gainFocus(self): log.info(self.basicText) log.info(self.displayText.replace('\x00', ''))
since 2012-08-13
inputMethods ブランチ関連
候補文字列については記号読みレベルの設定に関わらず記号を読む(nvda/inputMethods: Rev 5272):
speech.speakText(result,symbolLevel=characterProcessing.SYMLVL_ALL)
2010-01-26 Twitter 記録
<html> <ul class="tl-tweets"> <li>遅刻。nvdaControllerClientの話をしている。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8230695053" target="_blank">19:35:48</a></li> <li>source/NVDAObjects/IAccessible/IME.py ってのがあるよ、という話をしています。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231061748" target="_blank">19:54:32</a></li> <li><a href="http://www.nvda-project.org/wiki/DesignOverview" target="_blank">http://www.nvda-project.org/wiki/DesignOverview</a> をみんなで読んでます <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231358910" target="_blank">20:08:39</a></li> <li>accesibility API : MSAA = IAccesible / IAccessible2 / Java Acc Bridge / UI Automation = SRはここから情報を得る <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231441491" target="_blank">20:12:39</a></li> <li>native api : MSAAで取れない情報をとるために使用。カーソルの位置など。Operating System Functions : バッテリ残量など。どっちも win32 を叩いている? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231475412" target="_blank">20:14:17</a></li> <li>NVDA Components : オブジェクト指向、抽象化された設計。コンポーネント化。Core 初期化してメインループに。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231546651" target="_blank">20:17:36</a></li> <li>API Handlers : APIの初期化や終了 source/IAccessibleHandler.py を眺めてみる。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231654026" target="_blank">20:22:35</a></li> <li>中国語対応しかけた残骸らしいです RT <a href="http://twitter.com/toratorax" target="_blank">@toratorax</a>: <a href="http://twitter.com/nishimotz" target="_blank">@nishimotz</a> IMEに対応しようとした痕跡でしょうか <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231687011" target="_blank">20:24:11</a></li> <li>source/NVDAObjects/init.py にあった。class NVDAObject これが全ての基本 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231809581" target="_blank">20:29:56</a></li> <li>MSAA がイベントを出すとキューに入って、eventHandler.executeEvent で実行される?イベントは event_ で始まる。event_gainFocus and event_nameChange など <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231899245" target="_blank">20:33:53</a></li> <li>ツール>ログ閲覧。設定>一般設定>ログ記録>デバッグ でいじってみる。#nvdajp 日本語を入力する。ローマ字入力の keypress しか来てないことを確認。 posted at <a href="http://twitter.com/nishimotz/status/8232240145" target="_blank">20:48:59</a></li> <li>IME.py に from logHandler import log を入れてみようとしたが実行環境で動かすところまでいかず、時間切れ。現在nvdajpは本家と別のレポジトリを持っている TODO:実行環境を作るマニュアル改訂 posted at <a href="http://twitter.com/nishimotz/status/8232449435" target="_blank">20:58:07</a></li> </ul> </html>
その後、MLではソースから実行環境を作る情報を更新。西本は勝手に pyaa に取り組む。
2010-02-16 定例ミーティング
成果
注意:以下の設定が正しくないと再現できない
今後の課題
Twitter 記録
<html> <ul class="tl-tweets"> <li>今夜はNVDA日本語化プロジェクトの定例ミーティングに行ってきます <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9169888846" target="_blank">13:01:16</a></li> <li>NVDA日本語化プロジェクトのミーティング。西本からの報告終わり。これから本家のソース読み <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9180715683" target="_blank">20:03:01</a></li> <li>pyAA による実験で分かったウィンドウクラスとロールを NVDAObjects/IAccessible/init.py に反映させれば IME2002 の候補を読めるんじゃない?という話に <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9181295579" target="_blank">20:28:17</a></li> <li>不完全ながらMS-IME2002の候補を読み上げ始めた! <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9182963437" target="_blank">21:33:01</a></li> </ul> </html>
import 文が読み込んでいるソースファイルのディレクトリ階層はトップからの絶対位置。 ただし from . import の場合は当該ファイルからの相対位置。
NVDAObjects/IAccessible/__init__.py 363行 elif windowClassName.startswith('Mozilla'): mozCls=__import__("mozilla",globals(),locals(),[]).Mozilla clsList.append( mozCls) この __import__ の意味: mozilla.py のなかの Mozilla クラスをインポートして clsList に追加する 1394行 ###class mappings _staticMap={ 1394行 ("mscandui21.candidate",oleacc.ROLE_SYSTEM_PUSHBUTTON):"IME.IMECandidate",
どうやら mscandui21.candidate と IME.py はアジア圏のIME対応を試みたが成功しなかったときの残骸らしい。
西本が調べた情報によると "MSCandUIWindow_Candidate" と ROLE_SYSTEM_LISTITEM が IME2002 の登録に必要なクラス名とロールID。
これをやってみたのが今回のパッチ。
IMECandidate: event_objectSelection は入れてみたが、このメソッドは呼ばれていない。
(ソースはnvdajpのsvnレポジトリ)
Index: NVDAObjects/IAccessible/IME.py =================================================================== --- NVDAObjects/IAccessible/IME.py (revision 65) +++ NVDAObjects/IAccessible/IME.py (working copy) @@ -5,6 +5,13 @@ class IMECandidate(IAccessible): + def __init__(self, *argv, **kw): + super(IMECandidate, self).__init__(*argv, **kw) + name = super(IMECandidate,self)._get_value() + if name is not None: + print "IMECandidate: " + name + speech.speakText(name) + def _handleNewCandidate(self): oldNav=api.getNavigatorObject() if oldNav.windowClassName!=self.windowClassName: @@ -20,3 +27,7 @@ def event_stateChange(self): if self.event_objectID>=1 and self.event_objectID<=9: self._handleNewCandidate() + + def event_objectSelection(self): + print "IMECandidate: event_objectSelection" + self._handleNewCandidate() # nvdajp Index: NVDAObjects/IAccessible/__init__.py =================================================================== --- NVDAObjects/IAccessible/__init__.py (revision 65) +++ NVDAObjects/IAccessible/__init__.py (working copy) @@ -366,6 +366,9 @@ elif windowClassName.startswith('bosa_sdm'): sdmCls=__import__("msOffice",globals(),locals(),[]).SDM clsList.append(sdmCls) + elif windowClassName.startswith('MSCandUIWindow'): # nvdajp + sdmCls=__import__("IME",globals(),locals(),[]).IMECandidate + clsList.append(sdmCls) if windowClassName.startswith('RichEdit') and winUser.getClassName(winUser.getAncestor(windowHandle,winUser.GA_PARENT)).startswith('bosa_sdm'): sdmCls=__import__("msOffice",globals(),locals(),[]).RichEditSDMChild clsList.append(sdmCls) @@ -1391,6 +1394,7 @@ ("AVL_AVView",oleacc.ROLE_SYSTEM_TEXT):"adobe.AcrobatTextNode", ("AcrobatSDIWindow",oleacc.ROLE_SYSTEM_CLIENT):"adobe.AcrobatSDIWindowClient", ("mscandui21.candidate",oleacc.ROLE_SYSTEM_PUSHBUTTON):"IME.IMECandidate", + ("MSCandUIWindow_Candidate",oleacc.ROLE_SYSTEM_LISTITEM):"IME.IMECandidate", # nvdajp ("SysMonthCal32",oleacc.ROLE_SYSTEM_CLIENT):"SysMonthCal32.SysMonthCal32", ("hh_kwd_vlist",oleacc.ROLE_SYSTEM_LIST):"hh.KeywordList", ("Scintilla",oleacc.ROLE_SYSTEM_CLIENT):"scintilla.Scintilla",
<html> <ul class="tl-tweets"> <li>NVDAの詳細読みを中村さんが実装した話。田町読みをpythonのdictionaryで実装。VistaとIME2007でスペースを2回押したら読んでくれる感じの状況 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10164971098" target="_blank">19:21:27</a></li> <li>本家NVDAがbzrに移行した話。我々もbzrで作業した方が本家とのマージが楽になるはず。sfjpのbzrホスティングを使うか?Windowsのbzrエクスプローラは良くできてるが読み上げ非対応。。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165082572" target="_blank">19:26:21</a></li> <li>bzrのレポジトリを作るときnvda本家のブランチはそのまま取り込んでjpブランチを別途作って行くのが将来マージしやすいのでは <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165204535" target="_blank">19:31:31</a></li> <li>中村さんの実装:文字コードのエラーは本家で解決。IME2002では候補文字列をget_valueしていたがget_nameにすれば2007で動く。上下カーソルとスペースで挙動が違うなど <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165394412" target="_blank">19:39:39</a></li> <li>speech.speakText() で喋らせれば読み上げ中のキー操作でちゃんと音切れする。Vistaの標準IMEだとget_nameはうまくいかない。ウィンドウクラスでIMECandidateを場合分けするか <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165622243" target="_blank">19:49:13</a></li> <li>田町読みがGPL互換ではなさそうなのでどうしようという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166118088" target="_blank">20:09:11</a></li> <li>python の unicodedata.normalize が記号の読み上げに使えるかも、という話 <a href="http://bit.ly/b1w3aV" target="_blank">http://bit.ly/b1w3aV</a> <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166427025" target="_blank">20:21:07</a></li> <li><a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> 参考 Unicode::Normalize で遊ぶ - daily dayflower <a href="http://bit.ly/c4NYfv" target="_blank">http://bit.ly/c4NYfv</a> posted at <a href="http://twitter.com/nishimotz/status/10166525311" target="_blank">20:24:57</a></li> <li>GPL互換の詳細読み辞書が手に入るまでダミー辞書で開発をしようという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166645690" target="_blank">20:29:35</a></li> <li>IAccessibleを継承したクラスを毎回 init してていいのか。TSFの検討は並行して進める。オープンソースカンファレンス再参加の検討 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10167225395" target="_blank">20:50:49</a></li> </ul> </html>
text_services_framework ReadComp の処理を取り込む。
どうやら共有メモリの処理が必要。
成果はこちら:
http://files.nishimotz.com/ReadCompPython-100321.zip
コマンドプロンプトで一番上のディレクトリにある readcomp.py を実行すると 30秒、数字が表示されつづけます。 その間にメモ帳を開いてかな漢字変換をすると、そのたびにイベントが呼ばれた回数が インクリメントされて数字が増えます。
ポイントは rcomplib.dll で共有メモリを使って、メモ帳・IME・TSFのプロセスが 書き換えた情報を、Python 側のプロセスで読めるようにしたところです。
C++のプロジェクトは rcomplib のデバッグビルドしか使っていません。
<html> <ul class="tl-tweets"> <li>bzrレポジトリの状況報告。リビジョン3403までが本家。3404以上が日本語関連。sf.jpのbzrでは(root)/nvdajpの下の階層作成には認証が必要? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12039165753" target="_blank">19:28:43</a></li> <li>mainは本家+安定した日本語版。projectは開発版。なんかしっくり来ないな。ブランチ使うんだろうが、bzr branch は svn checkout のような機能? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12039429211" target="_blank">19:36:35</a></li> <li>田町読みのライセンスをGPL互換にしてもらうお願いをする。当面はBEPの詳細読み辞書を開発用に使う。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12041320486" target="_blank">20:32:14</a></li> <li>TSFの未確定文字を抜き出すDLLの試作。処理をどこに突っ込むか。keyboardHandler.pyを読む <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12041849510" target="_blank">20:46:52</a></li> <li>winInputHook.pyでキーイベントのフック処理。WINFUNCTYPEでコールバック関数もPythonで書けるのか。core.pyに初期化処理。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12042738213" target="_blank">21:09:51</a></li> <li>appModulesの中身のベースクラスはappModuleHandler.pyにある。ここではプロセスの名前をチェックしてフックをかけるなど <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12043256862" target="_blank">21:22:49</a></li> </ul> </html>
技術的なメモ
Twitterでの発言
<html> <ul class="tl-tweets"> <li>ぼちぼち <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> の話が始まる。IMEの入力中のキーエコーも変換候補の読み上げも技術的にはできてきた。いま渡辺先生が ITRC の説明中 posted at <a href="http://twitter.com/nishimotz/status/16529108799" target="_blank">16:05:02</a></li> <li>「JAWS or nothing の状況をなんとかしたい」(笑) <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16529372893" target="_blank">16:11:53</a></li> <li>改正JIS「アクセシビリティ・サポーテッド」が日本だけガラパゴス化しないためにNVDAのようなスクリーンリーダの存在が必要 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16529427899" target="_blank">16:13:17</a></li> <li>フォネティック読みが未実装であることについて。まだ本家にも実装されていないという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530377865" target="_blank">16:37:33</a></li> <li>アスキーコードを読み上げるキーバインドがある。これを乗っ取って日本語の詳細読みをしてはどうか、という話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530416490" target="_blank">16:38:37</a></li> <li>8月末までに gtalk の DLL 化と naist-jdic (ipadic) への移行をしようと思っている私 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530614197" target="_blank">16:43:49</a></li> <li>記号の読み方。本家はTTSエンジンまかせ。日本語では独自に辞書を持つべきという話。ローマ字文字列の読み下し? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530795823" target="_blank">16:48:24</a></li> <li>本家の中国語対応のチケットの話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> <a href="http://www.nvda-project.org/ticket/635" target="_blank">http://www.nvda-project.org/ticket/635</a> posted at <a href="http://twitter.com/nishimotz/status/16530876977" target="_blank">16:50:34</a></li> <li>女子大生が帰る前にデモをしてもらう <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530914331" target="_blank">16:51:35</a></li> <li>日本語IME対応のアルファ版を6月末に出そうという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16531583332" target="_blank">17:09:20</a></li> <li>Flashにも対応してWAI-ARIAにも対応しているオープンソースのスクリーンリーダの日本語対応。正式版のリリースのときには積極的に宣伝するべきという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16531659770" target="_blank">17:11:22</a></li> </ul> </html>
Togetter によるまとめ: http://togetter.com/li/33404
~nvdajp/nvdajp/2010.2 ブランチの 3875
http://bazaar.launchpad.net/~nvdajp/nvdajp/2010.2/revision/3875
MS-IME 2002 の未確定文字の読み上げが、私がいじっているバージョンで いつのまにか動かなくなっていることに気づきました。 少なくとも 2010.2j ポータブルでは上手く動いているので、 対応するブランチを探してみました。 http://bazaar.launchpad.net/~nvdajp/nvdajp/2010.2/changes 3876までが10月29日。3877が11月5日。 リリースされた 2010.2j は 3876 ベースだと思うのですが。 bzr branch lp:nvdajp/2010.2 nvdajp_2010_2_r3876 -r 3876 bzr branch lp:nvdajp/2010.2 nvdajp_2010_2_r3877 -r 3877 Windows XP SP3 +メモ帳+ MS-IME 2002 の環境で この2つを比べたところ、3876 では問題がなく、 3877 では未確定文字の読み上げができない、という状況。 ちなみに、どちらもメニューが日本語ではなく英語になります。。
リリースされた 2010.2j は 3876 ベース
以下、nvdajp-dev ML でフォローしていただいた情報:
●2010.2j の履歴については次のリンクを参照してみて下さい。 https://code.launchpad.net/~nvdajp/nvdajp/2010.2 ●MiscellaneousDependenciesの履歴については次のリンクを参照してみて下さい。 https://code.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies ●リリース後の最新更新版は以下の組み合わせです。 ~nvdajp/nvdajp/2010.2 : 3879 ~nvdajp/nvdajp/MiscellaneousDependencies : 21 メモ ※本家NVDAのソースにIMEの最新版を反映するには。。。 1.core.py のIMEの一部修正 2.source/nvdajpime.dll はMiscellaneousDependencies : 21 のものを使用 3.source/nvdajp_ime.py は2010.2 : 3879 のものを使用 4.source/nvdajp_keyEvents.py は2010.2 : 3879 のものを使用
nvdajpime.dll について。
ファイルサイズ 54784 バイトのバージョンが過去に存在した。
http://bazaar.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies/files/head:/source/
にあるものはファイルサイズ 20480 バイト
lp:~k-tsuzi/nvdajp/main k_tsuzi
上記の 20480 バイトの nvdajpime.dll と組み合わせたらちゃんとIME読み上げできた。
リリースされている 2010.2j は 20480 バイトの nvdajpime.dll
1.64ビットOS対応 選択肢としては、以下のいずれか? ●64ビットベースでの対応 ●32ビットベースでの対応 2.日本語ON、OFFのタイミング修正 ●取得タイミングの問題、イベントトリガーの見直。 3.TSF、IMM32の切り替えスイッチの検討 ●WinXPで動作させる場合の検討課題。 4.他スクリーンリーダーとの連携 ●入力読み上げON、OFFスイッチの検討 ※サブスクリーンリーダーとしての使用を想定