アプリケーションスリープ(動的に読み上げをON/OFFする)API :チケット #32444 がやっている処理は
デスクトップ用キー NVDA+Shift+S
ラップトップ用キー NVDA+Shift+Z
による制御と同じなので、これらの操作をしていただくと、 アプリケーションスリープは手動で無効にでき、 使いたい機能を有効化できると思います。
ご確認いただければ幸いです。
APIのさらなる追加や、NVDA のスリープモードの仕様変更を行うかどうかは、 どのようなアプリケーションにどのような影響がおよぶかを確認しつつ、 アプリケーション開発者(APIを使う立場のかた)のご意見を伺って、 検討したいと思います。
説明不足でしたが、もし NVDA+Shift+S(Z) で制御をしても、その直後にアプリケーションが NVDA にスリープ有効化命令を送ってしまうと、NVDA はアプリケーションスリープに戻ってしまいます。
本件はアプリケーションからの API の使い方に依存する問題でもあります。
それから、本件に関連して AppModule でNVDAをアプリケーションスリープしている WinAltair のようなソフトウェアへの対応で不具合が生じないようにする必要もありそうです。
(2) IME の読み上げの重複は AppModule でNVDAをアプリケーションスリープしている WinAltair でも発生しているとのこと。
NVDA に IME の読み上げを止めるオプションを作って、設定プロファイル、AppModule、API などから制御可能できれば解決するかも知れません。
(3) 点字ディスプレイのスクロールキーや上下キーの入力操作は「VoicePopper3,SearchAid の"内部ブラウザ"モードでは効いていないが、"y"キーでエディタモードにするとスクロールキーや上下キーは本来の挙動をしている」とのことでした。
IME読み上げに関しては別チケットを作るつもりです。
概要を「アプリケーションスリープAPIに関する要望」から「アプリケーションスリープAPIを使うアプリケーション関する要望」に変更。
(3)の項目に関連して、だと思いますが、以下のコメントをいただきました。
本件についてはまだ何をしたらいいかわかっていません。 ひきつづき情報収集させてください。
技術的なメモ。
スリープモード解除のコマンドだけはスリープモードで有効。
allowInSleepMode という仕組みが使われている:
globalCommands.py:112: script_toggleCurrentAppSleepMode.allowInSleepMode=True inputCore.py:389: if focus.sleepMode is focus.SLEEP_FULL or (focus.sleepMode and not getattr(script, 'allowInSleepMode', False)):
#33600 の作業の結果 2014.3jp からはスリープモードのアプリから NVDA+N でNVDAメニューが開くようになります。
新しい検討課題です:
アプリケーションモジュールで setAppSleepMode を有効化・無効化できるようにしようかと思い始めています。
アプリケーションスリープAPI(2014.1jp における日本語版の独自拡張)に関するご意見をまとめます:
(1) このAPIでアプリケーション画面の読み上げを止めている時に、 NVDA+F12(日時読み上げ)などを読み上げない。
(2) このAPIでアプリケーション画面の読み上げを止めている時に、 アプリケーションに対する入力メソッド(IME)の操作も読み上げないようにして欲しい。
アプリケーションが独自にIME操作をSAPIエンジンに出力している場合に、 日本語入力をSAPIとNVDAが二重に読み上げてしまう。
(3) このAPIでアプリケーション画面の読み上げを止めている時に、 点字ディスプレイのスクロールキーや上下キーの入力操作を有効にして欲しい。