行頭にスペースや文字を挿入したときに点字ディスプレイが更新されない
jpbeta140509 + Windows 7 + KGS BM46 で確認したこと:
本家の実装を疑う必要があるのですが、私がもっている機材で可能な手順としては英語 Windows で本家の英語版スナップショットを実行して、アドオン版の KGS ドライバーを試してみる、という感じでしょうか。。
言語を英語に切り替えた Windows 8.1 で本家 2013.1 を実行して、アドオン版の KGS ドライバーで BM46 に英語出力してみました。
入出力ともに US 8dot computer braille にして、Microsoft IME も併用して "abcあ" と入力したところ、「あ」は正しく点訳されないのですが、ちゃんとメモ帳の行頭のスペースを入れたときに点字表示が更新されることを確認できました。
となるといまのところ本家版の実装に疑いはなく、日本語点訳エンジンに固有の問題、という可能性があります。。
dummyBraille アドオン 0.2
https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.2.nvda-addon
ポートスキャンの機能に加えて、点字ディスプレイドライバに送られるパターンをそのまま Unicode フォントで画面表示する機能を作りました。
これで確認すると、日本語点訳エンジンを使っていても、行頭でスペースを入れたときに点字表示は更新されています。
この確認に間違いがないとしたら、疑うべき場所は KGS ドライバーということになります。
この現象が KGS 以外の点字ディプレイで起きているかどうか確認できる方がいらっしゃると助かります。
本件が 2014.1jp では起きていないことを、いままで明確にしていませんでした。
jpbeta140509 + dummyBraille 0.2 では点字出力テーブルが日本語でも英語8点コンピューターでも、本件を再現できました。
本家 master スナップショットで再現できれば、本家へのチケット登録ということになりそうです。
概要「行頭にスペースを挿入したときに点字ディスプレイが更新されない」から「行頭にスペースや文字を挿入したときに点字ディスプレイが更新されない」に変更します。
以下のご報告をいただきました。
やはり 2014.1 から 2014.2 に向けて本家の実装がなにか変わったことの影響のように思われます。
HIMS社ブレイルセンス・オンハンドで試しました。 挙動は若干違うものの問題があります。 1. 半角英数字を入力し行頭へキャレットを移動します。 spaceを押すとスペースが入り、点字も更新されます。 この状態でタッチカーソルを押しても無反応です。 2.半角"abc"と入力した後漢字変換で"あいう"と入力します。 行頭にキャレットを移動してspaceを押すと点字では"変換停止"と表示されスペースが反映しません。 タッチカーソルはやはり無反応です。
本家の master を過去にさかのぼって動作検証したところ、どうやら下記の作業の影響のように思えます。
3873 setFocusObject incorrectly caches container property as parent
http://community.nvda-project.org/ticket/3873
この変更を元に戻すパッチ:
diff --git a/source/api.py b/source/api.py index c829f3b..168cff9 100644 --- a/source/api.py +++ b/source/api.py @@ -93,7 +93,7 @@ Before overriding the last object, this function calls event_l oseFocus on the ob origAncestors=oldFocusLine[0:index+1] #make sure to cache the last old ancestor as a p arent on the first new ancestor so as not to leave a broken parent cache if ancestors and origAncestors: - ancestors[0].container=origAncestors[-1] + ancestors[0].parent=origAncestors[-1] origAncestors.extend(ancestors) ancestors=origAncestors focusDifferenceLevel=index+1
本当にもどしていいのかどうかもう少し検討が必要です。
暫定的に「日本語版の文字入力拡張」がオンのときにこの本家3873の作業を元に戻す処理をするテスト版を作ってみます。
この本家3873は「最新情報(changes)」で説明されていません。
日本語テスト版 jpbeta140511
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140511.exe
「行頭にスペースや文字を挿入したときに点字ディスプレイが更新されない」 の不具合がこのテスト版で回避できるかどうか、 情報収集させてください。
テスト版 jpbeta140511 で本件の問題は解決したようですが、念のために点字ディスプレイが「点字なし」の場合は本家版の動作になるようにします。
[jpbranch 1d465fe] revert #3873 only when braille display is used 1 file changed, 2 insertions(+), 1 deletion(-)
本件はクローズして、本家へのレポートは別のチケットで扱います。
報告いただいた現象とすこし違う部分もあるようですが、だいたい合っているようなので、こちらで確認した現象をまとめます。
NVDA jpbeta140503 + Windows 8.1 64ビット + KGS BM46 + メモ帳 (BMユーティリティ 6.0 + Windows 互換設定で Windows 7 用のUSBドライバを無理やりインストール)
NVDA の点字モードはフォーカスでもレビューでも以下の状況は同じ。
メモ帳で1行目に abc と書き、左端にキャレットを移動。 点字表示は「外abc」 となり、左端がカーソル点滅する。
スペースキーを押すと、画面は " abc" のように、 a の左にスペースが入る。 キャレットはスペースと a のあいだにある。 点字ディスプレイはスペースが入らず、表示は変化しない。
右矢印キーを押すと画面は " abc" のままでキャレットは a と b のあいだに移動。 点字ディスプレイは「スペース 外字符 abc」になり、b の下がカーソル点滅。
同じことを 2014.1jp で行うと a の左にスペースを入れたときに、 点字ディスプレイは「スペース 外字符 abc」になり、外字符の下がカーソル点滅している。
なぜ jpbeta140503 では、 最初のスペースキーを押したときに、 点字ディスプレイの左端にスペースが入らないか?