点字表示待ち時間の上限を長く(無限に)する
「表示待ち時間を0にすると"次のイベントまでは表示し続ける"という仕様変更」のご提案について。
そもそもメッセージ表示が終わるとディスプレイは消えてしまうのではなく、 もともとのフォーカスやナビゲーターオブジェクトの内容表示に戻っているはずです。
日本語版で独自にこの変更をすることは可能ですが、 本家版が同じように変更をしてくれないと、厄介なことになります。
本家チケット 2482 によると、0 のときに出力をしないという仕様は、 本家でユーザーから要望があって 2013.2 からこうなっています。 (それ以前は最低値は0ではなく1でした)
Provide an option to disable braille flash messages
http://community.nvda-project.org/ticket/2482
最初は mick さんは賛成していなかったようですが 「メッセージは音声でだけ確認して点字では確認したくない」 という要望に結果的に同意したようです。
日本のユーザーがこの議論に違和感を感じる理由は、たとえば、 カナ漢字変換の候補選択などがこの仕様の影響を受けるからだと思います。 本家版の東アジア言語拡張はIMEの候補選択は点字ディスプレイをサポートしていません。
NVDA では点字ディスプレイ出力をサポートするために 「揮発性のメッセージを表示する仕組み」と「オブジェクトがレビューされたときに出力する内容を返す」の2種類があり、 前者は簡単に扱えますが、メッセージは時間がたつと消えてしまいます。
今回の点字表示待ち時間が足りないという場面は、本来はメッセージ出力の仕組みではなく、 オブジェクトのレビュー方法をカスタマイズするような実装が必要です。
日本語入力に関しては、現時点では実装が難しいので妥協している部分です。
また、点字出力の制御を行いたいアプリケーション開発者に関しては、 点字出力APIの本来の役割や、アプリケーションモジュール(アドオン)による制御で なにが可能になるかを、情報提供していく必要があると思っています。
待ち時間0の仕様は現状のまま、上限を大きくしたいと思います。
作業ブランチ作成の記録
To ssh://git@bitbucket.org/nvdajp/nvdajp.git * [new branch] ti33644 -> ti33644
この修正作業を検討中ですが、単に settingDialogs.py を変更するだけでなく、 config モジュールの max も変更する必要があります:
messageTimeout = integer(default=4,min=0,max=10000)
結果として、もしこの値を 20 を超える値にしている人が、NVDA 本家版を起動すると、 点字出力の初期化や設定でエラーになる可能性があることを、ドキュメントに書いておく必要がありそうです。
現状で NVDA を点字で使う人が本家版を起動することはほとんどないと思いますが。。
日本語テスト版 jpbeta140430
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140430.exe
点字表示待ち時間の仕様変更に加えて、日本語設定で「UIAの有効化」ができるようになっています。
本家にコミットしている翻訳関係の変更は、まだ本家 master が更新されていないため、反映されていません。
以前書いたコメントの現象に実際に遭遇したので記録しておきます。
他のバージョンを同じ設定ファイルで使い分けるときには点字表示待ち時間は 20 以下にしてください、と注意書きをしたほうがよさそうです。
このとき起きるエラーの記録:
ERROR - unhandled exception (22:37:55): Traceback (most recent call last): File "gui\__init__.pyo", line 237, in onBrailleCommand File "gui\__init__.pyo", line 192, in _popupSettingsDialog File "gui\settingsDialogs.pyo", line 72, in __init__ File "gui\settingsDialogs.pyo", line 1358, in makeSettings File "config\__init__.pyo", line 918, in __getitem__ File "config\__init__.pyo", line 973, in _cacheLeaf File "validate.pyo", line 602, in check File "validate.pyo", line 634, in _check_value File "validate.pyo", line 822, in is_integer VdtValueTooBigError: the value "10000" is too big.
このまま messageTimeout の上限を変更して、nvda.ini ファイルの互換性が壊れてしまうことを許容するか、 タイムアウト時間を長くするオプションを例えば「日本語設定」に追加して messageTimeout の独自仕様変更をやめるか、まだ検討の余地がありそうです。
2014.2jp 以外のバージョンの NVDA が起動しなくなるトラブルは避けたいので、 messageTimeout の仕様を本家版に戻して、 日本語設定「点字メッセージを待ち時間で消去」 (デフォルトはチェック)を追加したバージョンを作ってみました。
日本語テスト版 jpbeta140513
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140513.exe
実際にはチェックなしにすると待ち時間を10000秒にしています。
今までのテスト版で 20 を超える値にした人は、 このバージョンを試す前にいったん20以下の値に戻しておいてください。 「設定のリセット」でもとに戻すこともできますが。。
ブランチの情報:
To ssh://git@bitbucket.org/nvdajp/nvdajp.git * [new branch] ti33644v2 -> ti33644v2
次のバージョンで「点字表示待ち時間 0」の場合も「点字メッセージを待ち時間で消去」チェックなしの設定を優先するように修正。
[ti33644v2 73eb767] make 'Enable Braille message timeout' option effective even if messageTimeout is set to 0. 1 file changed, 3 insertions(+), 1 deletion(-)
ブランチ ti33644v2 を jpbranch にマージしました。
このチケットはクローズします。
設定項目の名前が分かりやすくないというご意見もあるので、説明方法については引き続き検討します。
本家がリリース候補版の作業を始めたので、これ以降の日本語版の修正は jp2014.2 ブランチで行います。
2014.2jp-beta で設定項目名を「点字メッセージの表示終了待ち時間設定を有効にする」に変更します。
本家版での「点字表示待ち時間」に関する議論:
点字表示待ち時間の上限を長く(無限に)してほしいというご要望があります。
以下 nvdajp-team の投稿の引用です:
現状の実装は gui/settingsDialogs.py で上限20秒とされています。