2012年03月20日

chmファイルを展開するスクリプト

全盲の方に chm形式のヘルプファイルが使い方が分からないと言われました。キーボードだけで、目次の領域から本文の領域へ移れないそうです。そこで調べてみました。

詳しく書かれていたのは次のページです。
アプリケーションソフトのヘルプ(chm形式)を読む情報ボランティアの会(八王子) 障害者支援部会

これをもとに確かめてみると、目次と本文は、F6キーを押すと切り替わります。よく使われている高知システム開発のスクリーンリーダーPC-Talkerでは、特別に専用のショートカットCtrl+Alt+Win+@で切り替えができます。ただしバージョンによっては対応していないものもあるようです。

chmの画面ではAlt+c で通常表示されている目次、Alt+nでキーワード、Alt+sで検索に切り替わります。それぞれの項目でエンターを押すと、対応する本文が表示されるので、F6キーなどで本文に移ります。本文そのものはIEを読むときのキー操作、Ctrlを押しながら下矢印だったりシフトキーだったりで、読ませます。

 

これだけでは物足りないので、そもそもオンラインヘルプが書かれているchmファイルというのは何なのかを調べてみました。結局、Wikipediaの記事 が詳しいです。

結論としては、chmファイルはLZXアルゴリズムという方式で圧縮されたHTMLファイル群でした。試しに、愛用の7-zipで展開してみると、簡単に構成ファイルを見ることができました。何の細工もせず、右クリックでコンテキストメニューを出して、7-zipの「展開」を選ぶだけです。

出てきたファイルを開いてみると、hhc拡張子のファイルが、オンラインヘルプの目次として表示されているものだと分かります。これも中身はHTMLファイルなので、Webブラウザで閲覧できそうなのですが、OBJECTタグを使って項目の情報を指定しているので、うまく表示できません。表示できれば、この目次を使って展開されたそれぞれの本文を閲覧できるはずです。

そこで、正規表現の置換を使って、簡単にこのhhcをhtmlに変換するJScriptのスクリプトを書いてみました。

indexchm.zip

上記のようにCHMファイルのままでもキー操作だけでスクリーンリーダーで読んでくれるので、わざわざこういうことをしなくてもいいのですが、とりあえず作ってみたので、ここに公開しておきます。

・indexchm.wsf がスクリプト本体です。これにchmファイルを与えると、展開し、index.htmlを作って、それがあるフォルダーを開きます。通常はchmと同じ場所に展開しますが、システムフォルダなど書き込み禁止になっているところだとデスクトップに展開します。展開は7zipではなく、hh.exeでデコンパイルしています。
・setup.wsf で送るメニューやデスクトップへのショートカットを登録します。 以前作ったあれと同じです。これでできたデスクトップのショートカットの上にchmファイルを落としたり、chmファイルを選択した状態で右クリックでメニューを出し、送るメニューからこれを選べば展開します。
・unsetup.wsf でsetup.wsf で登録したショートカットを削除します。

さらにテキストに自動変換すればテキストエディタで詳しく読めたり検索できたりできるでしょう。またこうやって構造さえ理解できれば、テキストDaisyへの自動変換や、もちろん合成音声も含めたデータも作れるでしょう。タブキーで目次と本文の移動ができる新しいビューアーの作成など可能性はあると思います。でもその必要性があるかどうか分からないので、今回はここまでにしておきます。



posted by takayan at 02:10 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする