日本語点字の行末のセルでタッチカーソルが効かない
jpdev130305 (アメリカ英語1級, カーソル位置のコンピュータ点字を無効)+ メモ帳 では以下のようになりました。
cursorPos 変換の定義域が outpos の長さよりも 1 大きいのかも知れません。NVDAJP の実装を直して、まず louis と同じ挙動になるようにしたいと思います。
下記のコミットで louis と同じ挙動(5のセルの上を押すとキャレットは5の右に移動)になりました。
lp:nvdajp rev 4548
調べたところ 12345 のような行があるときにNVDAは行末に空白1個を追加してliblouisに送っていました。
NVDA日本語版の点訳エンジンは出力の行末の空白を取り除いていたのですが、入力の行末の空白を保存するように修正しました。
「やっぱり」のような日本語の文字列の場合に、左端のセルを押すと、行頭ではなく2文字目の左にキャレットが移動することがあります。
もうすこし調査をしたいと思います。
開発スナップショット jpdev130306 https://dl.dropbox.com/u/62564469/nvda_snapshot_jpdev130306.exe
行末のタッチカーソルが有効になるようにしました。
また liblouis となるべく同じ outpos を生成するように修正したので、 カーソルやキャレットのマッピング処理が変わった可能性があります。
点訳と同時に生成した inpos から outpos を生成しているので、 あまり outpos をこまかく制御できていない可能性はあります。
jpdev130305 + メモ帳と KGS BMPad でタッチカーソルを押したときの挙動がずれています。
BMPad では
jpdev130305 + メモ帳では
これが日本語点訳エンジンの実装の問題かどうかを確認するために、 liblouis とポジションマッピングの出力を比べたところ、同じでした。
なおこの条件で liblouis のカーソル位置変換(入力:出力)は以下のとおりでした。
もしかすると想定範囲外の入力があるかも知れないので、引き続き確認します。