前へ

スクリーンリーダー対応アプリ作成のために

PC-Talker試用記

プログラムからのフォーカスの移動


WAVRECでは、再生/録音ボタンを押したら、そのボタンをDisableにして、Pauseボタンにフォーカスを移動する。そうすると、Pauseボタンを読み上げてしまう。
ボタンをDisableにするだけなら(再びEnableにしても)読み上げないが、その場合はフォーカスが行方不明になる。(Tabキーもスペースキーも反応しない。メインウィンドウにフォーカスがある?)
再生時はともかく、録音開始時に読み上げが起こるのはまずいが、その場合は、PC-Talkerを一時的に停止させれば良いようだ。(再生時も、WAVRECは一曲だけだからまだ良いが、複数の曲を連続演奏するツールで曲の切り替わり時に毎回読み上げられると、かなりわずらわしい。)
一方、Pauseボタンを押すと、フォーカスはそのままで、ボタンの文字列を"Pause"から"Cont"に変更する。この場合、読み上げは起こらない。これはこれでまずいかもしれない。ボタンの意味が変わったのにユーザーが気がつかないかもしれない。この解決は簡単で、
SetWindowText(hwndPause, "Cont");
SetFocus(hwndApp);
SetFocus(hwndPause);
のようにすればよい。(順序に注意。
SetFocus(hwndApp);
SetWindowText(hwndPause, "Cont");
SetFocus(hwndPause);
だと何故か変更前の古い文字列を読み上げてしまう)
(PC-Talkerには、フォーカスがどこにあるかわからなくなった時、調べる機能が無いようだ。シフト+Ctrl+Rで再読み上げという機能はあるが、前回の読み上げがフォーカスのあるコントロールであるとは限らないので。まあボタンが二個以上ある時はTabキーを押してみればわかるが。)

キーボード入力の読み上げ

Midi
PC-Talkerは、キーボード入力の補佐のため,入力した文字を読み上げる。
ボタン等の文字入力を受け付けないコントロールにフォーカスがある時は読まない。
それ以外だと、たとえばGenericのようにアプリがキー入力を無視してるケースでも読む。
文字キーを押しっぱなしにして、キーリピート状態になると、たとえばCキーだと「しぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷしー」のようにノイズ混じりで読む。
これが困るのは、たとえば上の図のような、キーボードを鍵盤楽器に見立てて弾くようなアプリ。あとゲームなどでも困る時があるだろう。
「音声ガイドの設定」→「入力キーの文字を読み上げる」のチェックをオフにすれば良いのだが、このような設定はアプリごとに設定できるようにしてほしいところだ。
(他にアプリごとに設定できると嬉しい項目としては、「クリップボードを自動的に読み上げる」の設定がある。通常のコピー&ペーストではリアルタイムで読む必要はないが、クリップボードを読み上げAPIがわりに使ってるゲームソフトなどではリアルタイムに読む必要があるため)
次ページ

コメント、トラックバックはココログ