Ticket #28226

KGS点字ドライバと日本語点字の変換テーブル

Open Date: 2012-05-01 15:14 Last Update: 2012-11-27 22:29

Reporter:
Owner:
Status:
Closed
MileStone:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

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 の機能を使うように努力しつつ、必要なことは本家にフィードバックしたいと思います。

Ticket History (3/21 Histories)

2012-05-01 15:14 Updated by: nishimoto
  • New Ticket "KGS点字ドライバと日本語点字の変換テーブル" created
2012-05-02 00:38 Updated by: nishimoto
Comment

changeset betterBraille 4206 / miscdep 80 の報告:

  • liblouis で日本語を処理することをいったん諦めて BrailleViewer の点訳処理を採用。
  • 具体的には nvdajp.ctb テーブルが選択されている場合には前処理で \u28** の Unicode 点字文字にあらかじめ変換しておく。
  • nvdajp.ctb テーブルは Unicode 点字文字をドットに変換する処理だけを行う。テーブルの中身は include braille-patterns.cti だけである。
  • コンピューター点字、数学、英語2級などは liblouis テーブルの利用について引き続き研究する。
2012-05-02 23:50 Updated by: nishimoto
Comment

changeset betterBraille 4208 / miscdep 80 の報告:

  • jpdev120502 のマージ
  • キー操作の追加

仮に下記の割り当てを行いました。

  • キーイベントとして割り当て:Alt, Esc, Del, BackSpace, Enter, Ctrl, 矢印(上下左右)
  • Enter キーとして割り当て:ok, set, select
  • 左シフト:F1, F3+左矢印
  • 右シフト:F4, F3+右矢印
  • 上スクロール:F3+上矢印
  • 下スクロール:F3+下矢印
  • NVDAメニュー:Ins
  • すべて読み上げ:Read

まだ 6点キーによる文字入力は未完成です。

外字符が56でなく236になっている、大文字符が6でなく5になっている、といった課題もあります。

2012-05-07 22:09 Updated by: nishimoto
Comment

ブレイルメモの標準キー割り当て(左手小指1はCTRLキーなど)にあわせたほうがよい、というご意見をいただいています。

KGS ドライバはいまのところブレイルメモのキー割り当てを考慮して実装を進めています。

BMFEP との併用を考慮する必要がありますが、方針を検討中です。

外字符と大文字符の誤りは lp:~nishimotz/nvdajp/betterBraille 4210 で修正されました。

2012-05-09 12:54 Updated by: nishimoto
Comment

KGSドライバを開発スナップショット jpdev120509 に導入しました。

2012-05-09 15:45 Updated by: nishimoto
Comment

jpdev120509 の KGS ドライバに対して以下の御報告をいただきました:

  • BM24(USB接続、仮装シリアルドライバをインストール) Windows XP SP3
  • 左右送りができることで、かなり実用的に利用できるようになった
  • メモ帳などでエディットボックスの内容を点字表示しない
  • 点字ディスプレイを複数台接続する場合もある。出力コムポートの選択ができるといい
2012-05-11 11:21 Updated by: nishimoto
Comment

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 は使えないと書かれているので、処理の振り分けが必要かも知れません。

http://www.kgs-jpn.co.jp/dev/directbm.html

2012-05-11 13:58 Updated by: nishimoto
Comment

lp:~nvdajp/nvdajp/jp2012.2 5190 にて以下の修正を行いました。

  • _kgs.py が x86 と x64 の環境に応じて bmStartInProcess と bmStart を使い分けるように修正しました。
  • kgs2 ドライバを KGS点字ディスプレイ(ポート手動選択) という名前にしました。
  • info レベルのログを増やしました。
2012-05-15 23:03 Updated by: nishimoto
Comment

NVDA 2012.2jp-beta1 として上記をリリースしました。KGS ドライバで connect failed になっていた方から、

  • ポート手動選択のKGSドライバを選択するとブレイルメモBM46が動いた

との御報告がありました。ポート選択の影響か bmStartInProcess の影響かはわかりませんが、改善されたようです。

2012-05-16 18:22 Updated by: nishimoto
Comment

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) 以下の記号類が正しく変換されない:

・かっこ類
「-」 かぎかっこ
(-) 丸かっこ

・一部の記号類
- ハイフン
@ アットマーク
. ピリオド

他にも指摘をいただいていますが、確認しながら追加していきます。

2012-05-28 16:32 Updated by: nishimoto
Comment

本チケットで進めている作業は、まず以下のチケットで検討されました。

23945 ピンディスプレイ機能の実装 http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=23945

チケットの重複を減らすために 23945 をクローズするとともに、このチケットから議論を辿れるように、このコメントを追加します。

2012-05-30 13:21 Updated by: nishimoto
Comment

KGSドライバのキー割り当てに関して、BM32のユーザーの方から以下の情報提供をいただいています。

BM46とBM32のキーの違いですが、
最大の部分は右手用と左手用にあったf1からf4が一つになったことです。
よって、スクロールに使わない側の4個にWINやCTRLなどを割り当てることができません。

BM46ではWINやCTRLなどは小指キーとファンクションキー、デフォルトでは2個存在することになりますが、
BM32に重複するキーはないということです。

BM32の小指キーの4個はBM46よりも重要になってくるわけです。
考え方として、スクロールに使わない側のファンクションキーの割り当てはないものとしてキー配置を考えないといけないかもしれません。
2012-05-30 14:47 Updated by: nishimoto
Comment

