KGS点字ドライバと日本語点字の変換テーブル
changeset betterBraille 4206 / miscdep 80 の報告:
changeset betterBraille 4208 / miscdep 80 の報告:
仮に下記の割り当てを行いました。
まだ 6点キーによる文字入力は未完成です。
外字符が56でなく236になっている、大文字符が6でなく5になっている、といった課題もあります。
ブレイルメモの標準キー割り当て(左手小指1はCTRLキーなど)にあわせたほうがよい、というご意見をいただいています。
KGS ドライバはいまのところブレイルメモのキー割り当てを考慮して実装を進めています。
BMFEP との併用を考慮する必要がありますが、方針を検討中です。
外字符と大文字符の誤りは lp:~nishimotz/nvdajp/betterBraille 4210 で修正されました。
KGSドライバを開発スナップショット jpdev120509 に導入しました。
jpdev120509 の KGS ドライバに対して以下の御報告をいただきました:
lp:~nvdajp/nvdajp/jp2012.2 5189 にて kgs2 というドライバを追加しました。
KGS点字ドライバ1は jpdev120509 と同等で、ドライバ2は COM ポートを自動選択しません。
内部的には _kgs.py を「ポートの自動選択をするかしないか」で使い分けています。
これにあわせて、本家の点字ドライバと点字設定のGUIを修正して、 ドライバごとにポート選択GUIを有効にするかしないかを選べるようにしました。
これとは別に、Windows XP において DirectBM ドライバは動くけれど KGS ドライバは動かない、というご報告があり、ログをいただいたところ、下記のようになっています。
INFO - brailleDisplayDrivers._kgs.connect (07:54:03): scanning port:COM1 hw:ACPI\PNP0501 name:None bt:None INFO - brailleDisplayDrivers._kgs.connect (07:54:03): scanning port:COM4 hw:USB\Vid_04f9&Pid_01f6&Rev_0100&MI_02 name:None bt:None INFO - brailleDisplayDrivers._kgs.connect (07:54:14): scanning port:COM5 hw:USB\Vid_1148&Pid_0001&Rev_0001 name:None bt:None INFO - brailleDisplayDrivers._kgs.connect (07:54:24): connect failed
現在の実装では HW の先頭が USB であれば接続を試みるようになっており、10秒後に失敗しているので、ポートそのものは見つけているが、bmStart に失敗しているようです。
DirectBM ドライバでは bmStartInProcess を使っているので、こちらに戻すことも検討したほうがよさそうです。
ただしWow64プロセスでは bmStartInProcess は使えないと書かれているので、処理の振り分けが必要かも知れません。
lp:~nvdajp/nvdajp/jp2012.2 5190 にて以下の修正を行いました。
NVDA 2012.2jp-beta1 として上記をリリースしました。KGS ドライバで connect failed になっていた方から、
との御報告がありました。ポート選択の影響か bmStartInProcess の影響かはわかりませんが、改善されたようです。
jpdev120509 について以下の御報告をいただきました。
(1) メモ帳で文字入力のときにエラー音が頻発し、下記のエラーが発生している:
error executing event: gainFocus on <NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject object at 0x02D4B370> with extra args of {} Traceback (most recent call last): File "eventHandler.pyc", line 136, in executeEvent File "eventHandler.pyc", line 84, in __init__ File "eventHandler.pyc", line 91, in next File "NVDAObjects¥behaviors.pyc", line 154, in event_gainFocus File "NVDAObjects¥__init__.pyc", line 779, in event_gainFocus File "braille.pyc", line 1333, in handleGainFocus File "braille.pyc", line 1337, in _doNewObject File "braille.pyc", line 1141, in getFocusRegions File "braille.pyc", line 749, in update File "braille.pyc", line 351, in update File "louis¥__init__.pyc", line 118, in translate File "ctypes¥__init__.pyc", line 62, in create_string_buffer ValueError: string too long
(2) 「スタート|メニューmnu」のように仮名と英字がつながっている。
(3) 日本語オンにしてローマ字入力で漢字変換を行い、確定した直後に、カーソル(7・8)が出ていない。
(4) 「元に戻す(U) Ctrl-Z」が『に|もどす|UCtrlZ』になり、文字が欠落する。
(5) 以下の記号類が正しく変換されない:
・かっこ類 「-」 かぎかっこ (-) 丸かっこ ・一部の記号類 - ハイフン @ アットマーク . ピリオド
他にも指摘をいただいていますが、確認しながら追加していきます。
本チケットで進めている作業は、まず以下のチケットで検討されました。
23945 ピンディスプレイ機能の実装 http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=23945
チケットの重複を減らすために 23945 をクローズするとともに、このチケットから議論を辿れるように、このコメントを追加します。
KGSドライバのキー割り当てに関して、BM32のユーザーの方から以下の情報提供をいただいています。
BM46とBM32のキーの違いですが、 最大の部分は右手用と左手用にあったf1からf4が一つになったことです。 よって、スクロールに使わない側の4個にWINやCTRLなどを割り当てることができません。 BM46ではWINやCTRLなどは小指キーとファンクションキー、デフォルトでは2個存在することになりますが、 BM32に重複するキーはないということです。 BM32の小指キーの4個はBM46よりも重要になってくるわけです。 考え方として、スクロールに使わない側のファンクションキーの割り当てはないものとしてキー配置を考えないといけないかもしれません。
本チケットおよび28523で指摘された ValueError: string too long の問題を検討しました。
louis.translate() に長さ0の text が送られる場合に起きる現象でした。
(エラーメッセージとは逆でした)
暫定的に「日本語解析の出力が長さ0になった場合は1文字の空白を渡す」ようにしました。
チェンジセット jp2012.2 rev 5210
日本語ベータ2としてリリースしました。以下のご報告をいただきました。
以下はBMFEPでの操作に関するご報告です:
2012.2jp beta2 に対して以下のご報告をいただきました:
(メモ帳、ワードパッド、Microsoft Word 2007) 「1月」と入力する場合以下のように点字表示されます。 変換候補:1|つき|の|げつ 確定後:1 1月から12月まで試しましたが、どれも数字しか表示されません。 音声では「いちがく」「にがつ」としゃべります。 NVDAキーとf12キーを2回押し、今日の日付を表示させます。 すると点字では 「(数符)2012ねん|(数符)6(数符)4にち」と表示されます。
以下のコミットで、このチケットで扱われたいくつかの記号点訳の不備について、テストケースの整備とその修正を行ないました。
lp:nvdajp 4415
現在の実験的な実装である tenji.py および Wakach.py をリファクタリングしました。
synthDrivers/jtalk/harness.py はチケット #28958 で計画している liblouis/test/harness の形式を意識した記述になっています。
このファイルでは当面は漢字の読みや分かち書きの処理は扱わず、記号の処理についての改良を進めます。
2012.3jp までこのレベルのテストケースを整備しながら現状の点訳エンジンの暫定的な改良を行ない、このチケットは 2012.3jp で完了させます。
その後この harness.py を liblouis への貢献に利用していく予定です。
記号については日本語点字、英語点字、情報処理点字、日本語数学点字、と複数の可能性があり、本来は文脈を考慮しないと点訳できないのですが、当面は NVDA そのものや Windows の基本機能、主要なソフトウェアの操作に使われる用語、文脈を想定します。
以下のコミットについて説明します。
lp:nvdajp 4416
日本語点字の変換と出力に関する以下の変更を行ないました。
harness.py のテストケースで
Notepad++
の最後の2文字が 2-6 2-6 になっています(そしてそのように変換テーブルを書いています)が、以下のどれかに変更したいと思います。
以下のコミットについて:
lp:~nvdajp/nvdajp/jp2012.3 rev 5607
点字ビューワーの使用時にマウスカーソルが点字ビューワー自身を指すと、NVDA がハングアップする現象を回避するために、ctypes のメモリー解放の例外処理を追加しました。
また、分かち書きエンジンのリファクタリング、無駄な文字コード変換を減らす改良をしました。
なお、昨日のコミットで記号 + はカナで「プラス」と出力するようになりました。
ブランチ jp2012.3 に対する作業としては、本チケットは完了とします。
次期バージョンにむけて、チケットを新たに作って取り組んでいく予定ですので、ご意見をお聞かせください。
KGS ドライバの開発の進捗をこちらのチケットにまとめます(チケット28211の続きです)。
点字設定でドライバを KGS Device に、変換テーブルを Japanese by NVDAJP にして使うことを想定しています。
変換テーブル nvdajp.ctb の更新は miscdep にコミットされています。
開発環境は Windows 7 sp1 (x64) と Braille Memo BM46 で、PC 本体とは USB ケーブルによる接続です。
テストは Windows xp sp3 でも行っています。
betterBraille 4205 と miscdep 79 で、NVDA メニューを開くと "NVDAmnu" と点字ディスプレイに表示されるようになりました。
入力は gestureMap を使っています。まだわずかなイベントしか実装していませんが、タッチカーソル(routeTo)でメモ帳のカーソルが移動することは確認できました。 左送り・右送りも、キーイベントのマッピングを行えば、スクロールは本家の実装で実現できるのではないかと思います。
braille.py では kgs ドライバが動いている場合のみカタカナへの変換と分かち書きを行います。 その後は、言語にもデバイスにも依存しない本家の実装で(liblouis を使って)文字コードからドットへの変換を行っています。 ドットとビットの対応付けを KGS の仕様に変換する処理は _kgs.py で行っています。
カタカナの文字コードを nvdajp.ctb に追加して日本語を出すことが目標です。
可能な限り liblouis の機能を使うように努力しつつ、必要なことは本家にフィードバックしたいと思います。