本チケットおよび28523で指摘された ValueError: string too long の問題を検討しました。

louis.translate() に長さ0の text が送られる場合に起きる現象でした。

(エラーメッセージとは逆でした)

暫定的に「日本語解析の出力が長さ0になった場合は1文字の空白を渡す」ようにしました。

チェンジセット jp2012.2 rev 5210

2012-05-31 20:14 Updated by: nishimoto
Comment

日本語ベータ2としてリリースしました。以下のご報告をいただきました。

  • レイルメモBM46での点字表示が改善されたのか、メモ帳やワードで入力した時に以前はオルトを2回押さないと余計な点字が出て読めませんでしたが、今回は問題なく表示されています。
  • 空行になると、カーソルだけが表示されるようになり、わかりやすくなりました。
  • LibreOffice3.4のライターではなぜか点字カーソルが動きません。

以下はBMFEPでの操作に関するご報告です:

  • デスクトップキーからラップトップキーに変更することで、テンキーがブレイルメモ側の操作で可能になりました。
  • 数字の入力、例えば NVDA+1は、NABCCモードにすることで、数字が数符なしの下がり数字をうつことで表示できますので、NVDA+数字で使えることが分かりました。
  • というわけで、今はほとんどブレイルメモ側のキー操作だけで使えるようになりました。
2012-06-04 23:37 Updated by: nishimoto
Comment

2012.2jp beta2 に対して以下のご報告をいただきました:

(メモ帳、ワードパッド、Microsoft Word 2007)
「1月」と入力する場合以下のように点字表示されます。
変換候補:1|つき|の|げつ
確定後:1
1月から12月まで試しましたが、どれも数字しか表示されません。
音声では「いちがく」「にがつ」としゃべります。

NVDAキーとf12キーを2回押し、今日の日付を表示させます。
すると点字では
「(数符)2012ねん|(数符)6(数符)4にち」と表示されます。
2012-10-21 17:22 Updated by: nishimoto
Comment

以下のコミットで、このチケットで扱われたいくつかの記号点訳の不備について、テストケースの整備とその修正を行ないました。

lp:nvdajp 4415

現在の実験的な実装である tenji.py および Wakach.py をリファクタリングしました。

synthDrivers/jtalk/harness.py はチケット #28958 で計画している liblouis/test/harness の形式を意識した記述になっています。

このファイルでは当面は漢字の読みや分かち書きの処理は扱わず、記号の処理についての改良を進めます。

2012.3jp までこのレベルのテストケースを整備しながら現状の点訳エンジンの暫定的な改良を行ない、このチケットは 2012.3jp で完了させます。

その後この harness.py を liblouis への貢献に利用していく予定です。

記号については日本語点字、英語点字、情報処理点字、日本語数学点字、と複数の可能性があり、本来は文脈を考慮しないと点訳できないのですが、当面は NVDA そのものや Windows の基本機能、主要なソフトウェアの操作に使われる用語、文脈を想定します。

2012-10-21 22:39 Updated by: nishimoto
Comment

以下のコミットについて説明します。

lp:nvdajp 4416

日本語点字の変換と出力に関する以下の変更を行ないました。

  • 数字とカナ文字の間に「つなぎ符 3-6」を挿入するように修正しました。
  • 点字ビューワーが1回出力するごとにテキスト解析を2回行なっていたので、1回で済ませるようにした
  • 点字ビューワーのウィンドウの「常に最前面」という制約をやめて、ウィンドウをすこし小さくした
  • 使用されていない辞書の配列要素を削除して、コードを Python らしいスタイルに書き直した
  • Unicode 点字文字そのものが入力されたときに、そのまま出力するようにしました。ただし harness.py では動作確認されていますが、実際の NVDA の動作では mecab の辞書でも Unicode 点字を解析できる(変換しないで通過させる)ための修正が必要です。
2012-10-24 10:26 Updated by: nishimoto
Comment
(This comment has been deleted)
2012-10-24 10:28 Updated by: nishimoto
Comment

harness.py のテストケースで

Notepad++

の最後の2文字が 2-6 2-6 になっています(そしてそのように変換テーブルを書いています)が、以下のどれかに変更したいと思います。

  • カナで「プラス プラス」
  • 英字で "plus plus"
  • 全体を情報処理点字の括弧(プログラム括弧) 6-236 6-356 で囲んで 346 (ゆ)
  • 日本数学点字記号としてこのまま 2-6 を使う(?)
2012-10-26 09:47 Updated by: nishimoto
Comment

以下のコミットについて:

lp:~nvdajp/nvdajp/jp2012.3 rev 5607

点字ビューワーの使用時にマウスカーソルが点字ビューワー自身を指すと、NVDA がハングアップする現象を回避するために、ctypes のメモリー解放の例外処理を追加しました。

また、分かち書きエンジンのリファクタリング、無駄な文字コード変換を減らす改良をしました。

なお、昨日のコミットで記号 + はカナで「プラス」と出力するようになりました。

2012-11-27 22:29 Updated by: nishimoto
  • Ticket Close date is changed to 2012-11-27 22:29
  • Status Update from Open to Closed
Comment

ブランチ jp2012.3 に対する作業としては、本チケットは完了とします。

次期バージョンにむけて、チケットを新たに作って取り組んでいく予定ですので、ご意見をお聞かせください。

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login